すでに一定量以上のコードで組まれたプログラムを読み込むのがつらい。
本当に1行だけ直せば済むような修正であっても、どこをどう直せば間違いなく正しく動いてくれるのか・・・
プログラミング初心者の自分にとっては、砂漠に落ちた指輪を探すような途方の無さがあります。
そんな弱音を吐いていた所、
そもそもさぁ、「MVC」って知ってる?
虚を突かれたような思いがしました。
また、よくわからないアルファベットの組み合わせ・・・。
頭に来たので、調べた内容をいかにまとめます。
- MVCフレームワークとは
ある程度以上、規模のあるプロジェクトにおいて、
「どんな機能が、どこに格納されているか」
わかりやすくする為の、整理整頓術です。
正確に記述すると、設計思想の一つです。
- MVCの3要素
MVCの基本機能は、以下の3つから成り立ちます。まずは、教科書通りの正確な定義から。
-
Model・・・一般的にビジネスロジックと呼ばれる機能
-
View・・・ユーザーに触れる部分、見た目やレイアウトに関わる機能
-
Controller・・・ModelとViewの仲介役、作業やデータのやりとりの処理を制御する機能
-
レストランでの食事におけるMVC
まず、出だしのModelの説明「ビジネスロジック」からなんのことやらさっぱりわかりません。
以下に様々な記事を読んで、自分なりの解釈をお送りします。
プログラムが実行する処理をレストランで、「料理を作って、お客さんの口に届くまで」の工程で例えてみます。
Model → コックさん
Controller → ホールスタッフ
View → 料理を食べるお客さん
次に具体的な説明で、各要素がどのような働きをしているか詳しく見ていきます。
- 美味しい食事が届くまで
- 料理を注文する(View) →多くの場合、ユーザーが視覚的に触ることのできるViewからプログラムに指示が入って来ます。
- 注文をコックに伝える(Controller) →Viewから入って来た指示をControllerが受けて、最も処理機能が得意なModelに伝えます。
- 注文を受けたコックさんが料理を作る(Model) →処理機能に特化したModelが実際に処理します。この時、データベースを使って処理することも。
- できた料理をお客さんに持っていく(Controller) →処理が終わったデータや結果を、Viewに渡します。
- 出て来た料理を、ナイフで切ったり箸でつまんだりして食べられる形に処理する(View)
→最終的に、ユーザーが見られる(食事を楽しめる)形に処理をして、無事「食べる」ことができました。
- MVCに分けるメリット
この例では実際に、キッチン担当/ホール担当/お客さんにやってもらうセルフの作業 など、作業者が異なります。
このように作業の役割をあらかじめ分けて整理しておくことで- どこを直せばいいのかわからない
- 担当が分かれていないから、同時に複数の問題を直せない
などの問題をあらかじめ防ぐことができます。
MVCフレームワークは歴史が古く、多くのプロジェクトの基礎になっていることが多いです。今日はこのあたりで、失礼します。