Laravelディレクトリ構造と役割まとめ【初心者〜実務者向け】

Laravelディレクトリ構造と役割まとめ【初心者〜実務者向け】 laravel

Laravelディレクトリ構造と役割まとめ【保存版】

Laravelプロジェクト直下のフォルダや設定ファイルの「役割」を一気に把握できるように整理しました。新人さんのオンボーディングや、プロジェクト引き継ぎの標準資料としても使えます。

全体像(ツリー)

.
├─ app/                 … アプリ本体(ドメインロジック)
│  ├─ Console/          … artisanコマンド
│  ├─ Exceptions/       … 例外ハンドリング
│  ├─ Http/
│  │   ├─ Controllers/  … コントローラ
│  │   ├─ Middleware/   … ミドルウェア
│  │   └─ Requests/     … フォームリクエスト(バリデーション)
│  ├─ Models/           … Eloquentモデル
│  ├─ Policies/         … 認可ポリシー
│  ├─ Providers/        … サービスプロバイダ(ブート/バインド)
│  ├─ Jobs/             … キュージョブ
│  ├─ Events/           … ドメインイベント
│  ├─ Listeners/        … イベントリスナ
│  ├─ Mail/             … Mailable(メール組み立て)
│  ├─ Notifications/    … 通知(メール/Slack 等)
│  └─ Rules/            … カスタムバリデーションルール
│
├─ bootstrap/           … フレームワーク起動処理(cache/含む)
├─ config/              … 環境非依存の設定一式
├─ database/
│  ├─ factories/        … テストデータ生成
│  ├─ migrations/       … スキーマ管理
│  └─ seeders/          … 初期データ投入
├─ public/              … ドキュメントルート(エントリ: index.php)
├─ resources/
│  ├─ views/            … Bladeテンプレート
│  ├─ lang/             … 多言語リソース
│  └─ (assets等)        … ビルド前アセット(構成により)
├─ routes/
│  ├─ web.php           … Webルート(セッション/CSRFあり)
│  ├─ api.php           … APIルート(ステートレス)
│  ├─ console.php       … artisanスケジューラ定義
│  └─ channels.php      … ブロードキャストチャンネル
├─ storage/
│  ├─ app/              … アプリ保存用
│  ├─ framework/        … キャッシュ/セッション/ビュー等
│  └─ logs/             … ログ出力
├─ tests/               … テストコード(Feature/Unit)
├─ vendor/              … Composer依存パッケージ
├─ .env                 … 環境ごとの秘密情報/切替値
├─ artisan              … CLIエントリ
├─ composer.json        … PHP依存/スクリプト
└─ package.json         … フロント依存(必要な場合)

app/(アプリ本体)

Laravelのコアは app/ に置きます。フレームワークの流儀に合わせつつ、ドメインロジックをここに集約します。

Http/

  • Controllers/:ルーティングで呼ばれる入口。サービスやモデルを呼び出してレスポンスを返す。
  • Middleware/:リクエスト前後の共通処理(認証、CSRF、CORS、メンテナンス等)。
  • Requests/:フォームリクエスト。バリデーションと権限チェックをカプセル化。

Models/

Eloquentモデル。テーブルとのマッピング・スコープ・リレーション定義を担います。ビジネスロジックを持たせすぎる場合はサービス層の導入を検討。

Providers/

アプリ起動時のバインドやイベント登録など。サービスコンテナへの依存解決をここで定義します(例:リポジトリのインターフェース⇄実装のバインド)。

Jobs/・Events/・Listeners/・Mail/・Notifications/・Policies/・Rules/

  • Jobs:重い処理や非同期化したい処理をキューで実行。
  • Events/Listeners:疎結合な連携。発火(Event)と反応(Listener)。
  • Mail:メール本文やヘッダなどの組み立て。
  • Notifications:メールやSlack、Database通知などチャネル横断の通知。
  • Policies:認可(誰が何をできるか)をモデル単位で定義。
  • Rules:独自のバリデーションルールを作成。

