Convention over Configuration
Railsの核心哲学 — 規約が設定より優先
Convention over Configuration(CoC)はRailsの最も重要な哲学です。開発者がいちいち設定する代わりに、Railsが定めた規約に従えば全てが自動的に接続されます。
核心規約:
モデル名
Post→ テーブル名posts(複数形、snake_case)コントローラ
PostsController→ ファイルapp/controllers/posts_controller.rbビュー
PostsController#show→app/views/posts/show.html.erb外部キー
user_id→belongs_to :user主キーは常に
id、自動生成フィールドはcreated_at、updated_at
Java/Springのようなフレームワークでは XMLやアノテーションで一つ一つマッピングが必要ですが、Railsでは名前を合わせるだけです。おかげで新プロジェクト開始時に設定に時間を使わず、すぐに機能開発に集中できます。
ただし、規約を知らないと「魔法のように」感じてデバッグが難しくなることがあるため、規約を正確に理解することが重要です。
キーポイント
rails generate model Post title:string content:text → Postモデル + postsマイグレーション自動生成
rails generate controller Posts index show → PostsController + ビューファイル自動生成
resources :posts 1行で7つのRESTfulルート自動生成
Post.find(1) → SELECT * FROM posts WHERE id = 1 自動変換(テーブル名規約)
render省略時action名と同じビューファイルを自動レンダリング(show → show.html.erb)
規約から外れたい時のみ明示的設定(self.table_name = "my_posts")
メリット
- ✓ 初期設定時間を大幅に節約
- ✓ コード一貫性を自動保証
- ✓ ファイル位置を見れば役割がわかる
- ✓ エコシステム全体が同じ規約を使用
デメリット
- ✗ 規約を知らないと「魔法」のように感じる
- ✗ 規約から外れるとかえって複雑になる
- ✗ 他フレームワーク経験者には最初混乱
- ✗ 暗黙的動作がデバッグを困難にしうる