備忘録
はじめに
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でしかアプリを開発したことがないので他のアーキテクチャも経験したいですね。