Railsディレクトリ構造
プロジェクトフォルダごとの役割と規約
Railsプロジェクトをrails newで生成すると、標準ディレクトリ構造が作成されます。
app/ — アプリケーションコアコード
app/models/— ActiveRecordモデル(データ+ビジネスロジック)app/controllers/— リクエスト処理コントローラapp/views/— ERBテンプレート(HTML)app/helpers/— ビューヘルパーメソッドapp/mailers/— メール送信app/jobs/— バックグラウンドジョブapp/channels/— Action Cable(WebSocket)app/javascript/— JavaScriptファイルapp/assets/— 画像、フォントなどの静的ファイル
config/ — 設定ファイル
routes.rb— URL → Controllerマッピングdatabase.yml— DB接続情報credentials.yml.enc— 暗号化シークレットinitializers/— Rails起動時に実行される設定
db/ — データベース
migrate/— マイグレーションファイル(スキーマ変更履歴)schema.rb— 現在のスキーマスナップショットseeds.rb— 初期データ
spec/test/ — テストコード
lib/ — カスタムライブラリ
public/ — 静的ファイル(エラーページなど)
キーポイント
app/models/ — データモデルとビジネスロジック(User、Post、Commentなど)
app/controllers/ — HTTPリクエスト処理(PostsController、UsersControllerなど)
app/views/ — HTMLテンプレート(ERBファイル、コントローラ名/アクション名.html.erb)
config/routes.rb — URLルーティング規則定義
db/migrate/ — データベーススキーマ変更履歴(タイムスタンプ_説明.rb)
spec/またはtest/ — テストコード(モデルspec、コントローラspecなど)
メリット
- ✓ 役割ごとに明確に分離
- ✓ どこにどのコードがあるか予測可能
- ✓ rails generateが自動的に正しい場所にファイル生成
- ✓ Railsプロジェクト間の構造一貫性
デメリット
- ✗ ディレクトリが多く最初は圧倒的
- ✗ 大規模プロジェクトでapp/models/等が肥大化しうる
- ✗ ネームスペース構造が複雑になるとパスが長くなる