こんにちは、今年に入ってRubyonRailsを使って簡単なアプリケーションを作っているmacco(まっこ)です。
今回は、RubyonRails(以下、Rails)を始めたばかりで「MVCってなに?」「いまいち分からない」といった人に向けて解説します。
これを読めば、MVCについて大まかな概要が掴めると思います。
MVCとは?
MVCとは、Webシステムのアーキテクチャのひとつです。
普段聞きなれない単語でちょっと分かりにくいと思いますが、この場合アーキテクチャとは「ソフトウェアの設計思想、仕組み」という意味になります。
Mode(モデル)、View(ビュー)、Controller(コントローラー)という3つの役割で構成されています。
Webシステムの機能を3つに切り分けることで、以下のメリットがあります。
- 複数のエンジニアで同時に作業しやすくなる
- プログラムの修正をしても他機能への影響が少ない
MVCのそれぞれの役割とは?
それでは各役割について見ていきましょう。
Model(モデル)
データベースにあるデータとやりとりする
Model(モデル)は、Railsからデータベースを操作する役割があります。
例えば、データベースに「顧客データ」や「購買データ」などが入っているとします。
Railsからデータベースにある「顧客データ」とか「購買データ」が欲しい場合、Model(モデル)を通じてデータベースにアクセスします。
そして、データを取得したり、または登録したり、更新、削除を行うことができます。
Model(モデル)は、データ担当といった感じです。
View(ビュー)
見た目の画面をつくる
View(ビュー)は、ユーザーが目にする画面をつくる役割があります。
もう少し詳細にいうと、HTMLという文章構造を持った言語を、View(ビュー)が作成します。
このHTMLという言語をユーザーが実際に使っているブラウザが解釈すると、画面が表示されます。
View(ビュー)はユーザーに見せる画面担当といった感じです。
Controller(コントローラー)
Model(モデル)とView(ビュー)の間に立って、指示を出したり、結果を受け取る
Controller(コントローラー)は、Railsを中心で支えるような存在です。
ここはかなり重要なポイントになりますが、Controller(コントローラー)の前に、routes.rb(ルーティング)というのがあります。
routes.rb(ルーティング)は、ユーザーからリクエストされたURLを見て、どのController(コントローラー)に割り当てるかを判断します。
「複数のルート=routes.rb」と覚えておくと忘れにくくなると思います。
Controller(コントローラー)は、Model(モデル)やView(ビュー)に指示をだしたり、結果を受け取ったりする司令塔といった感じです。
MVCの流れを解説します
では「実際にユーザーのリクエストから、ブラウザに画面が表示されるまでの流れ」を以下にまとめてみました。
各番号と処理の内容が対応しています。
※今回は単純にするため、データを取得するという流れにしています。
- UserのブラウザからRailsにリクエストして、Railsのroutes.rb(ルーティング)がそのリクエストを受け取ります。
- routes.rb(ルーティング)が、UserからのリクエストURLを判別して、適切なController(コントローラー)に割り当てます。
- Controller(コントローラー)は、Model(モデル)に指示をだします。
- Model(モデル)は、DB(データベース)にアクセスします。
- Model(モデル)は、DB(データベース)からデータを取得します。
- Model(モデル)は、Controller(コントローラー)にデータを渡します。
- Controller(コントローラー)は、Model(モデル)から受け取ったデータを、VIew(ビュー)に渡します。
- Controller(コントローラー)は、VIew(ビュー)で作成したHTMLを受け取ります。
- 最後にController(コントローラー)は、UserのブラウザにHTMLを返して、ブラウザがそのHTMLを解釈し、画面を表示します。
もう一度復習します。
- Model(モデル)はデータを操作する
- View(ビュー)は画面を表示するためのHTMLを作成する
- Controller(コントローラー)はModel(モデル)、View(ビュー)に指示を出したり、結果をもらう司令塔
以上でRailsから学ぶMVC入門の説明を終わります。
最後に
いかがでしたでしょうか。
Railsは「あまりプログラミングが詳しくなくても、目に見える簡単なWebアプリをつくることができる」ところに集約されるんじゃないかなという気がしています。
「何か動くものが出来ると楽しい」という気持ちを体験できる。
難しいことをするのは後のお話です。
まずは「実際にさわってみる、挑戦してみる」ことが、プログラミグの第一歩になります。
私のなかでRailsは、プログラミング初心者が動くものを作るという目的を果たすための近道のような存在だと、そう思っています。
最後までお付き合いいただきありがとうございました。
それでは。