Railsのプロジェクト作成と構成を徹底解説!初心者でもわかるディレクトリ構造と認証認可の準備
生徒
「Railsでアプリを作るときって、最初にどんな準備をするんですか?」
先生
「Railsでは、まずrails newというコマンドでプロジェクトを作成します。そうすると、アプリ全体のディレクトリ構造や基本設定が自動的に用意されるんです。」
生徒
「ディレクトリって聞いただけで難しそうです…。それに認証とか認可の準備ってどう考えればいいんですか?」
先生
「大丈夫!まずは簡単に構造を見てから、将来的にDeviseやPunditといった認証・認可の仕組みを入れることを意識した構成ルールについても一緒に見ていきましょう。」
1. rails new でプロジェクトを作成しよう
Railsアプリを始める第一歩は、rails newコマンドです。これは「新しい家を建てるための骨組みを自動で作ってくれる道具」のようなものです。このコマンドを実行すると、必要なフォルダやファイルが一気に作成されます。
rails new my_app
この例では「my_app」という名前のアプリが作られます。コマンドを打つだけで、家の設計図や部屋の仕切りが全部できる、と考えるとイメージしやすいです。
2. Railsのディレクトリ構造を理解しよう
rails new で作られるディレクトリ構造は、アプリを整理整頓して管理するための仕組みです。初めて見ると「なんでこんなにフォルダが多いの?」と思うかもしれません。でも心配いりません、それぞれ役割が決まっています。
- app/:アプリのメイン部分。コントローラ、モデル、ビューが入ります。
- config/:設定ファイルを置く場所。データベースやルーティングなどの基本ルールがあります。
- db/:データベース関連。マイグレーション(テーブル定義の変更)もここです。
- Gemfile:外部ライブラリの一覧。アプリの機能を追加するときに使います。
たとえば「app」は家の部屋で、「config」は家のルールブック、「db」は家具を置く倉庫のようなものとイメージすると理解しやすいです。
3. 認証と認可を見越した構成ルール
Railsアプリでは、ユーザー管理(ログインやログアウト)を行う「認証」と、特定の人だけが機能を使えるようにする「認可」がとても重要です。初心者のうちから「後で認証・認可を導入する」という意識を持つと、スムーズに拡張できます。
Railsでよく使われるのが、Devise(認証)とPundit(認可)です。
- Devise:メールアドレスやパスワードでのログイン機能を簡単に追加できるGem。
- Pundit:ユーザーごとに「記事の編集はできるか」「管理画面に入れるか」といったルールを定義できるGem。
これらを見越して、以下のような構成ルールを意識すると良いでしょう。
- app/controllers/ 内に「users」関連のコントローラを分けておく。
- app/policies/ を作成する準備をしておく(Pundit用のルールを置く場所)。
- config/routes.rb では「/users」や「/admin」といったルートを整理しておく。
こうすることで、後からDeviseやPunditを導入したときに、フォルダ構造がごちゃごちゃせず、スッキリと管理できます。
4. 実際のファイル配置イメージ
実際にDeviseやPunditを使う前提での構成を簡単に例示します。
my_app/
├─ app/
│ ├─ controllers/
│ │ ├─ users/
│ │ └─ admin/
│ ├─ models/
│ ├─ views/
│ └─ policies/ (Pundit用のルールファイル)
├─ config/
│ ├─ routes.rb
│ └─ initializers/
└─ db/
このように整理しておくと、rails generate devise User のようなコマンドを実行したときに、ファイルがわかりやすく配置されます。またPunditのポリシーファイルもapp/policies/ にまとまるので、管理が楽になります。
5. 設定ファイルの役割を確認しよう
Railsには「設定ファイル」がいくつもありますが、初心者がまず覚えるべきは以下の2つです。
- config/routes.rb:どのURLにアクセスしたらどのコントローラのアクションが動くかを決める。
- config/initializers/:アプリ起動時に読み込まれる初期設定ファイルを置く場所。
たとえばDeviseを導入すると、ログインやログアウトのルートが自動で追加されます。Punditを導入すると、アプリ起動時にポリシーが読み込まれる設定を書くこともあります。こうした基盤を知っておくことで「Railsがなぜ動くのか」が理解しやすくなります。
まとめ
Railsでのプロジェクト作成やディレクトリ構造、そして将来的な認証と認可を見据えた構成について学ぶことで、初心者でも本格的なWebアプリケーションを設計するための基礎が身につきました。とくにrails newを使ったプロジェクト生成は、必要なフォルダやファイルを自動的に整備してくれるため、アプリ開発の出発点として重要です。家の設計図が最初に整っていれば部屋や家具を配置しやすいように、Railsのディレクトリ構造を理解すると後から認証や認可を追加する際にも迷わず拡張できます。また、将来的にDeviseを使ったログイン機能やPunditを使ったアクセス制御を導入する前提で構成を考えることで、無駄な改修を減らし効率的に開発を進められます。たとえばapp/controllers/users/のようにユーザー管理専用ディレクトリを分けておくことや、app/policies/を準備しておくことは、拡張性の高いアーキテクチャ設計に役立ちます。Rails初心者が陥りがちな「後から整理しようとして混乱する問題」も、最初から構造を意識することで防ぐことができます。さらにconfig/routes.rbに明確なルーティングを記述しておくことで、コントローラの役割が明確になり、URL設計とアクセス制御の両方を見通しやすくなります。
拡張性を意識したディレクトリ例
my_app/
├─ app/
│ ├─ controllers/
│ │ ├─ users/
│ │ └─ admin/
│ ├─ models/
│ ├─ views/
│ └─ policies/
├─ config/
│ ├─ routes.rb
│ └─ initializers/
└─ db/
上記のような階層構造は単なるフォルダ分けではなく、実際にDeviseやPunditを導入した際に役割ごとの配置が明確になり、変更作業が最小限に抑えられます。たとえば管理者画面と一般ユーザー画面をコントローラ階層で分けておけば、同じ「ユーザー」という概念でも権限ごとに画面設計を分離でき、保守性が向上します。またRailsには複数の設定ファイルが存在し、それぞれがアプリケーション全体の動作を左右する重要な位置づけを持ちます。config/initializers/に設定を追加すると、アプリ起動時に自動反映されるため、認証システムや外部API連携などの初期設定をまとめる定位置として活用できます。こうした設定が整理されていると機能を追加した際に「どこを編集すればいいのか」「どこで読み込まれるのか」が明確になり、迷わず作業できます。Railsの構造を理解することは単なる技術習得ではなく、将来的にチーム開発でコードを共有する際にも重要な役割を果たします。
サンプルプログラム:認証ルートの設定
Rails.application.routes.draw do
devise_for :users
namespace :admin do
resources :dashboard
end
resources :articles do
resources :comments
end
root "home#index"
end
ルーティング設定はアプリの導線を作る要となる部分です。ユーザー認証や管理画面を別ルートとして用意することで役割を明確にできます。こうした構造は後からAPI化、管理画面の追加、多言語対応などの拡張も容易になり、初心者が将来的なスケールを見据えた開発を行ううえで大きな指針となります。
生徒
「今回Railsの構造を学んだけど、思ったより整理が大事なんですね。」
先生
「そうなんだ。最初の設計が整っていると、後でログイン機能を追加したり管理画面を作ったりするときに迷わず作業できるよ。」
生徒
「たとえばapp/controllers/users/に分けておくと、役割ごとにファイルを整理できるってことですよね?」
先生
「その通り。役割ごとの整理は保守性にもチーム開発にも効果的なんだ。」
生徒
「じゃあconfigももっと理解しないと…特にルート設定は重要ですね!」
先生
「うん。認証や認可、APIや管理画面などを追加しても整理された状態を保つために、初期段階から構造を意識して設計しよう。」