📁

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/ — 静的ファイル(エラーページなど)

キーポイント

1

app/models/ — データモデルとビジネスロジック(User、Post、Commentなど)

2

app/controllers/ — HTTPリクエスト処理(PostsController、UsersControllerなど)

3

app/views/ — HTMLテンプレート(ERBファイル、コントローラ名/アクション名.html.erb)

4

config/routes.rb — URLルーティング規則定義

5

db/migrate/ — データベーススキーマ変更履歴(タイムスタンプ_説明.rb)

6

spec/またはtest/ — テストコード(モデルspec、コントローラspecなど)

メリット

  • 役割ごとに明確に分離
  • どこにどのコードがあるか予測可能
  • rails generateが自動的に正しい場所にファイル生成
  • Railsプロジェクト間の構造一貫性

デメリット

  • ディレクトリが多く最初は圧倒的
  • 大規模プロジェクトでapp/models/等が肥大化しうる
  • ネームスペース構造が複雑になるとパスが長くなる

ユースケース

新しいRailsプロジェクト開始 チームプロジェクトでファイル位置決定 コードレビュー時ファイル役割把握 CI/CDパイプライン設定