2018.11.23

Laravelプロジェクトを新規作成したときに出来るディレクトリとファイルをすべて解説する


この記事では、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 プロジェクトを新規作成した際にデフォルトで生成される各種のディレクトリをファイルについて紹介しました。