こんにちは、かつコーチです。
前回、Laravel SailかXAMPPかで環境を作り、初期画面を表示するところまで進みました。
作成されたプロジェクトフォルダを開くと、大量のフォルダとファイルが並んでいて、最初は面食らった方も多いのではないでしょうか。
私も初めてLaravelのプロジェクトを開いたとき、「どこに何を書けばいいの…」と固まってしまった記憶があります。
今回は、最初に押さえておきたい主要なディレクトリを整理していきます。
Laravelのディレクトリ構造、全体像
自作フレームワークとの違い
PHP基礎編の最後で、簡単な自作ミニフレームワークを作りました。
あのとき、フォルダを「index.php」「Controller」「View」くらいのシンプルな構成にしたと思います。
Laravelのディレクトリ構造は、それをさらに細かく役割分担したものだとイメージすると理解しやすいです。
最初からすべてを覚える必要はなく、「今どこを触っているか」が分かれば十分です。
最初に見るべきはappとroutes
数十個あるフォルダのうち、日々の開発で頻繁に触るのは主に次の2つです。
app/:アプリのロジック(コントローラ・モデルなど)が入っているroutes/:どのURLでどの処理を呼ぶかを定義する
まずはこの2つの場所だけ覚えておけば、初期の学習には困りません。
よく使う主要ディレクトリ
app/:アプリの中心部分
app/ フォルダの中には、次のようなサブフォルダがあります。
app/Http/Controllers/:コントローラを置く場所(処理の司令塔)app/Models/:モデルを置く場所(データベースとやり取りする窓口)app/Providers/:アプリ起動時の初期設定を行う場所
自作フレームワークで「Controllerクラス」を自分で書いていたように、Laravelでもコントローラはapp/Http/Controllers/にファイルとして作っていきます。
routes/:URLと処理の対応表
routes/web.php に、ブラウザからアクセスされるURLと処理の対応を書きます。
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
これは「トップページ(/)にアクセスされたら、welcomeという画面を表示する」という意味です。
ルーティングについては次々回、もう少し詳しく扱います。
resources/:画面(View)の置き場所
resources/views/ に、Blade(ブレードテンプレート)のファイルを置きます。
先ほどのコードに出てきた welcome は、実際には resources/views/welcome.blade.php というファイルを指しています。
HTMLに近い書き方でありながら、PHPの変数や条件分岐を埋め込める仕組みになっています。
database/:データベース関連
database/migrations/ には、データベースのテーブル構成を定義するファイル(マイグレーションファイル)が入ります。
PHP基礎編でSQLのCREATE TABLE文を直接書いてテーブルを作りましたが、Laravelではこのマイグレーションファイルを使ってテーブルを管理します。
コードとしてテーブル構成を残せるので、「誰かのPCでテーブルを作り直す」といった作業がコマンド一発で済むのが利点です。
public/:外部に公開される唯一のフォルダ
public/ フォルダは、Webサーバーから直接アクセスされる唯一の場所です。
public/index.php が、すべてのリクエストの入り口(自作フレームワークで言うところのindex.php)になっています。
それ以外のフォルダ(app/やroutes/など)は、直接インターネットからはアクセスできない仕組みになっている、という点は覚えておいてください。
つまずきやすいポイント:ファイルの置き場所を間違える
よくある間違い
Laravelに慣れないうちは、「新しく作ったPHPファイルを、どこに置けばいいか分からない」という状態になりがちです。
❌ Before:とりあえずpublic/直下にPHPファイルを置いてしまう
public/
├── index.php
└── mypage.php ← Laravelの仕組みを経由しない独自ファイル
PHP編の感覚のまま public/mypage.php のようなファイルを作って直接アクセスしてしまうと、Laravelのルーティングやミドルウェア(認証チェックなど)を一切経由しない、独立したページになってしまいます。
私も最初、「新しいページを作りたい」と思ってpublic/直下にPHPファイルを置いてしまい、なぜかログイン認証が効かないページができてしまったことがあります。
原因は単純で、Laravelの仕組み自体を通っていなかったからでした。
✅ After:ルーティング・コントローラ・Viewの流れに沿って作る
// routes/web.php
Route::get('/mypage', [MyPageController::class, 'index']);
// app/Http/Controllers/MyPageController.php
class MyPageController extends Controller
{
public function index()
{
return view('mypage');
}
}
新しいページを作りたいときは、public/に直接ファイルを置くのではなく、必ず「ルーティングを定義 → コントローラを作る → Viewを用意する」という流れに沿うのが正解です。
そうすることで、Laravelが提供する認証・ミドルウェアなどの仕組みをそのまま活用できます。
まとめ
この記事のポイント
- Laravelのディレクトリは役割ごとに細かく分かれており、最初は
app/とroutes/から覚えれば十分 app/Http/Controllers/はコントローラ、app/Models/はモデル、resources/views/はBladeテンプレートの置き場所database/migrations/でテーブル構成をコードとして管理できる- 外部から直接アクセスできるのは
public/のみで、新しいページは必ずルーティング経由で作る
次に読むべき記事
ディレクトリ構造がなんとなくつかめたら、次は環境ごとに設定を切り替える仕組みである.envファイルを見ていきましょう。
→ 次の記事:.envファイルの役割と設定方法