Laravelをインストールすると多数のフォルダやファイルが自動生成されます。最初は「どのフォルダに何を書けばいいのか」が分からず戸惑いがちですが、Laravelは MVC(Model-View-Controller)アーキテクチャに基づいた構造を持っており、それぞれのフォルダには明確な役割があります。この記事では、開発でよく使うフォルダとファイルの役割を整理して解説します。
MVC構造とは
MVCとは、アプリケーションの処理を「Model(データ)」「View(画面)」「Controller(制御)」の3つの役割に分離する設計パターンです。Laravelではこのパターンに沿ってディレクトリが構成されているため、コードの見通しがよくなり、チーム開発にも適しています。
リクエストからレスポンスまでの流れは以下のようになります。
1. ユーザーがブラウザからURLにアクセス(リクエスト)
2. routes/web.php でURLに対応するコントローラーを特定
3. app/Http/Controllers のコントローラーがリクエストを処理
4. app/Models のモデルがデータベースとやり取り
5. resources/views のビューがHTMLを生成
6. ユーザーのブラウザにHTMLを返却(レスポンス)
主要なフォルダとファイル
Laravelプロジェクトの中で、開発中に頻繁に触れるフォルダとファイルを紹介します。
.env(環境設定ファイル)
アプリケーションの基本的な設定を行うファイルです。データベース接続情報、アプリケーション名、デバッグモードなどの環境変数を設定します。
APP_NAME=MyApp
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=my_database
DB_USERNAME=root
DB_PASSWORD=secret
.envファイルにはパスワードなどの機密情報が含まれるため、Gitなどのバージョン管理には含めません(.gitignoreに記載済み)。チーム開発では.env.exampleを雛形として共有します。
routes/web.php(ルーティング)
ブラウザからアクセスされたURLとコントローラーを紐付けるファイルです。どのURLにアクセスしたとき、どの処理を実行するかをここで定義します。
use App\Http\Controllers\HomeController;
Route::get('/home', [HomeController::class, 'index']);
app/Http/Controllers(コントローラー)
ユーザーからのリクエストを処理し、レスポンスを返すコントローラークラスを格納するフォルダです。MVCのC(Controller)に該当し、モデルからデータを取得してビューに渡す役割を持ちます。
app/Models(モデル)
データベースのテーブルとPHPオブジェクトをマッピングするファイルを格納するフォルダです。MVCのM(Model)に該当し、Eloquent ORMを使ってデータの取得・保存・更新・削除を行います。
resources/views(ビュー)
画面に表示するテンプレートファイルを格納するフォルダです。MVCのV(View)に該当し、Bladeテンプレートエンジンを使用した.blade.phpファイルを配置します。
database/migrations(マイグレーション)
データベースのテーブル構造をPHPコードで管理するフォルダです。テーブルの作成、変更、削除などの操作履歴がファイルとして残るため、データベースのバージョン管理が可能になります。
# マイグレーション実行
php artisan migrate
app/Providers(サービスプロバイダ)
アプリケーションの起動時に実行される処理を定義するフォルダです。データベース接続、キャッシュ、認証など、アプリ全体に共通するサービスの初期化を行います。
public(公開フォルダ)
CSS、JavaScript、画像などの静的ファイルを格納するフォルダです。Webサーバーのドキュメントルートとして設定される唯一の公開フォルダで、アプリケーションのエントリーポイント(index.php)もここにあります。
その他のフォルダ一覧
上記のほかにも、Laravelプロジェクトには以下のようなフォルダがあります。
laravel-project/
├── app/
│ ├── Http/
│ │ ├── Controllers/ ... コントローラー
│ │ └── Middleware/ ... リクエスト前後の処理
│ ├── Models/ ... モデル(DB連携)
│ └── Providers/ ... サービスプロバイダ
├── config/ ... 設定ファイル
├── database/
│ ├── migrations/ ... テーブル定義
│ └── seeders/ ... 初期データ投入
├── public/ ... 静的ファイル(CSS/JS/画像)
├── resources/
│ ├── views/ ... Bladeテンプレート
│ ├── js/ ... JavaScriptソース
│ └── css/ ... CSSソース
├── routes/
│ ├── web.php ... Webルート定義
│ └── api.php ... APIルート定義
├── storage/ ... ログ・キャッシュ等
├── tests/ ... テストコード
└── .env ... 環境設定
開発初期に頻繁に触れるのはroutes/、app/Http/Controllers/、app/Models/、resources/views/の4つです。まずはこの4つの役割を理解すれば、Laravel開発をスムーズに始められます。
まとめ
- LaravelはMVC(Model-View-Controller)アーキテクチャに基づいた構造を持つ
routes/web.phpでURLとコントローラーを紐付けるapp/Http/Controllers/でリクエスト処理を行うapp/Models/でデータベースとのやり取りを定義するresources/views/でBladeテンプレートを使って画面を作成する.envファイルは機密情報を含むためGit管理しない