1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

MVCについてまとめてみた

Posted at

#概要
MVCの理解がぼんやりと出来てきたような気がするので、
イメージしやすいようにまとめてみました。

#MVCって何?
IBOutletでボタンなどのUIパーツを接続したり、ボタンをタップした際の処理、
API通信などの様々な処理を全てViewControllerに書いてしまうと、ViewControllerに膨大な行数のコードが書かれることになってしまい、コードを追ったり修正したりすることなどが難しくなってしまいます。俗に言うFat ViewControllerです。
このような問題を解決するために、責務の切り分けという作業を行う必要があります。様々なアーキテクチャが存在します。今回はそんなアーキテクチャの中でMVCに焦点を当てて解説してみます。
現在よく使われているMVCパターンはcocoa MVCと呼ばれるものです。
MVCとは、
ModelのM, ViewのV, ControllerのCを合わせてMVCと言っています。

#Modelの役割
Modelの役割としては、
・データ構造の表現
・WebAPIとのやり取り
・ローカルデータベースなどのデータの永続化
・データの振る舞いに関するロジック
が挙げられます。

#Viewの役割
Viewの役割は、
・UIの表示
・Controllerからデータを受け取り、UIに反映させる
・ユーザーの操作を(IBAction,IBOutletなどによって)認知し、
です。つまり、アプリ上でボタンを押す、textFieldをタップして文字を入力するなどの操作を行うと、
Viewに通知されます。
実際にアプリ開発を行う際にはカスタムViewを作成し、Viewとする場合が多いです。

#Controllerの役割
Controllerの役割は、
・Modelからデータを受け取り、Viewに渡してデータを更新
・ユーザーインタラクションをViewから受け取り、適切なアクションを行う
・ライフサイクル処理や画面遷移などの処理を行う
です。cocoa MVCでは Viewcontroller が Controller となります。

#参考になった説明
・ModelとViewは、お互いのことを知らない
・Modelの役割は、viewとControllerがやらないこと全部と考えても良い
・カスタムViewを含むViewは、ユーザー操作をControllerに伝達し、Controllerの要求に応じて
情報を表示するのみの"アホな"存在であるべき

#まとめ
以上の説明を図にすると、以下のようになります。
Image from Gyazo
①ユーザーがView上のUIパーツを操作
②その通知を元にControllerがModelを更新
③ModelがControllerに通知
④Modelから通知をControllerが受け取ったことで、ViewのUIを更新

といった流れです。
自分も学習したばかりなので、不明点や間違っている点があれば教えていただきたいです。
サンプルコード等は後日更新予定です。
最後まで読んでいただき、ありがとうございました!
#参考記事
https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html

1
3
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
1
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?