SwiftUI+SPMマルチモジュールを採用したプロジェクトの疎結合な画面遷移を考える by da-hama

iOSDC Japan 2024
ルーキーズLT(5分)

SwiftUI+SPMマルチモジュールを採用したプロジェクトの疎結合な画面遷移を考える

ios_hamada da-hama ios_hamada
9

みなさん、「SwiftUIを用いたプロジェクトのビルド時間を短縮したい」と考えたことはありませんか?

iOSDC2021以降、SPMマルチモジュール構成をプロジェクトへ採用するサービスが多く見られます。
マルチモジュール構成では、小さくモジュール分割を行い依存を疎結合に保つことでビルド時間の短縮が期待できますが 画面遷移時にFeatureモジュール同士で呼び出しを行い、依存関係が密結合になっている場合、ビルド時間の短縮が効果的ではありません。

本LTでは、Protocolに各画面の生成処理を記述し、画面遷移先を抽象化してDIする手法を紹介します。
これによって、SPMマルチモジュールにおいて、疎結合な画面遷移が可能となり、効果的にビルド時間の短縮が可能となります。
また、複数のDI手法や画面遷移実装を比較し各手法のメリットデメリットを紹介していきます。

以下の順番に従い、各実装の問題点と解決策を交えながら説明します

  • SPMマルチモジュールの導入
  • NavigationStack を用いた MainApp での"単純な"画面遷移
  • RouterProctocol を定義し画面生成処理を抽象化
  • DIを用いた疎結合な画面遷移を可能に
    • @Environment を用いた一般的なDI
    • swift-dependencies を用いたリッチなDI