Laravelのインストールで、トップページまでの表示が完了しました。続いてLaravelがユーザーからのHTTPリクエストを受け取り、レスポンスを返却するまでの構成を見ていきましょう。

Laravelのディレクトリ構造

3年以上前に更新されました。情報が古い可能性があります。
更新日 : 2020年02月03日

Laravelのインストールで、トップページまでの表示が完了しました。続いてLaravelがユーザーからのHTTPリクエストを受け取り、レスポンスを返却するまでの構成を見ていきましょう。

Laravelのディレクトリ構成

Laravelをインストールすると複数のディレクトリができます。それらのディレクトリについて順番に解説します。

app

作成するアプリケーションの本体となるコードをここに書いていきます。Laravelで一般的なWEBアプリケーションを作るのであれば、まずはapp/Http/Controllersディレクトリ内にコントローラーを作成することがスタートです。

その他のディレクトリに関しては、様々な役割ごとに分かれているため、実際に利用する際に別記事で解説します。

bootstrap

このディレクトリ内のapp.phpファイルで、Laravelのフレームワークの初期化処理が行われます。WEBアプリケーション開発時に特に意識する必要はありません。

config

設定ファイル関連が配置されます。このディレクトリ内にあるPHPファイルを見ることでどんな設定値がアプリケーション内で利用できるかがわかります。

これらの設定値はLaravelフレームワーク内でグローバルに利用できるconfig関数を呼び出すことで設定値にアクセスできます。基本的な設定値の変更は.envファイルというものを利用するため、このフォルダは書き換えたりすることはあまりありません。

database

データベース関連の初期値やマイグレーション(データベースの自動生成機能など)を行う部分です。データベースを利用するまでは特に利用しません。

public

その名の通り、WEBサーバーとして公開されるべきディレクトリです。このディレクトリのみをWEBサーバーのドキュメントルートに設定しておけば、publicディレクトリ内にあるindex.phpがLaravelの入り口として機能してくれます。

publicディレクトリ以外はWEBサーバーで公開しないことにより、セキュリティ的にも他のPHPファイルや設定ファイルは安全です。

その他CSSファイルやJavascriptファイルなどユーザーに公開されるべきファイルはここに配置されます。

resources

Viewや言語ファイルなどのリソースファイル(プログラム本体の動作に必要なファイル類)が格納されます。

routes

ここには4つのPHPファイルが格納されています。一般的なWEBアプリケーションであれば、URLルーティングを行うweb.phpと、API専用のURLルーティングを行うapi.phpをよく編集することになります。これらのファイルによってURLの構成が決定します。

storage

Viewのコンパイル済みファイルやファイルベースのセッション、ログなどLaravelから生成されるファイルがストレージディレクトリに格納されます。

また、storage/app/publicディレクトリはユーザーからのアップロードされたファイルなどを格納するディレクトリとしても利用されます。storageディレクトリは直接公開されないため、public/storageディレクトリがstorage/app/publicディレクトリを指すようにシンボリックリンク(Windowsで言うショートカット)でアクセスさせます。

tests

テスト用のPHPファイルを格納します。PHPUnitというライブラリがインストールされているため、コマンドで自動実行が動作します。

vender

Composerにより、各種依存ライブラリがインストールされます。Laravelフレームワーク本体もvenderディレクトリ内にインストールされています。このディレクトリ内に存在するファイルは、絶対に自分で編集してはいけません

その他のファイル

.env

.envファイルは環境設定ファイルです。データベースへの接続設定、アプリケーション名など環境ごとに異なる設定値をこのファイルに書き込みます。.envファイルに書かれた設定がconfigディレクトリ内のPHPファイルで読み込まれます。

composer.json・composer.lock

Composerで利用されるファイルです。これらのファイルが存在すれば、composer installまたはcomposer updateコマンドで各種依存パッケージのインストール、アップデートを自動で行ってくれます。

これらのファイルに従ってvendorディレクトリのファイルの内容が変更されます。

MVCはそれぞれどこに当てはまるか

それぞれのディレクトリに関して簡単に説明しましたが、フレームワークの基本となるMVCがディレクトリのどこに当てはまるのかを確認しておきます。

  • Model
    Laravelにはモデル用のディレクトリは存在しません。modelは主にデータ処理を扱う部分ですが、人によって定義が曖昧なため、「modelは各自で作ってくれ」というスタンスです。
  • View
    ビューは表示を担当する部分でした。Controllerからデータを受け取り、そのデータを表示するHTMLなどが深く関わる部分です。これはresources/viewsディレクトリで扱うことになります。Laravelで利用されるView用のPHPファイルは〜〜.blade.phpというファイルで作成します。
  • Controller
    モデルやビューへの橋渡しを行うコントローラーはapp/Http/Controllersディレクトリで作成します。コントローラーのどの処理を実行するかどうかは、ルーター(routesディレクトリ配下のPHPファイル)が決定します。