UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【Architecture】iOS の VIPERアーキテクチャ

iOSアプリをつくったことがないのだが、iOSアプリのアーキテクチャでVIPERというアーキテクチャがあることを知ったので調べてみた

こちらの2つの記事が参考になった   qiita.com

cheesecakelabs.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

Router

  • モジュール間のナビゲーションロジックと、それらがどのように発生するかを担当する
  • Presenterから入力コマンドを受け取り、 どの画面にルーティングするかを指示する
  • ルーターは、ある画面から別の画面にデータを渡す責任がある

iOSアプリ作る時は参考にしようと思う

他参考

iOSでClean ArcitectureとVIPIER - Qiita