備忘録
はじめに
MVCアーキテクチャで開発をしているが、ふわっとした理解なのでまとめて理解を深めるのが目的。
そもそも、アーキテクチャって?
効率よく開発・運用していくための設計方法の事を指します。
この設計方法を意識せず、開発していくといくつもの問題が生じてしまいます。
・テストがしにくい
・改修や機能の追加が困難
・チーム開発時の役割分担がしにくい
etc...
など書いていくときりがないです。
FatViewController
アーキテクチャを採用していないアプリの最たる問題例として「FatViewController」が挙げられます。
アプリも複雑になっていくと、その分やることが増えてきますよね。
API通信、アラート表示、ログイン機能、エラーハンドリング、画面遷移などなど...。
この処理のコードを全てViewControllerに書き込んだとしましょう。
アプリ自体は動きますが、中身はグチャグチャになることが予想されます。
これをViewControllerが肥大化したということで「FatViewController」と呼ばれています。
「Fat」は日本語訳すると「太っている」ですが
ここでの意味は抱える責務が多くなっている状態を表します。
節子、それViewControllerやない…、FatViewControllerや…。
MVCアーキテクチャ
以上の問題を避けるために考えられた設計方法の一つが、MVCアーキテクチャです。
Model・View・Controllerの頭文字を取ってMVCと呼ばれています。
ではそれぞれの役割について触れていきましょう。
・Model(class、structなど)
データの保持、ビジネスロジックを担当している。
※ビジネスロジックというのは、「そのシステムにおける、システム固有の処理を行う部分」を指します。飲食店を検索するアプリなら飲食店情報の取得などの部分。
・View(UIView、xib、storyboardなど)
アプリ画面の表示などUI関係を担当している。
・Controller(UIViewController)
ユーザーの入力に基づいて,ModelとViewの制御を担当している。
MVCの流れ

出典:今更MVCとかでiOSアプリつくってみた(Swift)・改
例えば、
・ユーザーからの入力アクションをViewがControllerへと通知し、Modelのデータを更新したり。
・Modelからのデータ更新の通知を受けて、ControllerがViewの表示を更新したり。
など。
この流れの説明として凄く分かりやすい記事があったので載せておきます。
MVCモデルについての私の解釈
おわりに
結局、MVCにしても他のアーキテクチャにしても
「何かしらのルールで1ファイル(1クラス)の責務を分けて、他に影響がないように小さくする分け方」
だということです。
私はまだMVCでしかアプリを開発したことがないので他のアーキテクチャも経験したいですね。