見出し画像

iOSDC 2024見聞録

@dsxsxsxsです。今年もつぶやき感覚で書いていきます。
ほぼ当日中書いた。我流実況+感想。これこそ見聞録かな。


開催前

LTプロポーザル2本出したら全部落ちた。倍率えぐかったな。
今度6本くらい出そう。

今年はちゃんとノベリティー確保。

箱が軽い。今年は食料品少なめです。

Day0

オンライン勢です。
Swiftコードバトルを覗きつつ、メインはトーク視聴でした。
競プロ楽しそう。混ぜたいけど今はスキル不足ですね。

App Clipの魔法: iOSデザイン開発の新時代

log5さんによる講演、手書きの絵が面白すぎる!
レジでアプリ入れてよって焦るあるある話→App Clip作るチャンス

  • App Extensionみたいな立ち位置、Targetは別

  • Preprocessor Macroで分岐作れる。親アプリの実装を流用可能

  • Debug環境では親アプリ必須。Clipだけインストールすることはできない

  • 企業アプリは非サポート

  • WWDC2024にApp Clipのセッションはなかった。そろそろ見捨てられるか?

StoreKit 2によるモダンなアプリ内課金

STOREさんのプロポーザル全部採択!すごい!羨ましすぎる。

  • アップル税鬼杉

  • StoreKit 2には面倒なレシート検証が不要になった。シンプルに

  • 非消耗型やサブスク系には有効性チェックとか入る

  • XCodeの設定いじれば自動テスト可能

  • 使った、削除したProduct IDは二度と使用不可

    • Product ID間違えたとかの事情はサポートにお願いしてれば直してもらえそう

  • アプリレビュー時に新規Productを見たいって言われるので、レビュー用のアカウントや特定実装等を用意しておこう

健康第一!MetricKitで始めるアプリの健康診断

触ってみたかったやつです。

  • 送信頻度少なすぎ、1日一回

    • iOS15, macOS12以降は即時。なんで?

  • 実機必要、XCodeでMetricKit Payloadを飛ばせる

  • AppDelegateからデータを受け取れるので、それを Crashlytics等の外部Loggerへ転送すると良い

    • Crashlyticsでは拾えなかったcrashを補うとか

  • Appleの統計によれば、一番多かったクラッシュはメモリ不足(Jetsam)

続・SharePlayの歴史と進化 iOS18とApple Vision Proにおける新展開

  • Appleさんが考えた「共有体験」。ただの画面共有機能ではない

  • 歴史面白い

  • SharePlayはVision OSの根幹と言っても過言ではない

  • Appleさんによる圧がすごい

  • 空間ペルソナ面白そう

  • 5人囲まれたペルソナの開発検証にはVision Pro5台必要でした

    • ¥300万よ!無理すぎるw

    • 今はXCodeで5台シミュレーション作れるっぽい?

新OSの機能を古いOSに バックポートするための仕組み

なんとかBackportしてやりたいあれこれとか無限にあるんですね。
虹色グラデーション格好良い!ってか動くぞこれ!

  • Dynamic Linkingの仕組み理解

  • 案外Appleさん頑張って色々Backportしてくれた。

  • Swift Macroを活かしてBackportと新APIを包んだ箇所を隠蔽しよう

    • Appleさん結構そうしてる。

  • OSS界隈のBackport資源もある。品質はわからん

  • 自前Backport実装にはnamespaceつけよう

  • day2懇親会で聞いてみた:同じsignatureでbackportする方法はないだそうです。バッティングするので

    • 当然やん。愚問でした。

Today's Update

  • 明日ビンゴやろう

  • ビールの消費量すごい。想定150本が実際300本以上飲まれた。

    • みんなよく飲むね

  • 明日早起きや。

Day1

寝坊した。会場についたらもう10時過ぎ。ドーナツ梨。無念。

Today's Update

スポンサ2倍増えたん?すごい!

アプリバイナリ解析入門 〜実機向けバイナリをARM64シミュレータ向けに変換する方法を例に

.oからheaderを改ざんし、.aを作り直す方法を知れた。面白い!
質問してみた:今までこうやって変な不具合を起こしたことなかったらしい!

開発を加速する共有Swift Package実践

満席、入れんかった。無念。また後で見よう。

スタンプラリー


スタンプラリーコンプした。たこ焼き*8とクレープ*8をただで食える。
流石に食べ切れんので配ってた。

座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」 

レジェンド5人並んで座ってるの迫力ありますね。豪華キャスト!

  • とりあえず脳死で @unchecked Sendableつけて、まずはSwift 6に上げるのを目標にしろ!まじ同感です!

  • 大抵の処理はMainActorでやっていい。本当に重い処理はやめろ!

    • なるほど!今まで頑張って細かくMainActor切り替えるのは蛇足だったんですね。

  • 去年元ネタの映画を視聴したけど、全然わからんかった。

    • Q: 私たちはどう生きるか?

    • me: あなたは何を伝えたかったのか?

    • 俺、文化の無さが絶望的。

Mergeable Libraryで高速なアプリ起動を実現しよう!

DynamicとStatic両方の利点を取れたこういうの欲しかったんですね。うちのプロジェクトにも適応してみよう。
XCodeGenやTwistでプロジェクト生成しているやつはどうするんのやら。
まあなんとかなりそう

