iOSDC Japan 2024に参加しました!
今年もiOSエンジニアの祭典であるiOSDC Japanに参加しました!思えば2018年から参加していたので、今年で7回目の参加でした!ノベルティTシャツのコレクションも増えてきました!
プロポーザル
今年はレギュラートークとLTそれぞれ1本ずつプロポーザルを応募させていただきましたが、残念ながら採択されませんでした。。。来年こそは良さそうなネタを準備して、スピーカーとして参加できるよう頑張ります!
day0
初日は木曜だったので、仕事の合間にオンラインで1セッションだけ視聴できました。
App Clipの魔法: iOSデザイン開発の新時代
リリースされて数年経つApp Clipですが、あまり活発に活用されていない中で、デザイン開発に利用できないか、という切り口の発表で新鮮でした。App Clipはアプリをインストールしていなくても、コードを読み取ることでアプリ機能の一部をすばやく利用できるので、開発中のアプリを共有してデザイン確認できると便利ですが、App Clipにも審査があったり、Debugビルドではipaを共有する必要があったり、Enterprise Programのサポートがないなど、利用環境に課題点が多そうでした。ただ、手軽にアプリの一部を利用できるのは便利なので、もう少し活用事例が増えてくるといいなと思いました。
day1
2日目からはオフライン参加で、西早稲田キャンパスにも通い慣れた?のか、迷わず会場に着きました。今年も無限コーヒーがデプロイされていて、ドーナッツとともに美味しくいただきました!
オープニング前ということもあって、まだ会場内の人は多くないですが、今年も多くの企業様が出展されていて、コードクイズやアンケートがあって、さらに今年はブースを回ってスタンプをもらってカードのラインが揃うと、無料のたこ焼きやクレープの引換券がもらえました!
メインスレッドをブロックさせないためのSwift Concurrencyクイズ
メインスレッドをブロックしてしまうと、UIの応答性が低下したり、クラッシュしてしまうことに繋がってしまう。メインスレッドを適切に使うために、Swift Concurrencyの規則を正しく理解する必要があるが、Swiftのバージョンによっても仕様が変わってしまうこともあるので、必要に応じてプロポーザルやWWDCセッションを参照すると良さそうでした。
Appleの新しいプライバシー要件対応: ノーコードアプリ プラットフォームの実践事例
スポンサーセッションでプライバシー要件対応の話で、プライバシーマニフェストやSDK署名を丁寧に解説していました。アプリプラットフォームならではの工夫(収集するデータの管理や自動処理)が興味深かったです。私が開発しているアプリでも対応しましたが、この辺の情報集めや対応内容の調査に苦戦した記憶があり、模索しながらやっていました。最近は未対応でも審査通過した話があったり。。。
座談会 「Strict ConcurrencyとSwift 6が開く新時代: 私たちはどう生きるか?」
座談会形式でSwift Concurrencyの基礎をおさらいしつつ、Strict Concurrency対応をどのようにしていけばいいのかについてディスカッションした貴重なセッションでした。データ隔離や隔離境界についてわかりやすい例での説明があったり、隔離境界を越えなければ難しいことはなく、MainActorでやればいい処理を不要にMainActor外に持っていかないことが大事。
Strict Concurrencyにちゃんと対応することで、マルチスレッドやバックグランドスレッドでのデータ競合起因の可能性のあるクラッシュの解消も期待できるとのことで、しっかり対応したいと思いました。
Mergeable Libraryで 高速なアプリ起動を実現しよう!
フレームワークのリンクの基礎として、Dynamic Framework, Static Frameworkがビルド時間や起動速度、アプリサイズにどのように影響するかを紹介しつつ、いいとこ取りのMergable Librayの仕組みや設定方法、ハマりどころを紹介。どのくらい起動速度を改善できるか、実際に試してみたいです。
月間4.5億回再生を超える大規模サービスTVer iOSアプリのリアーキテクチャ戦略
大規模なサービスに成長したTVerアプリで、リファクタリングが破壊活動になりかねないほどの技術的負債を返済すべく、リアーキテクチャでSwiftUIやTCA、SPMなどのモダンな技術を採用しつつ、デザインシステムもしっかり導入し、リリース戦略でもモジュールごとの分割リリースやFeature Flagによる開放率の制御など、とても参考になる発表でした。
iOS/iPadOSの多様な「ViewController」の徹底解説と実装例
今まで当たり前のように使ってきたViewController、実はUIKit以外にもGameKitやAVKitなど、意外な機能を持つViewControllerが多く存在して便利な機能を提供していることがわかりました。iOSの進化とともにいろんな機能を持つViewControllerが登場して、iOS 18でも新しいViewControllerが追加されているとは驚きでした。地道で大変な調査がすごいと思いました。
ルーキーズLT大会
今年のLT大会でも、ペンライトが配布され、スピーカーの好きな色に変えて、LTの残り時間が少なくなるとみんなでペンライトを振って盛り上がっていました!ビールを片手にペンライトを振るのはiOSDCの名物ですね!
なぜデフォルトが青色!? Tint Colorの理由に迫る
誰もが一度は使ったことがあるデフォルトのButtonなどでの青いTint Color、あまり深く考えたことはありませんでしたが、公式の見解が示されない中で、実は色覚特性へのアクセシビリティではないかという考察は面白かったです!
これからの時代の新標準!Apple製テストフレームワーク「SwiftTesting」への移行とトラブルシューティング
WWDC2024で正式発表された新しいテストフレームワークの基礎と移行、トラブルシューティングを紹介。Xcode 15でも使えることは使えるが、個別のテストケースを実行できなかったりと問題があるので、早めにXcode 16に上げて使ってみたいと思いました。
visionOS Developer Meetup
day1終了後に、会場の近くでvisionOS開発者向けのイベントがあり、そちらにも参加してきました!オンライン開催が多かったのですが、今回はオフラインでのコミュニケーションがメインで、開発したコンテンツを見せあったり、開発で苦労したことなどを共有する貴重なイベントでした。
参加者のApple Vision Proの実機所持率が驚異の100%!業務で開発しているか、開発環境(Swift or Unity)はどっちか、おすすめのアプリなどのアンケートもありました。
visionOS開発の最先端の話が聞けたりと刺激の多いイベントで、これからも継続的に参加したいと思います!
day2
3日目も無事ドーナッツチャレンジに成功して、なんと白いポン・デ・いちごみるくもありました!
visionOSで空間演出を実現する方法
昨日のvisionOS Developer Meetupの主催者でもある服部さんのセッション。visionOSでGUCCHIアプリのような動画の進行に連動してImmersive Environmentを切り替えたり、パーティクルで雨や花火を出したり、空間演出を実現する方法を紹介していました。
実際に実機でも見せていただきましたが、空間演出がとても没入感があって、動画の世界の一部を体験できる感じでした!また、Stream Deckと連携してスイッチで空間演出をコントロールすることもできるそうです。
Mastering AsyncSequence - 使う・作る・他のデザインパターン(クロージャ、Delegate など)から移行する
AsyncSequenceとは何か、をSequenceからわかりやすく説明し、クロージャーやDelegateパターンからどのようにAsyncSequenceに置き換えればいいのかを実例を交えて紹介。AsyncSequenceでfor-await-in loopを使うことでTaskを生成しなくて良かったり、MainActorで使ってもすぐにSuspension Pointになるので、メインスレッドをブロックしてしまうこともなさそう。
医療アプリ開発の最前線 - 安全性と生産性の両立への挑戦
安全性が重要視される医療アプリで、生産性・開発効率を高めるために、積極的にSwiftUIやSPMマルチモジュールだけでなく、トランクベース開発やFeature Flag、OpenAPI Generator、Renovateまで導入しているのは驚きでした。MagicPodを活用した自動テストもしっかり運用されていて、リグレッションテストの負担を減らしているのも良さそうでした。
LT大会
輝け!俺のViewController 〜ドキドキ!WWDCで大ピンチ?!航空券購入から帰国まで全部教えます!編
WWDCに行くための壁や失敗談を軽快で面白いトークで会場を盛り上げていました!WWDCに現地参加するなら見返しておきたいなと思いました。
iOS怪談 シングルトンがふたつ…
シングルトンだと思っていたものが、実はインスタンスが2つあった…を怪談口調で語っていてとても面白くてうまいなと思いました!もちろん怪談に終わらず、実は原因はDynamic FrameworkとStatic Frameworkの仕組みにあり、気をつけないと起こりうる事象だなと思いました。
暴走のウホーレン 〜想いってのはvimrcにしないと伝わらないんだぜ〜
NeovimでiOS開発をする話で、ライブコーディングしながらビルドやデバッグ、定義箇所へのジャンプなどを実現していました。ペンライトで使用しているエディタのアンケートを取っていたのも斬新で、オチも面白かったです!
おわりに
今年のiOSDCもう終わりかと思うと寂しいものがありますが、iOSエンジニアの同窓会みたいな雰囲気がとてもよく、一緒に働いたことのある方やSNSでよく見かける方とも話ができて良かったです!来年こそは登壇したいと思います!
ちなみに、去年の参加レポートはこちら