🐍

Swift VIPERとは?

2022/12/19に公開約2,300字

VIPERとは

ViewInteractorPresenterEntityRouterの略語。
iOSアーキテクチャ。
VIPER 公式サイト
VIPER 公式サイト(和訳) Qiita@YKEI_mrn

それぞれの役割

項目 役割
View 画面更新・Presenterへのイベント通知
Intractor ビジネスロジック・Presenterから依頼されたビジネスロジックを行い結果を返す・API通信
Presenter Viewから受け取ったイベントを元に別のクラスに依頼
Entity structでデータ構造の定義
Router 画面遷移

Viewについて

  • 画面更新
  • Presenterへのイベント通知

を行う。

UIViewUIViewControllerViewに該当する。
"見た目"と"ユーザー操作"を受け付け、MVCモデルのVCに当たる。

画面更新

テキストラベルの内容変更や、テーブルビューの再読み込みなど

Presenterへのイベント通知

ライフサイクル(viewDidLoad()viewWillAppear())など)の通知、ボタンのタップやセルのタップの通知

Interactorについて

  • ビジネスロジック
    • データのやり取り(CRUD)
  • エンティティの作成と破棄
  • Presenterから依頼されたビジネスロジックを行い、結果を返す
  • API通信

を行う。

単一の責任を意識する。

Presenterについて

  • Viewから受け取ったイベントをもとに別のクラスに依頼(中継役)
    1. Viewに対して画面更新を依頼
    2. Interactorに対してデータの取得を依頼
    3. Routerに対して画面遷移を依頼

を行う。

Presenterが提供するメソッド名は、viewDidLoad()loginButtonDidPush()といった命名をする。

Entityについて

  • structでデータ構造の定義
    • = データそのもの
    • 基本的にプロパティとイニシャライザのみ定義し、ロジックは持たせない

を行う。

Routerについて

  • 画面遷移

を行う。

それぞれの関係


VIPER 公式サイトから引用

命名

プロトコル名 インスタンス名
View {Name}View {Name}ViewController
Interactor {Name}Usecase {Name}Interactor
Pressenter {Name}Presentation {Name}Presenter
Entity 不要 {Name}
Router {Name}Wireframe {Name}Router

Discussion

ログインするとコメントできます