bootstrap/

フレームワークの起動処理とキャッシュ。アプリケーションのパフォーマンス改善で使用(config:cache など)。

config/(設定)

アプリ設定一式。値は .env から参照するのが基本。代表例:

  • app.php:アプリ名、タイムゾーン、ロケール、プロバイダ登録など。
  • database.php:DB接続、接続先ごとの設定。
  • cache.phpqueue.phpfilesystems.php:各ドライバの設定。
  • logging.php:ログチャネルの定義。
  • mail.php:メール送信設定。

database/(DBまわり)

  • migrations/:テーブル構造の変更履歴。php artisan migrate で反映。
  • seeders/:初期データ投入。db:seed
  • factories/:テスト/ダミーデータ生成。

public/(公開ディレクトリ)

Webサーバのドキュメントルート。index.php がエントリポイント。画像やビルド後アセット(public/js, public/css 等)を配置。

resources/(ビュー/言語/アセット)

  • views/:Bladeテンプレート(.blade.php)。
  • lang/:翻訳ファイル(ja / en など)。
  • (assets):Vite等でビルド前のソースを置く構成も一般的。

routes/(ルーティング)

  • web.php:ブラウザ向け。セッション/CSRF有効。ミドルウェア web
  • api.php:API向け。ステートレス。ミドルウェア api
  • console.php:スケジューラやartisanコマンドの登録。
  • channels.php:ブロードキャスト用チャンネル定義。

storage/(保存/一時/ログ)

  • app/:アプリ保存ファイル(ユーザアップロード等)。
  • framework/:キャッシュ、セッション、コンパイル済ビューなど。
  • logs/:アプリログ(laravel.log)。

php artisan storage:linkpublic/storage にシンボリックリンクを作り、公開可能にします。

tests/(テスト)

Featureテスト(HTTPレイヤ寄り)とUnitテスト(関数/クラス単位)。php artisan test で実行。

プロジェクト直下の主なファイル

  • .env:環境変数(キーや接続情報)。Git管理しない。
  • artisan:CLIエントリ(php artisan XXX)。
  • composer.json:PHP依存/オートロード/スクリプト。
  • package.json:フロント依存(Vite等使用時)。

リクエストの流れ(超ざっくり)

  1. ブラウザ → public/index.php
  2. カーネル起動 → ルート解決
  3. ミドルウェア通過 → コントローラ呼び出し
  4. サービス/モデルで処理 → ビュー or JSONでレスポンス

よく使うartisan/Composerコマンド

# キャッシュ系
php artisan config:cache
php artisan route:cache
php artisan view:cache
php artisan cache:clear

# DB
php artisan migrate
php artisan db:seed
php artisan migrate:fresh --seed

# 生成
php artisan make:model Post -mcr    # モデル+マイグ+コントローラ+リソース
php artisan make:request StorePostRequest
php artisan make:policy PostPolicy --model=Post

# 依存
composer install
composer dump-autoload

運用のコツ(つまづきポイント)

  • .envとconfigキャッシュ:本番で config:cache したら、.envを変えても即時反映されません(再キャッシュ必要)。
  • 権限/所有者storagebootstrap/cache はWebサーバ書込可を維持。
  • public配下:ドキュメントルートを public/ に向ける。難しい場合は代替構成に注意。
  • storage:link:アップロードが404になる時はまずリンク確認。

初期セットアップ・引き継ぎチェックリスト

  • [ ] composer install / npm ci(または pnpm i
  • [ ] .env の整備(鍵、DB、メール、キャッシュ、キュー等)
  • [ ] php artisan key:generate
  • [ ] php artisan migrate --seed
  • [ ] php artisan storage:link
  • [ ] キャッシュ最適化(config:cache / route:cache / view:cache

更新して使えるように、過不足があればこのページを編集してプロジェクト標準にしていきましょう。

コメント

タイトルとURLをコピーしました