休憩

たこ焼き*1とクレープ*2食った。雑談タイム。カロリー爆弾。
血糖値大引け、体調崩しちゃった。
写真とれんかった。

Meet BrowserEngineKit: 独自のブラウザエンジンを体験しよう

ついに自前ブラウザー作れるようになったんですね。これは熱い!
全部App Extension。全部IPCで通信するなんて!

ゼロから始めるiOSセキュリティ ~ OWASP Mobile Top10から学ぶ脆弱性対策

実際にハードコートしたデータをハックしたのを見せてくれてありがたい!

自分なりに要点をまとめてみると:

  • Crendentialsをハードコードしてはならない!

  • 平文で保存してはならない!

  • そもそも端末に保管してはならない!

  • どうしてもならMUST Keychainに入れよう!

これで一生忘れないであろう。

LT

パーソナルボイスは熱い

青い。なるへそ!納得感!

formatterをしっかり活用しましょう

音楽理論かっこ良すぎる。

Today's Update

疲れすぎて先に帰宅した。
その後爆睡。また明日!

Day2

ドーナツ食えた。良かったです。

Today's Update

ドーナツ食ってたので出れんかった。一瞬で終わっただそうです。
LYさんのツッコミ大会にコメントした。いつも発揮しやすいコード助かる。

Swift 6のTyped throwsとSwiftにおけるエラーハンドリングの全体像を学ぶ

@koherさんによるTyped Throwsホイホイ導入してはいけないという話。

Swift Zoominで聞いた。復習。
Zoominで話してなかったことも沢山。

どのようなときにTyped throwsを適用:

  • スコープが限定的

  • 純粋にエラーを伝播する場合

  • 前方互換性がない、または制御可能

後に私が初心者レベルの質問を@koherに聞いてみたらめっちゃ引かれたっぽい🙏
Q: Logical Failureによる障害を防げたい
A: 開発環境とリリース環境のハンドリングを分ければ?
みたいな雰囲気でした😂

いつもSwift Zoominで色々実演をしてくれて、色々勉強させてもらっていたので、今回始めて対面でご挨拶できたのめっちゃくちゃ光栄です。
@koogawaさんへも感謝を伝えたかった。

Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する

以前AsyncSequence触っていたので気になってたトークです。@treastrainさんによる講義ですので情報密度が200%保証付きの予想で、それ以上でした!満腹!

  • await loop構文は外部cancel処理によりbreakされる

  • await loop構文+Taskで購読するより、AsyncSequence版sinkを作ろう

    • cancellableも作ろう

  • Combineとは違って、MainActorを付けることでビルド時に品質担保できちゃうので、紫エラー消滅!

諸々質問した&横で聞いた:

  • テストを組むのは当分やり難い

    • Async Algorithm系のoperatorにはClockをしてしたらなんとかだけど、それでも難しいとこが多い

    • 購読側でどう拾うか問題になる

    • 真のエラーによる中断を作れない

  • CombineやRxの.shared()みたいな同じstreamに複数回購読したいがどうしたら?

    • 自前で作ればワンちゃん行けそう

      • めっちゃ面倒、そもそもやっていいの?変な不具合起きないか

      • 完成させようか

    • AsyncChannelは無理。最後の購読にしか値が流れてこない。

      • どこかで議論はあったよう。

Track Dに入れんかったかな?とりあえず休憩

たこ焼き休憩。ブースウロウロしてた。DeNAさんのcrossword面白かった。

LT

疲れ過ぎで眠気が、もうほぼ記憶にない。

データ型やらしすぎる。怖い。

単にデザインだったの?!ええーーー

定期的に「人生とは?」を探るのはすごいわかる。

人間は飛べる!

盛り上がりました!めっちゃおもろかった。

クロージング

食べ物も飲み物も、消費量が異常!
大盛況!大成功!
IPが足りんかったか!

ID写ってる!

The end. エモッ

懇親会

めっちゃ唐揚げ食って帰った。@soh_satohさんより諸々知見を得られた。有益の話でした!ありがたや!

感想など

盛況!

今年は息苦しさを感じるくらいの人口でした。大盛況でしたね!
集合写真に出なかったのちょっと残念。

体調

ポストする気力がなかった。年かな。

フード

食料もらった。当分お菓子に困らない。
ドーナツパイプラインは助かる!もっとくれ!
無限コーヒー、菓子類、たこ焼き助かる。懇親会の献立美味しかった。
今年も大満足!感謝しかない!

引換券が只の紙切れに。記念に取っておくか

エンゲージメント

偶然にも個人で色々トライしていた事に相関するトークが多かった。普通に助かった。
黙っておくより質問してみるの方が良い!愚問でも!恥ずかしがらずに。どうせNow or Never.

やること

見逃したトーク多かった、アーカイブ見よう
倍率エグすぎ、来年はProposalをメッチャクチャ出そうか。

見直し

みんなのトークを実際視聴して、やはり自分のネタには情報量、ユーモア、ユニーク性が足りんかったな。精進せねば。

最後に

とりあえず来年もこよう。


この記事が気に入ったらサポートをしてみませんか?