#MVCとは
UI(ユーザーインターフェース)を持つソフトウェアのアーキテクチャの一つ。
言い換えると、ソフトウェアをどのような構造にするのかについての考え方のパターンの一つ。
#なんでMVC?
アプリケーションはUIやデータなど様々な処理によって構成されている。
それらが混ざってしまうと保守性が悪くなるため、処理の種類によって分けることで管理する必要がある。
それを実現する手法の一つがMVC。(他にはMVPなどがある)
#モデル・ビュー・コントローラ
モデル:データとデータに関するビジネスロジック(アプリケーション特有の処理)をオブジェクトとして実装したもの。データは多くの場合、データベースで永続化されるが、データベースへの保存や読み込みもモデルが担当している。
ビュー:ブラウザに表示される画面、すなわちHTMLなどのHTTPレスポンスの中身を実際に組み立てる部分。必要に応じてコントローラからモデルのオブジェクトなどを受け取り、画面表示に利用する。
コントローラ:クライアントからのリクエストを受けて、適切なレスポンスを作成するための制御を行う部分。必要に応じてモデルを利用したり、ビューを呼び出したりしてレスポンスを作成する。
#MVCを利用した処理の流れ
①クライアントからのリクエストがWebサーバを介してRailsアプリケーションへ渡される。
②ルーティングがリクエストに含まれているHTTPメソッドとURLから適切なコントローラ(クラス)とアクションを特定し、アクションを呼び出す。
③アクションでは必要に応じてモデルを利用する。(indexアクションなどのデータを利用する場合モデルを利用する)
④③の利用があった場合、モデルがデータベースへの書き込みや読み出しを行う。データベースのテーブルからレコードを読み出すSQLを実行する。
⑤またビューではアクションごとに、対応するビューテンプレートを用いてHTMLなどを作成する。
⑥コントローラがレスポンスを作成し、Webサーバを介してクライアントへと返す。