🐍
Swift VIPERとは?
VIPERとは
View
・Interactor
・Presenter
・Entity
・Router
の略語。
iOSアーキテクチャ。
VIPER 公式サイト
VIPER 公式サイト(和訳) Qiita@YKEI_mrn
それぞれの役割
項目 | 役割 |
---|---|
View |
画面更新・Presenter へのイベント通知 |
Intractor |
ビジネスロジック・Presenter から依頼されたビジネスロジックを行い結果を返す・API通信 |
Presenter |
View から受け取ったイベントを元に別のクラスに依頼 |
Entity |
struct でデータ構造の定義 |
Router |
画面遷移 |
View
について
- 画面更新
-
Presenter
へのイベント通知
を行う。
UIView
、UIViewController
がView
に該当する。
"見た目"と"ユーザー操作"を受け付け、MVCモデルのVCに当たる。
画面更新
テキストラベルの内容変更や、テーブルビューの再読み込みなど
Presenter
へのイベント通知
ライフサイクル(viewDidLoad()
やviewWillAppear())
など)の通知、ボタンのタップやセルのタップの通知
Interactor
について
- ビジネスロジック
- データのやり取り(CRUD)
- エンティティの作成と破棄
-
Presenter
から依頼されたビジネスロジックを行い、結果を返す - API通信
を行う。
単一の責任を意識する。
Presenter
について
-
View
から受け取ったイベントをもとに別のクラスに依頼(中継役)-
View
に対して画面更新を依頼 -
Interactor
に対してデータの取得を依頼 -
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