この記事では、Laravelプロジェクトを新規作成したときにデフォルトで出来ているディレクトリとファイルを紹介します。フレームワークのディレクトリやファイルにはそれぞれ役割がありますので、Laravel 使い始めの方などに参考にしていただければと思います。
ちなみに今回扱う Laravel のバージョンは 5.7 です。
ルートディレクトリ
まずはルートディレクトリ直下から見ていきましょう。
名前 |
Type |
説明 |
app |
Dir |
コントローラーやモデルなどビジネスロジックに関するクラスが入っています。設定やマイグレーションを除けば主にこのディレクトリの中のファイルを編集することになります。 |
bootstrap |
Dir |
Laravel アプリケーションのインスタンスを作成するスクリプトが入っています。このディレクトリの内部を編集することはありません。 |
config |
Dir |
様々な設定ファイルが格納されています。 |
database |
Dir |
マイグレーションファイルやシーダーなどデータベースの操作に関するクラスが入っています。 |
public |
Dir |
公開ディレクトリです。index.php のほか、.htaccess などが格納されています。 |
resources |
Dir |
テンプレートファイル、メッセージ定義、コンパイル前の JS や Scss ファイルが格納されています。 |
routes |
Dir |
ルート定義ファイルが格納されています。 |
storage |
Dir |
ログやキャッシュが格納されています。ユーザーがアップロードしたファイルをここに格納することもあります。 |
tests |
Dir |
テストコードはここに格納します。 |
vendor |
Dir |
Laravel そのものを含んだ PHP の依存パッケージが格納されています。このディレクトリの中は外部ライブラリなので編集はしません。 |
.env |
File |
環境設定ファイルです。アプリケーションキーやデータベースの接続情報など、環境(ローカルや本番など)によって異なる設定値が定義されています。外部に漏れるといけない情報なのでこのファイルはバージョン管理の対象から外します。 |
.env.example |
File |
.env の雛形です。設定項目のみ記述してバージョン管理の対象にすると、どのような項目を埋めればいいのかを伝えることができます。 |
.gitattributes |
File |
Git の設定ファイルです。 |
.gitignore |
File |
こちらも Git の設定ファイルです。バージョン管理の対象から外すファイルが定義されます。 |
.editorconfig |
File |
EditorConfig というツールの設定ファイルです。タブ幅や改行コードなどエディタの設定を定義し共有することができます。Laravel 固有のツールではありません。 |
artisan |
File |
Laravel の CLI コマンドを実行するための PHP スクリプトです。 |
composer.json |
File |
PHP パッケージマネージャ Composer の設定ファイルです。依存パッケージの定義などが記述されます。 |
composer.lock |
File |
依存パッケージのバージョン情報が自動的に出力されるファイルです。直接編集はしません。 |
package.json |
File |
JavaScript のパッケージマネージャ npm の設定ファイルです。 |
phpunit.xml |
File |
テストツール PHPUnit の設定ファイルです。 |
readme.md |
File |
ソフトウェアの説明書ですね。ライブラリなど一般に配布するソフトでない限りは記述しなくても構わないでしょう。 |
server.php |
File |
ローカルサーバーとして機能する PHP スクリプトです。Homestead や Valet で環境構築していれば直接起動することはありません。 |
webpack.mix.js |
File |
Laravel Mix の設定ファイルです。JavaScript や Sass についてコンパイル手順をスクリプトとして記述します。 |
app
app
にはビジネスロジックがいろいろ入っています。最初から入っているディレクトリの他にも Jobs
(キューイングするジョブ)、Events
(イベント)、Mail
(メール)、Rules
(独自バリデーション)などが格納されます。
名前 |
Type |
説明 |
Console |
Dir |
コマンドラインアプリケーション(バッチプログラム)を格納します。 |
Exceptions |
Dir |
例外ハンドラおよび独自例外クラスを格納します。 |
Http |
Dir |
コントローラーや入力値バリデーション、ミドルウェアなど HTTP リクエストに対する処理を行うクラス群が格納されます。 |
Providers |
Dir |
アプリケーションの起動時に呼び出され、各種の設定処理を行うサービスプロバイダクラスが格納されます。 |
User.php |
File |
どうせ必要だろう、ということで(?)用意されている User モデルクラスです。Laravel ではモデルクラスの場所は特に決まっていません。ファイルを整理する目的で最初から Models や Entities などのディレクトリに入れてしまうことも多いです。 |
Console
名前 |
Type |
説明 |
Kernel.php |
File |
コマンドラインアプリ、バッチ処理の読み込みおよび起動時間の設定を行うファイルです。 |
最初は用意されていませんが、php artisan make:command
コマンドでバッチファイルを生成するとこの app/Console
ディレクトリの下に Commands
ディレクトリが作成され、そこにバッチコマンドのクラスが配置されます。
Exceptions
名前 |
Type |
説明 |
Handler.php |
File |
例外の処理方法を設定するクラスです。どの例外が発生したらどの画面を返すとか誰にメールを送るとかを定義できます。Laravel での例外処理はこのクラスで統一的に行うので各コントローラークラスなどでは行わないのが普通です。 |
Http
名前 |
Type |
説明 |
Controllers |
Dir |
コントローラークラスを配置します。 |
Middleware |
Dir |
HTTP リクエストがコントローラーに渡される前に行う処理を記述するミドルウェアクラスが配置されます。 |
Kernel.php |
File |
ミドルウェアの読み込みを行うクラスです。 |
Controllers
最初から認証系のコントローラーが用意されています。
名前 |
Type |
説明 |
Controller.php |
File |
他のコントローラークラスの継承元となるクラスです。 |
Auth/ForgotPasswordController.php |
File |
ResetPasswordController とともにパスワードの再設定処理を受け付けるコントローラーです。再設定メールの送信処理などが含まれます。 |
Auth/LoginController.php |
File |
ログイン処理を受け付けるコントローラーです。 |
Auth/RegisterController.php.php |
File |
会員登録処理を受け付けるコントローラーです。 |
Auth/ResetPasswordController.php |
File |
ForgotPasswordController とともにパスワードの再設定処理を受け付けるコントローラーです。パスワードの編集処理などが含まれます。 |
Auth/VerificationController.php |
File |
メール認証の処理を受け付けるコントローラーです。 |
Middleware
名前 |
Type |
説明 |
Authenticate.php |
File |
認証チェック処理を行います。認証チェックはコントローラーを横断して必要な処理なのでミドルウェアに切り出されています。 |
CheckForMaintenanceMode.php |
File |
メンテナンスモードだった場合の処理をもつミドルウェアです。実処理は親クラスが持っており、このファイルではアプリケーションがメンテナンスモードの場合にも返却できるページを設定します。 |
EncryptCookies.php |
File |
クッキーの暗号化を行います。実処理は親クラスが持っており、このファイルでは暗号化を行わないクッキーを設定します。 |
RedirectIfAuthenticated.php |
File |
例えばログインページなど認証前のみ返却するページについて、認証済みだった場合の処理(トップページにリダイレクトするなど)を記述します。 |
TrimStrings.php |
File |
入力値から余計な空白を除く処理を行います。実処理は親クラスが持っており、このファイルでは空白除去を行わない入力値の name を設定します。 |
TrustProxies.php |
File |
ロードバランサやゲートウェイキャッシュなどリバースプロキシの背後でアプリケーションを動作させる際のセッション管理を行います。こちらも実処理は親クラスが持っています。 |
VerifyCsrfToken.php |
File |
CSRF トークンのチェック処理を行います。実処理は親クラスが持っており、このファイルではチェックを行わない URL などを設定します。 |
Providers
名前 |
Type |
説明 |
AppServiceProvider.php |
File |
アプリケーションの起動直後に必要な設定の読み込みと登録処理を汎用的に行います。 |
AuthServiceProvider.php |
File |
認可設定(ポリシー)の読み込みと登録処理を行います。 |
BroadcastServiceProvider.php |
File |
WebSocket を用いたサーバプッシュ配信についてルーティング設定の読み込みと登録処理を行います。 |
EventServiceProvider.php |
File |
イベントとイベントリスナーの登録処理を行います。 |
RouteServiceProvider.php |
File |
ルーティング設定の読み込みと登録処理を行います。 |
bootstrap
名前 |
Type |
説明 |
app.php |
File |
Laravel アプリケーションのインスタンスを作成するスクリプトです。 |
cache |
Dir |
ルーティングや config 設定、パッケージの読み込み先などについてフレームワークが自動生成するキャッシュファイルが出力されます。 |
config
config
ディレクトリに入っているのはすべて設定ファイルです。
ファイル |
設定内容 |
app.php |
アプリ名やロケールに加え、使用するサービスプロバイダなど |
auth.php |
認証処理 |
broadcasting.php |
サーバプッシュ配信 |
cache.php |
キャッシュ |
database.php |
データベースの接続情報など |
filesystems.php |
アップロードされたファイルの保存先、S3の接続情報など |
hashing.php |
暗号化方法 |
logging.php |
ログ出力 |
mail.php |
メールサーバの接続情報など |
queue.php |
キューの格納場所とその接続情報 |
services.php |
外部 Web サービスのアカウント情報 |
session.php |
セッションの保存先やクッキーの設定など |
view.php |
テンプレートファイルの読み込み元 |
database
名前 |
Type |
説明 |
factories |
Dir |
テストや開発用データ投入で使うテストデータ作成クラスを配置します。 |
factories/UserFactory.php |
File |
User モデル用のテストデータ作成クラスです。 |
migrations |
Dir |
マイグレーションファイルを配置します。デフォルトでは2つのマイグレーションが含まれます。2014_10_12_000000_create_users_table.php は User モデルが対応するユーザーテーブル用、2014_10_12_100000_create_password_resets_table.php はパスワードリセットで用いる一時トークンテーブル用です。 |
seeds |
Dir |
テストデータ挿入クラスを配置します。 |
seeds/DatabaseSeeder.php |
File |
テストデータ挿入クラスの雛形です。 |
public
public
はインターネットに公開されるディレクトリです。画像ファイル用のディレクトリがないので images
など作成すればよいでしょう。
名前 |
Type |
説明 |
css |
Dir |
CSS ファイルを配置します。最初はミニファイ済みの Bootstrap のコードが入っていますが、不要であれば削除して構いません。 |
js |
Dir |
JavaScript ファイルを配置します。最初はコンパイル済みのデフォルト JS ファイルが入っていますが、不要であれば削除して構いません。 |
svg |
Dir |
SVG ファイルを配置します。最初はエラーページで使うファイルが入っています。不要であれば削除して構いません。 |
.htaccess |
File |
Apache Web サーバ向けの URL リライト設定です。 |
favicon.ico |
File |
ファビコン。 |
index.php |
File |
すべてのリクエストを最初に受け付けるファイルです。 |
robots.txt |
File |
検索エンジンのクローラーに対する設定ファイルです。 |
web.config |
File |
IIS Web サーバ向けの URL リライト設定です。 |
resources
名前 |
Type |
説明 |
js |
Dir |
コンパイル前の JavaScript ファイルを配置します。 |
js/components |
Dir |
Vue や React のコンポーネント格納先として想定されたディレクトリです。例として ExampleComponent.vue が入っています。 |
js/app.js |
File |
サンプルの JS ファイル。このファイルのコンパイル結果が public/js/app.js です。 |
js/bootstrap.js |
File |
サンプルの JS ファイル。 |
lang |
Dir |
多言語対応のためのメッセージ定義が格納されます。最初は en (英語)だけですが、ロケール設定に合わせて ja (日本語)ディレクトリを作成すればその中のメッセージ定義が優先的に使用されます。 |
lang/en/auth.php |
File |
認証失敗時のメッセージなどを定義します。 |
lang/en/pagination.php |
File |
ページ送りで使用されるメッセージを定義します。 |
lang/en/passwords.php |
File |
パスワード再設定メールのメッセージなどパスワードにまつわるメッセージを定義します。 |
lang/en/validation.php |
File |
「〇〇は必須です」「〇〇は△△文字以上で〜」などのバリデーションメッセージを定義します。 |
sass |
Dir |
Sass ファイルを配置します。特にフレームワークが Sass の使用を強制している訳ではなく、例として置かれているものです。 |
sass/_variables.scss |
File |
サンプルの scss ファイル。 |
sass/app.scss |
File |
サンプルの scss ファイル。このファイルのコンパイル結果が public/css/app.css です。 |
views |
Dir |
テンプレートファイルはここに配置します。 |
views/welcome.blade.php |
File |
最初に作りたてのアプリを起動したときに見られるサンプルページです。 |
routes
名前 |
Type |
説明 |
api.php |
File |
API のルート定義です。 |
channels.php |
File |
WebSocket でサーバプッシュ配信を行う際のチャネル定義です。 |
console.php |
File |
コンソールコマンド定義です。クラスベースでコマンドを作成する際は app/Console/Commands にコマンドクラスを配置しますが、このファイルではクロージャベースでの定義方法が可能です。 |
web.php |
File |
通常の Web ページのルート定義です。 |
storage
名前 |
Type |
説明 |
app |
Dir |
ユーザーのアップロードファイルの置き場所として想定されたディレクトリです。 |
app/public |
Dir |
公開してよいアップロードファイルの置き場所として想定されたディレクトリです。 |
framework |
Dir |
フレームワークが利用するためのファイルが配置されます。 |
framework/cache |
Dir |
キャッシュファイルが配置されます。 |
framework/sessions |
Dir |
セッションファイルが配置されます。 |
framework/testing |
Dir |
ファイルアップロードのテストで使用されるディレクトリです。 |
framework/views |
Dir |
コンパイル済みのテンプレートファイルが配置されます。 |
logs |
Dir |
ログの出力先です。 |
tests
名前 |
Type |
説明 |
Feature |
Dir |
HTTP リクエストを伴う機能テストを配置します。 |
Feature/ExampleTest.php |
File |
サンプルの機能テストクラス。 |
Unit |
Dir |
単体テストを配置します。 |
Unit/ExampleTest.php |
File |
サンプルの単体テストクラス。 |
CreatesApplication.php |
File |
テスト用のアプリケーションを作成するメソッドが定義されたトレイトです。TestCase.php で読み込まれています。 |
TestCase.php |
File |
テストクラスの親となるクラスです。 |
以上、Laravel プロジェクトを新規作成した際にデフォルトで生成される各種のディレクトリをファイルについて紹介しました。