Site icon image技術メモ

[iOS15~のアプリ設計覚書] UIKit・SwiftUI併用 CleanArchitecuture * MVPアプリ

モジュール分割について

  • CleanArchitectureに関わるDependencyDiagram(簡易版)
Image in a image block
  • 要点
    • HogeDependencyモジュールに依存することで、上位レイヤーの具体を知らずに済む
    • Errorは上位レイヤーのErrorの具体を知る必要があるのでErrorモジュールとして分離し依存させる
      • Entityとして扱う考えもあるが、Entityはあらゆるモジュールから依存されるので、ほとんどのPackageにとって不要なError型は別モジュールとして扱うことにした
    • Presentationモジュールの内部は、さらに画面ごとのモジュールとして細分化されている
      • 画面間で具体を知らずに遷移可能にするためにRouter関連のモジュールが必要
        • PresentationはRouterInterface(抽象)とRouterCore(基盤処理)に依存
        • Router(具体)が各画面に依存

モジュールごとの特記事項

  • Layers
    • Infrastructure
      • OpenAPI
    • Application
      • Interactor
        • mock用の関数をDEBUG専用で用意。2秒置いてMockを返すようにしてる
      • Error
        • LocalizedError に準拠
    • Presentation
      • ScreenModuleを構成要素の説明
      • 単一方向のデータフローっぽくするための工夫
        • ViewDataの更新をPresenter経由に限ることで、データフローの単一方向を維持
          Image in a image block
      • CocoaPodsに依存する画面はAppTarget内部に配置
    • Router
      • UIKitを用いた遷移を呼び出す