Laravel 01 考え方(MVC・リクエストの流れ・フォルダ構成)

更新日:

← Laravel / 次 → Laravel_02_ルーティング・コントローラ・Blade

フレームワークとは

「よくある作業はもう用意してあるので、作りたい部分だけ書けばいい」という土台。PHP だけで書くと、URL の振り分け・DB 接続・ログイン・入力チェックなどを毎回自分で作ることになる。Laravel はそれらを決まった書き方で提供してくれる。

PHP だけで書くLaravel で書く
1ページ1ファイル。処理と HTML が混ざりがち役割ごとにファイルを分ける(MVC)
SQL を文字列で組み立てる → SQLi の危険Eloquent / クエリビルダが安全に組み立てる
ログイン・CSRF 対策を自作標準機能+スターターキット
人によって書き方がバラバラ「Laravel の流儀」で揃う。AI も書きやすい

MVC = 役割分担

役割担当置き場所たとえ
Modelデータ(DB の読み書き、データのルール)app/Models/食材と冷蔵庫
View見た目(HTML)resources/views/盛り付け
Controller司令塔(モデルにデータを頼み、ビューに渡す)app/Http/Controllers/シェフ

ポイントは コントローラを太らせない こと。データのルールはモデル(や専用のクラス)へ、見た目はビューへ。

リクエストの流れ(8ステップ)

#どこで何をする
1ブラウザGET /posts を送る
2public/index.phpすべてのアクセスの入口。Laravel を起動する
3routes/web.phpURL に合うルートを探す
4ミドルウェアログイン済みか・偽装送信でないか(CSRF)などをチェック
5コントローラ処理の本体
6モデル ⇄ DBデータを取ってくる
7ビュー(Blade)データを HTML に埋め込む
8レスポンスHTML(API なら JSON)をブラウザに返す

この流れ全体を裏で取り仕切っているのが HTTP Kernel(→ Laravel_05_裏側の仕組み(Kernel・サービスコンテナ・キュー・スケジューラ))。

フォルダ構成(Laravel 11〜13)

myapp/
├─ app/
│  ├─ Http/Controllers/   コントローラ           ★よく触る
│  ├─ Models/             モデル                 ★よく触る
│  ├─ Jobs/               キューで動かすジョブ(make:job で作られる)
│  └─ Providers/          サービスプロバイダ(AppServiceProvider)
├─ bootstrap/app.php      ミドルウェア・例外処理などアプリの組み立て設定
├─ config/                アプリ全体の設定(.env の値を読む)
├─ database/
│  ├─ migrations/         テーブル設計図                ★よく触る
│  ├─ factories/          テスト用データの作り方
│  └─ seeders/            初期データ投入
├─ public/                公開フォルダ(index.php・画像・ビルド済みCSS/JS)
├─ resources/
│  ├─ views/              Blade テンプレート            ★よく触る
│  └─ css/ js/            フロントのソース(Vite でビルド)
├─ routes/
│  ├─ web.php             画面の URL                    ★よく触る
│  └─ console.php         自作コマンドと定期実行
├─ storage/               ログ・キャッシュ・アップロード(自動生成)
├─ tests/                 自動テスト
├─ vendor/                外部ライブラリ(Composer が管理。触らない・Git に入れない)
├─ .env                   DB 接続先・パスワードなど(Git に入れない)
├─ artisan                php artisan で使うコマンドの本体
└─ composer.json          使うパッケージの一覧

古い記事との違いに注意

Laravel 11 で構成が大きくスリムになった。ネットや AI の回答には古い構成がまだ多い。

古い(Laravel 10 以前)今(Laravel 11〜13)
app/Http/Kernel.php にミドルウェア一覧bootstrap/app.php の withMiddleware()
app/Console/Kernel.php にスケジュールroutes/console.php に Schedule::...
routes/api.php が最初からある必要なときに php artisan install:api で追加
app/Http/Middleware/ に多数のファイルフレームワーク内部に移動。自作するときだけ作る
初期 DB は MySQL初期 DB は SQLite(ファイル1つですぐ動く)

開発の始め方

laravel new myapp        # 対話形式でスターターキットやテストツールを選べる
cd myapp
php artisan dev          # サーバー・キュー・ログ・Vite をまとめて起動(Node 22.13 以上)
# → http://localhost:8000
  • PHP 8.3 以上と Composer が必要。Mac なら Laravel Herd を入れると PHP・Composer・インストーラがまとめて揃う
  • .env.example をコピーして .env を作るのが基本(インストーラは自動でやってくれる)