はじめに
Railsを当たり前のように使っているのですが、
「ところでMVCって何?」と問われると、意外と説明が難しい…と感じたので
自分なりに言語化するために、今一度まとめてみました。
※ここで扱うMVCは、Railsで使われる所謂「MVC2」と呼ばれるものです。
MVCとは
Model View Controllerの略称で、
プログラム全体を、データの表示部分とデータの処理、データベース管理の3つの要素に分けた、Webアプリケーションのデザインパターンです。
Railsの場合、MVCの処理はざっと、下図(自作…)の流れで行われます。
処理の流れに合わせて、MVCの各機能を順に説明します。
MVCに入る前の… ルーティングとは
クライアントからまずリクエストを受け取ります。
**リクエスト内容から、対応する処理を持つコントローラーへ行先を指定する「対応表」**のような役割を持ちます。
C:Controller(コントローラー)
クライアントからのリクエストに対する処理を制御する部分です。
リクエストに該当するアクションを実行し、揃えた内容をレスポンスとしてクライアントへ返します。
レスポンスに必要な情報を揃えるために
- モデルに伝えて、必要なデータを用意する
- 画面表示に必要なデータをビューに渡す
といった、他機能との「橋渡し」のような役割を持っています。
M:Model(モデル)
**データベースとやり取りをする「窓口」**のような機能を持ちます。
コントローラーからの指示を元にデータベースへアクセスし、
必要なデータを取得や、データの加工(挿入・更新・削除)を行う部分です。
また、データの検証(バリデーション)やテーブル同士の関連付けなど、データベース内に保存されるデータについての細かい設定をする役割も担っています。
V:View(ビュー)
最終的なWebページの見た目を設定する部分です。
コントローラーから渡されたデータをHTMLなどで整形し、レスポンスとして返す画面表示を行います。
また、入力フォームからデータを取得し、コントローラーへ渡すこともあります。
MVCのメリット
下記2点が大きなメリットです。
- 機能毎に分離しており、分業がしやすい
- 他の機能部分の変更による影響を受けにくく、保守性が高まる
終わりに/感想
個人開発でなんとなくMVCを分かっているつもりでしたが、
記事にまとめることで、改めて理解を深めることが出来たと感じています。
初学者で拙い記事ですが、少しでもお役に立てると嬉しく思います。
最後まで読んでいただき、誠にありがとうございました。
開発環境
Ruby 2.6.5
Rails 6.0.3.4
MySQL
Visual Studio Code
(GoogleChrome)
参考記事・書籍
【書籍】Ruby on Rails6 超入門/掌田津耶乃
【公式】Railsドキュメント
【Qiita】MVCという概念をさくっと理解するためのまとめ。
【Qiita】MVCモデルについて
【Qiita】RailsのMVCをまとめてみる
【ピカワカ】MVCフレームワークを1から丁寧に解説!