Laravelのディレクトリ構造

Laravelの基礎

Laravelがどのようなディレクトリ構造になっているかを解説します。

はじめに

どこに何があるのかを理解することにより、ソースを探す無駄な時間がなくなったり、どこに配置するか悩んだりすることなく、スムーズな開発ができるようになります。

よく使う、覚えておいた方がいいものには(★)を付けてみましたので、これだけでも覚えておいてください。

ディレクトリ解説

app

ほぼ全てのクラスはここに配置されます。

Broadcasting

ブロードキャストチャンネルクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:channelを実行するとディレクトリが作成され、ファイルがここに配置されます。

Console

artisanのコマンドクラスが配置されます。
artisanコマンドのmake:commandを実行するとファイルがここに配置されます。

Events

イベントクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのevent:generateまたはmake:eventを実行するとディレクトリが作成され、ファイルがここに配置されます。

Exceptions

例外クラスが配置されます。
artisanコマンドのmake:exceptionを実行するとファイルがここに配置されます。

Http

Controllers(★)

コントローラクラスが配置されます。
artisanコマンドのmake:controllerを実行するとファイルがここに配置されます。

Middlewares

ミドルウェアクラスが配置されます。

Jobs

ジョブクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:jobを実行するとディレクトリが作成され、ファイルがここに配置されます。

Listeners

イベントを処理するクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのevent:generateまたはmake:listenerを実行するとディレクトリが作成され、ファイルがここに配置されます。

Mail

メールクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:mailを実行するとディレクトリが作成され、ファイルがここに配置されます。

Models(★)

モデルが配置されます。
artisanコマンドのmake:modelを実行するとファイルがここに配置されます。

Notifications

通知クラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:notificationを実行するとディレクトリが作成され、ファイルがここに配置されます。

Policies

認可ポリシークラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:policyを実行するとディレクトリが作成され、ファイルがここに配置されます。

Providers

サービスプロバイダクラスが配置されます。

Rules

バリデーションルールのクラスが配置されます。
デフォルトでは作成されていないディレクトリで、artisanコマンドのmake:ruleを実行するとディレクトリが作成され、ファイルがここに配置されます。

bootstrap

Laravelの初期起動処理のapp.phpやキャッシュファイルが配置されます。
基本的には触るようなことはありません。

config(★)

設定ファイルが配置されます。独自で作成する設定ファイルもここに配置します。

database

モデルファクトリ、マイグレーション、シーダーが配置されます。SQLiteのデータもここで良いようです。

factories

モデルファクトリクラスが配置されます。

migrations(★)

マイグレーションファイルが配置されます。

seeders

シーダークラスが配置されます。

public(★)

ここは公開用のディレクトリになります。Laravelアプリケーションの入り口であるindex.phpや、画像、CSS、JavaScriptファイル、robots.txt、.htaccessなどを配置します。

resources

ビュー(Blade)、コンパイル前のCSSやJavaScriptなどを配置します。

css

コンパイル前のCSSファイルが配置されます。

js

コンパイル前のJavaScriptファイルが配置されます。

views(★)

ビュー(Blade)ファイルが配置されます。

routes

ルートファイルが配置されます。

storage

app

public

公開可能なユーザー作成ファイルを配置します。artisanコマンドのstorage:linkでシンボリックリンクをpublic/storageに作成して公開します。

framework

logs

アプリケーションのログが配置されます。Log::info()などの出力先がここになります。

tests

自動テストに関するファイルが配置されます。

Future

機能テストファイルが配達されます。

Unit

PHPUnitテストファイルが配置されます、

vendor

Composerでインストールされるものが配置されます。Laravelの本体もここにあります。ここはGit管理されません。

著者

Webエンジニア歴30年、フリーランスバックエンドエンジニア。

PHP歴約30年(Laravel 7年・FuelPHP 5年・CakePHP・自作FW)、
JavaScript歴約20年(React・Vue各4年)。
AWS(EC2 / CloudFront / RDS / API Gateway など)・
GCP(BigQuery)を使ったバックエンド開発を中心に、
複数の事業会社・受託案件でシステム設計から実装・運用まで担当しています。

PHPがバージョン4の時代から書いており、
Laravelが普及する前のフレームワーク乱立期も経験しています。
「昔はこう書いていたが今はこう」という変遷を肌で知っているエンジニアとして、
単なるコマンドの使い方だけでなく、なぜそうするのかの背景まで伝えることを意識して書いています。

このブログでは、実務で実際に詰まった箇所・調べたこと・気づいたことを
そのまま記事にしています。誰かの「詰まり」が解決するきっかけになれば幸いです。

千原 耕司をフォローする

役にたったと思ったら応援をお願いします m(._.)m

Laravelの基礎Laravel講座
スポンサーリンク
シェアする
千原 耕司をフォローする
タイトルとURLをコピーしました