LoginSignup
5
2

More than 3 years have passed since last update.

【Swift】MVVMとは??でモヤモヤしてる人向けの図解付き解説

Last updated at Posted at 2021-03-05

前提

ある程度調べていてアーキテクチャという言葉の意味くらいならわかる
RxSwiftを自分なりに調べていて読めはする

MVVM

まず、アプリの使われ方、あり方について考えてみる。
アプリを使うのはユーザーで、ユーザーはアプリを開き、
つまり画面を開き、操作を行う。
この操作に対して、ViewModelやModelのロジックが働き、
Viewはそれらのロジックの結果を画面に反映する。

このように、何かのイベントに対して何かのロジックが働き、結果を反映する。
その流れの中で、表示非表示や変形、バリデーション、イベントに対するロジックなど
役割ごとに分け、責務の切り分けをするのがアーキテクチャであり、MVVMである。

図解

スクリーンショット 2021-03-05 22.23.53.png

View(UIロジック)

言うまでもなく、表示を担当する。
この部分は、ユーザーインターフェース層とも言われ、
ユーザーの目に触れる部分を担当している。
ViewControllerとViewがそれである。

Storyboardと連携し、UIパーツの表示。(Viewの責務)
ユーザーからのタップ、入力イベントなどの操作をViewModelに送信し、
その結果がViewModelから流れてきたらUIコンポーネントや表示ロジックに反映させる。

ViewModel(プレゼンテーションロジック)

View(ViewController)から送られてくるイベントや値の加工をするところ
入力イベントであればテキストを受け取り、文字数制限などの
モデルに書かれたバリデーションロジック関数を呼び出して
その結果をView(ViewController)に返す。

Model(ビジネスロジック)

View(ViewController)、ViewModelが担当する以外の役割を担当する。
バリデーションロジックやAPIに関するEntity、Repository、
シングルトンなどのManagerなど、細かい責務がModelに切り出される。

おわりに

実務で新規開発をして、ふわっとMVVMがわかったので備忘録として。
間違っている点があればコメントしていただけると幸いです。

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2