iOSアプリをつくったことがないのだが、iOSアプリのアーキテクチャでVIPERというアーキテクチャがあることを知ったので調べてみた
こちらの2つの記事が参考になった qiita.com
iOSの開発現場で生まれたアーキテクチャで、View , Interactor , Presenter , Entity , Router の頭文字を取ってVIPERと呼ぶらしい
ちなみに、iOSアプリを開発するときは、どのiOSプロジェクトアーキテクチャを使用すべきかを考えることが重要みたい
ほとんどのiOSアプリ開発者は、 いわゆるMVC(Model-View-Controller)アーキテクチャを使用しているが、Fat-Controllerになりがちになったり、Viewの責務が画面描画と画面遷移の両方を処理をすることで複雑になったりする
これに対してVIPERは単一責任の原則を実装してクリーンでモジュール化された構造を作成するアプローチで、以下のようなアーキテクチャで実現される
Presenter - VIPERモジュールの主要部分間のブリッジのように機能する - Viewからの入力イベントを受信し、Interactorにデータを要求することでそれらに反応する - 一方、Interactorからのデータ構造を受け取り、このデータにViewロジックを適用してコンテンツを準備し、最後にビューに何を表示するかを指示する
Interactor
- 特定のモジュール内のユースケースのコレクションと考えることができる
- Entityに関連するすべてのビジネスロジックが含まれており、ユーザーインターフェイス(UI)から完全に独立している必要がある
Router
- モジュール間のナビゲーションロジックと、それらがどのように発生するかを担当する
- Presenterから入力コマンドを受け取り、 どの画面にルーティングするかを指示する
- ルーターは、ある画面から別の画面にデータを渡す責任がある
iOSアプリ作る時は参考にしようと思う