iOSDC Japan 2023 Report Day 0
iOSDC Japan 2023 Day 0のレポート記事です。
iOSDC Japan 2023 Day 0のレポート記事です。
今回のiOSDC Japan 2023への参加は、iOSDC Japan 2023のプラチナスポンサーを務める、株式会社CyberAgentのスカラシップ制度によって実現することができました。
ご支援をいただき、誠にありがとうございました。
iOSDC初参加で、雰囲気が分からず、若干不安ではありましたが、会場に入ってすぐになんとなく雰囲気を掴むことができました。
そのくらい、初参加の人でも、Day 0からすぐに楽しめました!
参加したセッション
発表内容や発表資料をもとに、セッションの内容を自分なりにまとめます。
まとめるにあたり、参考にした資料は、各章に記載します。
モーダルの遷移を理解する
このセッションでは、さまざまな種類のモーダルを取り上げ、それぞれを使う上での問題点や、解決方法を紹介していました。
そもそも、僕の認識として、モーダルとは、下からニュッと出てきてオーバーレイするものだと思っていました。
しかし、モーダルにはいくつか種類があることを含め、モーダルの仕様と性質、モーダルを使う際の問題点や、解決方法が説明されていました。
Swift Packageを使った巨大な依存グラフのキャッシュ戦略
このセッションは、LINE株式会社で、LINEの開発者体験を向上させるチームで働いている、giginetさんの発表でした。
まず、LINEアプリの開発における課題を説明していました。
LINEはプロジェクトが大きく、コード行数にして200万行以上、Xcodeプロジェクト数は300以上あるそう。
コードベースが大きくなったことから、Bazelを採用することになりました。
ビルド時間は早くなったが、メンテナンスコストが上がったことなどが、iOSDC Japan 2022 のスポンサーセッションで紹介されていました。
https://youtu.be/6w8JWtvD1yE?si=UbOeEhKbMtTwgSuK
見えてきたBazelの課題から、標準機能である、Swift Packageが最高の解決策であることが導き出されます。
これでめでたしめでたしかと思いきや、そうはいきません。
Swift Package にもデメリットが存在します。
LINEの規模になると、その課題がより顕著に現れるそう。
まず、キャッシュ機構の不足です。
Swift Packageの成果物は、DerivedDataに保存され、揮発しやすいという特性があります。
次に、複数のXcode Projectから利用することの難しさです。
LINEには、数百のXcode Projectが存在するため、Swift Packageのインテグレーションを扱うのは難しいです。
理想は、
- SwiftPMによるSwift Packageの依存解決と取得
- ビルド成果物をキャッシュ、共有、再利用
- Xcodeプロジェクトからの利用
という流れです。
これを実現するのが、Scipioです。
実は、僕自身、普段から、SwiftPMを使った開発をしているのですが、依存のキャッシュが揮発しやすいことに悩まされていました。
そこで、調べている中で、Scipioの存在を知ったので、トークの中で、Scipioの名前を聞いた時には驚きました。
Scipioは、SwiftPMを利用して、XCFrameworkを生成するビルドツールです。
主な機能としては、
- リソースバンドルのサポート
- Static/Dynamic Frameworkの生成
- リモートキャッシュシステム
があります。
XCFrameworkとは、Appleが開発したビルド済みライブラリを配布するための形式で、内部では複数プラットフォームのFrameworkを持っています。
Scipioの動作の流れは、
- SwiftPMでPackage.swiftから依存を解決
- パッケージからXCFrameworkを生成
となります。
Scipioには2つの動作モードがあります。
1つ目は、prepareモードです。
CocoaPodsやCarthageに近い動作をします。
パッケージマニフェスト (PodfileやCartfileと同じような役割) を記述し、Scipioのprepareコマンドを実行して、XCFrameworkが生成されます。
2つ目は、createモードです。
SwiftPMでPackage.swiftから依存を解決して、パッケージからXCFrameworkを生成します。
Scipioの機能として大きいのが、キャッシュシステムです。
1度ビルドしたものは、再度ビルドされません。
成果物をS3のリモートストレージに置くことで、開発者間でキャッシュの再利用ができる、リモートキャッシュ機能も大きな特徴です。
その他、Scipioの内部実装について、細かく説明されていましたが、全てこの記事で振り返ると、膨大な分量になってしまうので割愛します。
非常に興味深い内容でした。
Scipioは、その機能から、始めやすく、やめやすいという特徴があるので、今後、使ってみようと思います。
SwiftUIの進化についていくためにやったこと
SwiftUIと共に歩むStudy Sapuriを例に、SwiftUIでDeprecatedになったもの、どのようにチームで開発を進めているのかなどを説明していました。
僕は普段からSwiftUIを使って構築しているので、身近な話題のため、理解しやすかったです。
チーム内でどのように運用しているのかについての話も、今の僕にとって、かなりタイムリーな話題だったので、非常に興味深い内容でした。
watchOS開発最前線
個人で開発をしているWatchAppを例に、背景、WatchAppの特性、課題についてお話しされていました。
WatchApp開発に興味があるので、興味深い内容でした。
UIKit ベースの Custom UIContentConfiguration API を用いた複雑なカスタムセルの作り方
Go Takagiさんの過去のセッションをYouTubeでみたことがありました。
テンポ感が好きで、非常にわかりやすいので、とても楽しみにしていたセッションの1つです。
普段、UIKitを使わないので、個人的に難しい内容ではありましたが、それでも、丁寧な説明と、いい感じのテンポ感で、かなり理解できました。
SwiftUIを扱う上で、UIKitの知識が必要な場面は多々あるので、学習しなければ...と思いました。
Day 0 まとめ
個人的に、Day 0で最も印象に残ったのはSwift Packageを使った巨大な依存グラフのキャッシュ戦略です。
SwiftPMを本格的に使っていることから、タイムリーな話題である上、40分のセッションでしたが、飽きずに、ずっと聞いていたい発表で、楽しかったです。
Comments ()