宇宙図書館 - アカシックレコード / 📄 ページ一覧 / iOSアーキテクチャ

ログイン

iOSアーキテクチャ



iOSアプリ開発では、UI中心 → 責務分離 → 依存分離 → 状態中心という流れでアーキテクチャが進化してきました。
それぞれの特徴を整理すると、設計思想の違いがよく見えてきます。

---

iOSアーキテクチャ比較表


| アーキテクチャ | 基本構成 | 設計思想 | メリット | デメリット | 向いている規模 |
| ---------------------- | -------------------------------------------------------- | ------------------ | -------------------- | ------------------------- | ------- |
| MVC | Model / View / Controller | 画面中心 | Apple公式、シンプル | Controller肥大化(Massive VC) | 小規模 |
| MVVM | Model / View / ViewModel | 責務分離 | UIロジックとビジネスロジックを分離 | ViewModelが肥大化する可能性 | 小〜中規模 |
| MVVM-C | Model / View / ViewModel / Coordinator | 画面遷移分離 | Navigationロジックが整理される | Coordinator設計が必要 | 中〜大規模 |
| VIPER | View / Interactor / Presenter / Entity / Router | 完全責務分離 | テストしやすい、依存が明確 | ファイル数が非常に多い | 大規模 |
| Clean Swift | ViewController / Interactor / Presenter / Router / Model | Clean Architecture | VIPERより整理された責務 | 学習コストあり | 中〜大規模 |
| RIBs | Router / Interactor / Builder | モジュール分離 | 巨大アプリでも破綻しない | 実装が非常に複雑 | 超大規模 |
| TCA | State / Action / Reducer / Environment | 状態中心 | 状態管理が完全に予測可能 | 学習コスト高 | 大規模 |
| Clean Architecture | Entities / UseCases / InterfaceAdapters / Frameworks | 依存関係逆転 | ビジネスロジック完全分離 | 実装量が増える | 大規模 |
| Redux系(SwiftUI) | State / Action / Store | 状態中心 | UI更新が一方向データフロー | 状態管理設計が必要 | 中〜大規模 |

---

アーキテクチャ進化の流れ


| 世代 | 設計思想 | 主なアーキテクチャ | 特徴 |
| ---- | ---- | ------------------ | ----------------- |
| 第1世代 | 画面中心 | MVC | ViewControllerが中心 |
| 第2世代 | 責務分離 | MVVM / VIPER | ロジックとUI分離 |
| 第3世代 | 依存分離 | Clean Architecture | 層構造 |
| 第4世代 | 状態中心 | SwiftUI / TCA | State管理 |

---

SOLID原則(アーキテクチャの基礎)


| 原則 | 名前 | 内容 | アーキテクチャでの例 |
| -- | --------------------- | ------------ | ------------------ |
| S | Single Responsibility | クラスは1つの責務 | Viewは表示のみ |
| O | Open/Closed | 拡張は可能、修正不要 | Protocolで拡張 |
| L | Liskov Substitution | 派生型は置き換え可能 | Protocol準拠 |
| I | Interface Segregation | 小さなInterface | ViewProtocolなど |
| D | Dependency Inversion | 抽象に依存 | Repository pattern |

---

iOS開発での位置関係(概念図)



MVC
 └─ シンプルだがController肥大化

MVVM
 └─ ViewModelでロジック分離

MVVM-C
 └─ Navigation分離

VIPER
 └─ 完全責務分離

Clean Architecture
 └─ 依存関係を内側へ

TCA
 └─ State中心


---

規模別おすすめ


| 規模 | 推奨 |
| ------- | ------------------- |
| 小規模 | MVC / MVVM |
| 中規模 | MVVM-C |
| 大規模 | VIPER / Clean Swift |
| SwiftUI | TCA / MVVM |
| 超大規模 | RIBs |

---

重要な本質


アーキテクチャは最終的に 3つの問題を解くために存在します

1️⃣ 責務分離(Separation of Concerns)
2️⃣ 依存関係管理(Dependency Management)
3️⃣ 状態管理(State Management)

---

🔍 検索結果

…読み込み中…

📘 ACCESS LOG(30件)

✅ HISTORY LOG(1件)

🔍 SEARCH LOG(43件)

博士知愛の「アカシックレコード」〜宇宙図書館からようこそ〜

PR

記事の閲覧数

PR

独自の画像認識モデルの開発システム業務の相談に乗ります
独自の画像認識モデルの開発システム業務の相談に乗ります