基本

Ruby on Railsのディレクトリ構成を理解する

Ruby on Railsでプロジェクトを作成すると、多くのフォルダやファイルが自動生成されます。Railsは「規約より設定」(Convention over Configuration)の原則を採用しており、ファイルを正しいディレクトリに配置することで、設定なしに自動的に機能が有効になります。この記事では、Railsプロジェクトの主要なディレクトリ構成と、各フォルダの役割を詳しく解説します。

基本的な使い方

まず、Railsプロジェクトのディレクトリ構成を確認してみましょう。プロジェクトのルートディレクトリでlsコマンドを実行します。

ターミナル
ls -la myapp/
# 出力例:
# app/
# config/
# db/
# lib/
# log/
# public/
# test/
# tmp/
# vendor/
# Gemfile
# Gemfile.lock
# Rakefile
# config.ru

このように、Railsはプロジェクト作成時にMVC(Model-View-Controller)パターンに基づいた明確なディレクトリ構成を自動的に構築します。それぞれのディレクトリには決まった役割があり、この構造を理解することがRails開発の第一歩です。

appディレクトリ(アプリケーションコア)

最も重要なディレクトリがapp/です。アプリケーションのメインコードはすべてこのディレクトリに配置されます。

ディレクトリ 説明
app/controllers/ コントローラーファイル。リクエストを受け取り、モデルとビューを連携させる
app/models/ モデルファイル。データベースとの連携やビジネスロジックを記述する
app/views/ ビューファイル。HTML、ERBなどの表示テンプレートを配置する
app/assets/ CSS、JavaScript、画像などの静的ファイルを配置する
app/helpers/ ビューで使用する補助メソッド(ヘルパー)を定義する

例えば、usersというリソースを扱う場合、以下のようにファイルが配置されます。

ディレクトリ構成
app/
  controllers/
    users_controller.rb    # ユーザーのリクエスト処理
  models/
    user.rb                # ユーザーデータのモデル
  views/
    users/
      index.html.erb     # ユーザー一覧表示
      show.html.erb      # ユーザー詳細表示
      _form.html.erb     # フォームのパーシャル
  helpers/
    users_helper.rb        # ユーザー関連のヘルパー

configディレクトリ(設定ファイル)

アプリケーションの各種設定ファイルが格納されるディレクトリです。開発中に頻繁に編集するファイルが含まれています。

ファイル 説明
config/routes.rb URLとコントローラーのマッピングを定義するルーティングファイル
config/database.yml データベースの接続設定(開発・テスト・本番環境ごとに設定可能)
config/application.rb アプリケーション全体の設定(タイムゾーン、言語など)

特にroutes.rbは頻繁に編集するファイルです。URLパターンとコントローラーのアクションを紐づけます。

config/routes.rb
Rails.application.routes.draw do
  root "home#index"
  resources :users
end

dbディレクトリ(データベース関連)

データベースのマイグレーションファイルやスキーマ情報が格納されます。

ファイル 説明
db/migrate/ データベーススキーマの変更履歴(マイグレーションファイル)
db/schema.rb 現在のデータベーススキーマの状態を記録するファイル
db/seeds.rb 初期データを投入するためのスクリプト

マイグレーションはデータベースのバージョン管理の仕組みです。以下のコマンドでマイグレーションを実行できます。

ターミナル
rails db:migrate

プロジェクトルートの重要ファイル

プロジェクトのルートディレクトリには、プロジェクト全体の設定に関わる重要なファイルが配置されています。

ファイル 説明
Gemfile プロジェクトで使用するgemの一覧を記述するファイル
Gemfile.lock 実際にインストールされたgemの正確なバージョンを記録するファイル
Rakefile Rakeタスクの定義ファイル
config.ru RackベースのWebサーバー用の設定ファイル

新しいgemを追加する場合は、Gemfileに記述してからbundle installを実行します。

Gemfile
gem 'devise'
gem 'kaminari'
ターミナル
bundle install
ポイント

Railsの「規約より設定」の原則により、ファイルを正しいディレクトリに配置すれば自動的に読み込まれます。例えば、app/models/に置いたファイルは自動的にモデルとして認識されます。命名規則に従うことが重要です。

注意

vendor/ディレクトリにサードパーティのコードを配置する場合、Gemfileで管理できるものはGemfileに記述するのが推奨されます。直接ファイルを配置するのは、gem化されていないライブラリを使う場合に限定しましょう。

まとめ

  • app/ディレクトリにアプリケーションのメインコード(MVC)を配置する
  • config/routes.rbでURLとコントローラーのマッピングを定義する
  • db/ディレクトリでデータベースのマイグレーションやスキーマを管理する
  • Gemfileで依存gemを管理し、bundle installでインストールする
  • Railsの命名規則とディレクトリ構造に従うことで設定不要で機能が動作する