Laravel5.3のフォルダ構成をまとめてみた

2019年3月11日

Laravel5.3体験記。今回はLaravelアプリのプロジェクト構成に関する記事です。

はじめに

今回はLaravelアプリのプロジェクト構成について調べてみました。

Laravel体験記ということで、実際に使用しているわけではないので感覚の要素が多いです。

ある程度調べつつまとめたので盛大に外してはいないと思いますが、この点踏まえて読んでもらえると幸いです。

ドキュメントの対象ページ

今回は下記のページをベースに進めていきます。

Laravel 5.3 ディレクトリ構造

プロジェクト構成

laravel newコマンドで作成すると、下記のようなファイルが一式作成されると思います。

それぞれ自分なりの解釈もありますが、説明記載します。(今後勉強していく中で気づいたところは随時見直していく予定)

プロジェクトルート
- app:アプリケーションのコアコードを配置する。このフォルダ配下はComposerによってオートロードされる。

  - Console:自作したArtisanコマンドや、CRONによるタスクスケジュールに関するクラスが配置される。

  - Events:イベントクラスが配置される。

  - Exceptions:各種例外処理に関するクラスが配置される。

  - Http:コントローラ、ミドルウェア、フォームリクエストなど、アプリケーションのリクエストを処理するクラスが配置される。

  - Jobs:キュー制御(非同期)による処理に関するクラスが配置する。

  - Listeners:イベントを実際に処理するクラスが配置される。

  - Mail:アプリが送信するメールに関するクラスが配置される。

  - Notifications:アプリのイベントが発火したなど、各種通知を管理者等に通知するクラスが配置される。

  - Policies:リソースに対し指定したアクションをユーザが実行できるかを決定するポリシーに関するクラスが配置される。

  - Providers:アプリケーションの全サービスプロバイダが配置される。

- bootstrap:フレームワークの初期起動やオートローディングの設定を行うファイルが配置される。

  - cache:パフォーマンス最適化のためのファイルが配置される。

- config:アプリケーションの全設定ファイルが配置されている。

  - app.php:アプリ名や言語、タイムゾーンといったアプリに関する設定を記述。

  - auth.php:Laravel標準の認証機能に関する設定を記述。

  - broadcasting.php:イベント発火時の通知先に関する設定を記述。

  - cache.php:キャッシュに関する設定を記述。

  - compile.php:「artisan optimize」コマンド時にあわせて統合するクラスを記述。

  - database.php:DBに関する設定を記述。

  - filesystems.php:ファイルシステムに関する設定を記述。AWSの設定など。

  - mail.php:メールサーバに関する設定を記述。

  - queue.php:キュードライバに関する設定を記述。

  - services.php:連携する外部システムに関する設定を記述。

  - session.php:ライフサイクルなどのセッションに関する設定を記述。

  - view.php:Viewのロード先に関する設定を記述。

- database:データベースのマイグレーションと初期値設定(シーディング)が配置される。

- public:Laravelのドキュメントルートフォルダ。アセット(画像、JavaScript、CSSなど)などが配置される。

- resources:ビューファイルやアセットの元ファイル(LESS、SASS、JavaScript)、言語ファイルが配置される。

- routes:ルーティング関連のファイルが配置される。

  - web.php:REST API以外のルーティングに関する設定を記述。

  - api.php:REST APIのルーティングに関する設定を記述。

  - console.php:CRONなどのコンソールベースのエントリーポイント。ピンと来ず・・

- storage:アプリ、FWが生成するファイル用のフォルダ。アプリのログファイルも含む。

  - app:アプリにより生成されるファイルを格納する。ファイル操作時の作業用フォルダになる想定。

  - framework:フレームワークが生成するファイルが格納される。

  - logs:アプリケーションのログファイルが保存される。

- tests:PHPUnitのテストドライバが配置される。

- vendor:Composerによる依存パッケージが配置される。

- .env:開発、本番機といった環境に依存する設定を記載するファイル。GITなどのバージョン管理対象外にすること。

さいごに

以上、プロジェクト構成についてまとめてみました。

ある程度イメージはできたので、深堀りできそうな感じです。

古いSymfonyしか経験ないので、CRONバッチ処理もLaravel側で管理できるのは驚きでした。

次回は例外処理とロギングについてまとめたいと思います。