Ruby on RailsのMVCについて
Ruby on Railsでアプリ開発する上で重要となるMVCの概念について簡単にまとめました。
MVCとは?
MVCは「Model(モデル)」「View(ビュー)」「Controller(コントローラ)」の略です。
MVCのアーキテクチャ
※「routes.rb」上のパスを通してユーザーから受けたリクエストに基づきコントローラーが各セクションへ指示を出す。(ユーザーがアクセスできるページは「config/routes.rb」に記述されている。)
Model(モデル)の役割
モデルではデータの管理がメイン業務になります。
コントローラーから受けた指示に従って必要なデータをデータベース(DB)から取り出してコントローラーへ情報を返します。
また、コントローラーからの命令に基づいて情報をデータベースに入力したり、特定の情報を別の情報に書き換えたりすることもあります。
Controller(コントローラー)の役割
コントローラーは、名前の通り**「司令塔」**的な役割を果たします。
コントローラーからモデルに対してデータの取り扱いについて指示を出したり、ビュー(View)へデザインやUIについての指示を出します。
コントローラーは「MVC」の中において中枢的な役割を果たし、モデルとビューはコントローラーの手足のように機能するというイメージになります。
基本的にコントローラーは、ユーザーから受けたリクエストに基づいて各セクションへ命令を下します。
ただ、ユーザーへの情報の出力・提示に関しては、直接的にはビューが担当しています。
ですので、見かけ上ではビューがユーザーとの直接窓口であるかのようなニュアンスで解説しているサイトも散見されるようです。
ですが厳密には、MVCの概念上においては、ユーザーからのリクエストをコントローラーが受け取り、その後、コントローラーがモデルやビューに対して必要な指令を出している、と捉えるのが一般的といわれています。
View(ビュー)の役割について
ビューには、デザインやユーザーインターフェースを司る役割があります。
コントローラーから渡されたデータを利用してWebサイト上でどのように表現するのかビューで定義しています。
アプリやWebサイトをユーザーが操作したときに、操作した内容に応じて入力フォームを正しく表示させたり、必要な機能を展開させるといった役割もビューが担っています。
MVCを常に意識する必要性
アプリ・Web制作ではたくさんのファイルを扱ったり細かい編集作業を大量に実行することになります。
コマンドでアプリ実装を開始すると、「app」というディレクトリの直下に大量のフォルダとファイルが展開されます。
「controllers」「models」「views」以外の他にも、アプリを構成するために必要なフォルダ・ファイルがたくさん展開されているのが分かります。
アプリの開発規模が大きければ大きいほど、扱うフォルダやファイル数も増えていきます。
ですので、規模の大きいアプリを開発をする場合、今どの役割を持ったファイルを編集しているのか注意する(MVCの構造を意識する)必要があります。