このリポジトリは、従来のVIPERアーキテクチャにTCA(The Composable Architecture)の状態管理と副作用制御の考え方を取り入れたサンプルです。ビュー層ではStoreを介して状態を操作し、ビジネスロジックはInteractorにまとめ、副作用はEffectとして抽象化します。
一般的なVIPERではDI(依存性注入)の構造が複雑になりがちで、Presenterのロジックも肥大化しやすいという課題があります。本プロジェクトでは以下を目指しています。
Reducerによる一元的な状態管理- 副作用を値として扱うことでテスト容易性を高める
AppDependencyから各Contextへ依存を分配し、モック注入を容易にする
| 層 | 役割 |
|---|---|
| Feature | Presenter 相当。ReducerとしてActionからStateとEffectを生成 |
| Interactor | ドメイン処理を担う純粋関数群。副作用はEffect生成メソッドとして提供 |
| Effect | API呼び出しや画面遷移など非同期タスクを表す値 |
| Context | AppDependencyを基にした各Feature用依存注入構造体 |