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パターンとコントローラーのアクションを紐づけます。
Rails.application.routes.draw do
root "home#index"
resources :users
enddbディレクトリ(データベース関連)
データベースのマイグレーションファイルやスキーマ情報が格納されます。
| ファイル | 説明 |
|---|---|
| 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を実行します。
gem 'devise'
gem 'kaminari'bundle installRailsの「規約より設定」の原則により、ファイルを正しいディレクトリに配置すれば自動的に読み込まれます。例えば、app/models/に置いたファイルは自動的にモデルとして認識されます。命名規則に従うことが重要です。
vendor/ディレクトリにサードパーティのコードを配置する場合、Gemfileで管理できるものはGemfileに記述するのが推奨されます。直接ファイルを配置するのは、gem化されていないライブラリを使う場合に限定しましょう。
まとめ
app/ディレクトリにアプリケーションのメインコード(MVC)を配置するconfig/routes.rbでURLとコントローラーのマッピングを定義するdb/ディレクトリでデータベースのマイグレーションやスキーマを管理するGemfileで依存gemを管理し、bundle installでインストールする- Railsの命名規則とディレクトリ構造に従うことで設定不要で機能が動作する