先日、RailsのMVCについて説明する機会があったときに、
(緊張も相まって)全く日本語にならず、
「言語化できないって理解してるつもりでも理解できてないってことだな」
と猛反省したので、全くRailsを知らない人にも伝わるように、改めてまとめてみることにしました。
誤っている部分などありましたらご指摘いただけますと幸いです。
MVCとは
Model / View / Controller の頭文字をとってMVCです。
Railsなど、Webアプリケーションを作るときに使うフレームワークの多くが、
このMVCの構造によって成り立っています。
Modelとは
そのアプリケーションのデータベースの窓口のようなものです。
基本的にはデータベースの各テーブルに一つあって、データベースとのやりとりをしてくれます。
Viewとは
Webアプリケーションの見た目の部分です。
Controllerとは
アプリケーションがどう動くかをここで決めています。
(ほとんどが)各Modelに紐づいていて、そのModelにまつわる動きをコントロールしています。
動きをコントロール:Modelにお願いしてデータをとってきたり、そのデータを反映させたviewを返したりしています。
Routerとは
いきなり出てきましたが、こちらもアプリケーションにとって大切な役割を担っています。
クライアントから渡ってきた、URLとHTTPメソッドから、どのControllerのどのActionを取るか、という指示を出している、案内板みたいなものです。
ざっくりまとめると
- クライアントからあったリクエストに応じて、
- Routerが「こっちのControllerのこのActionを動かすんだよー」と指示。
- Routerから指示があったControllerが指示されたActionをする。 (Modelを介してデータをやりとりしたり、Viewにデータを渡したり)
- ControllerがActionした結果を、人に見やすい形でViewで表現する。