MVCパターン
Model-View-Controller — Railsのコアアーキテクチャ
MVC(Model-View-Controller)はソフトウェア設計パターンで、Railsの基盤です。
Model: データとビジネスロジックを担当します。データベーステーブルと1:1でマッピングされ、ActiveRecordを通じてSQLなしでデータを操作できます。バリデーション、関連設定、コールバック等もModelで処理します。
View: ユーザーに表示される画面を担当します。ERB(Embedded Ruby)テンプレートでHTML内にRubyコードを挿入します。レイアウト、パーシャル(partial)で再利用可能なUI部品を作ります。
Controller: HTTPリクエストを受けて適切なModelを呼び出し、結果をViewに渡す仲介者です。認証、権限確認、パラメータ処理等を担当します。
Railsでのリクエストフロー: ブラウザ → ルーター → Controller → Model(DB照会) → Controller(データ渡し) → View(HTML生成) → ブラウザ
構造ダイアグラム
GET /posts/1
config/routes.rb
キーポイント
ユーザーがブラウザからURLリクエスト(例: GET /posts/1)
config/routes.rbでURLをController#Actionにマッピング(posts#show)
PostsController#showが実行 — @post = Post.find(params[:id])
Model(Post)がActiveRecordを通じてDBからデータ取得
Controllerが@postインスタンス変数をViewに渡す
View(show.html.erb)が@postデータをHTMLにレンダリングしてブラウザに返す
メリット
- ✓ 関心の分離 — コード構造が明確
- ✓ チーム協業が容易(デザイナー=View、開発者=Model)
- ✓ Railsの規約で自動マッピング
- ✓ コードの再利用性が高い
デメリット
- ✗ 簡単なアプリには過度な構造
- ✗ Controllerが肥大化しやすい(Fat Controller)
- ✗ Modelが責任を持ちすぎる(God Model)
- ✗ Service Object等の追加パターンが必要な場合がある