Laravel 13 ハンズオン連載 — 全体マップ(README)
Docker 環境前提・PHP 経験者向けの Laravel 13 学習連載です。1つのタスク管理アプリを育てながら、「作る力 → 育てる力 → 実務力」を段階的に身につけます。
この連載の前提
- 対象:PHP の基本文法(変数・関数・クラス)が分かる人。Laravel は初めてでOK
- 環境:Docker Desktop が動くこと。nginx + PHP-FPM + MySQL + phpMyAdmin 構成(Sailは使いません)
- バージョン:Laravel 13(PHP 8.5)
- 前提スキル:Git の基本操作(clone / commit / branch / push / PR)は既知として扱います。未経験の場合は先に習得してください
- 題材:全編を通じて1つの「タスク管理アプリ」を継続して育てます
全体構成
| 部 | テーマ | 回数 | 到達点 |
|---|---|---|---|
| 基礎編 | 作る力 | 8回 | ゼロからCRUD+認証つきWebアプリを作れる |
| 発展編 | 育てる力 | 8回 | テストを安全網に、壊さず機能追加・改善できる |
| 実務力編 | 実務力 | 9回 | 他人のコード・現実の負荷・セキュリティに対応できる |
| 番外編 | 実務頻出機能 | 5本 | 必要に応じて差し込む独立回 |
| TypeScript編 | 型を扱う力 | 5回 | フロントエンドに進む準備が整う(独立コース) |
| 第4部 フロントエンド編 | つなぐ力 | 8回 | 画面を React + Inertia で作り替えられる |
| 付録 | 副読本 | 1本 | 全編通じて手元に置く |
本編33回(基礎8+発展8+実務力9+フロント8)に番外編5本・TypeScript編5回・付録1本を加えた計44コンテンツ。基礎編→発展編は順番必須、実務力編は発展編修了後、番外編・付録は指定タイミングで差し込みます。TypeScript編は発展編第6回以降ならいつでも開始できる独立コースです。
基礎編(作る力)全8回
| 回 | タイトル | 主なトピック |
|---|---|---|
| 1 | Docker環境構築とHello Laravel | Docker構成、Laravelインストール、DB接続、リクエストの流れ |
| 2 | ルーティングとController | ルート定義、ルートパラメータ、Controller、名前付きルート、MVC |
| 3 | Bladeで画面を作る | Bladeディレクティブ、View、レイアウトコンポーネント、CSS |
| 4 | マイグレーションとEloquent入門 | マイグレーション、モデル、tinkerでCRUD、Eloquent |
| 5 | 一覧表示と作成フォーム | 実データ表示、フォーム、CSRF、FormRequest、バリデーション、フラッシュ |
| 6 | 編集・削除とリソースコントローラ | ルートモデルバインディング、Update/Delete、Route::resource |
| 7 | 認証とユーザーごとのタスク | 自前認証、authミドルウェア、リレーション、認可(abort_if) |
| 8 | 仕上げと発展 | ページネーション、検索、Docker設定の読み解き、学習マップ |
基礎編修了時のレベル:ゼロからCRUD+認証つきのWebアプリをLaravelで作れる。
発展編(育てる力)全8回
| 回 | タイトル | 主なトピック |
|---|---|---|
| 1 | 自動テスト入門(Pest) | テストDB、Feature テスト、認証・認可のテスト、AAAパターン |
| 2 | Policyで認可を整理する | 認証と認可、Policy、Gate::authorize、@can、テストを安全網にしたリファクタ |
| 3 | FactoryとSeeder | Factory、state、リレーション生成、テストのリファクタ、Seeder |
| 4 | API化とSanctum | install:api、apiResource、APIリソース、トークン認証、APIテスト |
| 5 | キュー・メール・スケジューラ | Mailpit(自力追加)、Mailable、キュー、Artisanコマンド、スケジューラ |
| 6 | フロントエンドのモダン化 | Node.js追加、Vite、Tailwind CSS、Bladeコンポーネント |
| 7 | 本番構成とCI | 環境分離、シークレット管理、最適化コマンド、GitHub Actions |
| 8 | 新機能探検と、その先へ | リリースノートの読み方、PHP Attributes、AI SDK偵察、総まとめ |
発展編修了時のレベル:テストを安全網に、既存アプリを壊さず機能追加・改善できる。実務チームでレビューを受けながら小〜中規模の開発を任せられるジュニア相当。
実務力編(実務力)全9回
| 回 | タイトル | 主なトピック |
|---|---|---|
| 1 | パフォーマンス計測とN+1問題 | Debugbar/Telescope、大量データ、N+1発見、Eager Loading、(Cache入門) |
| 2 | インデックスとEXPLAIN | 生SQLを読む、EXPLAIN、インデックス設計、複合インデックスとカーディナリティ、chunk |
| 3 | DB設計演習:タグ機能(多対多) | ER図、belongsToMany、中間テーブル、別解比較(個人完結) |
| 4 | レガシーコードリーディングとリファクタ | 問題だらけのアプリ、問題列挙、特性テスト、切り出し |
| 5 | トランザクションと同時実行制御 | DB::transaction、ロック、二重送信バグの再現と修正 |
| 6 | 例外処理・ログ・運用の入り口 | 例外設計、構造化ログ、Context ファサード、調査の疑似体験 |
| 7 | Webセキュリティ実践 | OWASP文脈、XSS/SQLi/CSRF/IDOR/マスアサインメント、「穴を開けられる箇所」 |
| 8 | コードレビュー(個人版) | レビューする側の練習、レビューされる側の作法、AIレビュー活用 |
| 9 | 総合演習:実務の作法で一周 | ブランチ→設計メモ→テスト→実装→PR→セルフ/AIレビュー→CI |
実務力編修了時のレベル:他人のコード・現実の負荷・セキュリティに対応できる、ミドルの入り口。
具体的には、こう考えてください。
| できるようになる | 既存プロジェクトに入り、チケット単位の機能追加・バグ修正をテスト付きで出せる。N+1やインデックス不足を指摘されたら自分で計測して直せる。セキュリティレビューの指摘の意味が分かる。PRの粒度とレビューの受け答えが成立する |
| まだできない | アーキテクチャの選定。中規模以上の設計を白紙から引く。SPA構成(Inertia等)の案件に単独で入る。本番障害の一次対応 |
SPA 構成のギャップは、第4部フロントエンド編で埋めます。 実務力編まででサーバー側の土台が揃っているので、第4部で学ぶのは画面の作り方だけです。
体感として実務半年〜1年分を、コードを壊す恐怖なしに先取りする教材です。「テストがないと怖くて触れない」という感覚を、実務に出る前に身につけられるのが最大の価値だと考えています。
教材形式の変化:基礎編は完全手順書、発展編は後半から自力実装、実務力編は「課題+観点リスト+模範解答は別冊」が基本。資料の中心がコードから判断基準へ移っていきます。
番外編(実務頻出機能)
独立した回として、指定タイミングで差し込みます。
| 番外編 | タイトル | 前提 | 差し込み推奨位置 |
|---|---|---|---|
| 1 | ファイルアップロードとStorage | 発展編第3回まで(Factory を使うため) | 実務力編第7回(セキュリティ)の前 |
| 2 | パスワードリセットとメール確認 | 発展編第5回まで | 発展編第5回の後ならいつでも |
| 3 | サービスコンテナと依存性注入 | 実務力編第4回まで | 実務力編第4回のあと(いつでも可) |
| 4 | 既存コードを読むための Eloquent 語彙 | 発展編第3回まで | 実務力編第3回のあとが繋がりやすい |
| 5 | 副作用と横断的関心事の置き場所 | 発展編第5回まで | 番外編4のあとが繋がりやすい |
TypeScript編(型を扱う力)全5回
Laravel をほとんど使わない独立コースです。ブラウザも開かず、コンテナの中でコマンドラインだけを使って「型」に集中します。最終回だけ、Laravel が返す JSON に型と検証を付けて既存のアプリと接続します。
| 回 | タイトル | 主なトピック |
|---|---|---|
| 1 | なぜ型を書くのか(型の正体) | tsc と tsx、型はコンパイル時に消える、PHP の型との対応 |
| 2 | 基本型と null 安全 | プリミティブ、union、リテラル型、null と undefined、?. と ?? |
| 3 | オブジェクトと構造的部分型 | type、名前ではなく形で判断する、readonly、as const、分割代入 |
| 4 | 配列とジェネリクス | 壊す操作と壊さない操作、イミュータブル更新、Omit / Pick / Partial |
| 5 | 境界を守る | unknown、型ガード、zod による実行時検証、API レスポンスの検証 |
- 前提:発展編第6回まで(app コンテナに Node.js 22 が入っている状態)。実務力編と並行して進められます
- 急ぐ人へ:第1〜3回まででフロントエンドの学習を始められます。第4〜5回は必要になってから戻っても構いません
- PHP 経験者向けの近道:PHP 8 の型宣言・PHPStan の知識がそのまま使えるよう、全編を PHP との対比で構成しています。本当に新しいのは「型が実行時に消える」ことと「名前ではなく形で判断する」ことの2点だけです
第4部 フロントエンド編(つなぐ力)全8回
タスク管理アプリの画面だけを、React + Inertia で作り替えます。 認証もルーティングもバリデーションも Policy も、いま動いているものをそのまま使います。
| 回 | タイトル | 主なトピック |
|---|---|---|
| 1 | Vite 開発サーバーと、これから作るもの | Docker 上の HMR、public/hot、なぜ Inertia か |
| 2 | Inertia を導入する | 導入手順、Inertia::render、props の送りすぎに気づく |
| 3 | JSX とコンポーネント | Blade と向きが逆、.map() と key、<x-button> の移植 |
| 4 | 状態とフック | useState、イミュータブル更新、useEffect を書かない設計 |
| 5 | フォームと検証 | useForm、FormRequest がそのまま効く、フラッシュの共有 |
| 6 | 画面遷移と永続レイアウト | <Link>(転送量が約 1/12)、永続レイアウト、ページネーション |
| 7 | props 設計 — 認可と性能 | 隠すことと止めることの違い、props とクエリの対応、遅延 props |
| 8 | テストと CI | テストの3つの層、Vitest、CI に型検査とテストを組み込む |
- 前提:実務力編修了後、かつ TypeScript編 第1〜3回まで完了していること
- 到達点:実務で見かける Laravel + Inertia + React 構成のコードを読み書きできる
付録(副読本)
| 付録 | タイトル | 使い方 |
|---|---|---|
| A | 困ったときの調査手順チートシート | 基礎編第2回で配布し、全編で手元に置く |
各回の共通テンプレート
各回は次の構造で統一されています(最終回は「次回予告」に代えて振り返りと次の部への案内を、番外編は「関連する回」を置きます)。
- 今回のゴール(箇条書き)
- 前提条件
- 本編(手順 or 課題。
✅ 動作確認を随所に配置) - コラム(背景知識・実務での扱い)
- つまずきポイント Q&A
- チャレンジ課題(答え合わせは次回以降の本文で回収されます)
- 次回予告 / 関連する回
学習を最大化するための運用メモ
- チャレンジ課題の実施率が到達度を左右します。写経して終えた人と、課題まで自力でやり切った人では到達点が大きく変わります。課題をやった前提の記述が後の回に出てくるので、そこが答え合わせになります
- コミットしながら進めてください。基礎編第1回からの習慣にすると「壊しても戻れる」ので、思い切って手を動かせます
- 発展編第8回・実務力編は形式が探検/演習寄りです。新機能(PHP Attributes、AI SDK)はAPIが変わり得るため、実施時点の公式ドキュメントを正とし、固定コードは載せていません
スコープ外(この連載では扱わないもの)
「載っていない=重要でない」ではありません。修了後の次の一歩として、意識的に選んでください。
- Livewire — フロントエンド編は Inertia + React を採る方針です。PHP だけで書ける Livewire は扱いません(第4部第1回で3つの選択肢を比較しています)
- サーバーサイドレンダリング(SSR) — 初回表示の速さと SEO が必要になったときに検討してください
- E2E テスト — ブラウザの実体を用意する負担が大きいため導入していません。判断基準はフロントエンド編第8回で扱っています
- 状態管理ライブラリ — 画面をまたいで持ち回る状態が増えてから。まずは props と
useStateで足りないかを疑ってください - リアルタイム通信(Reverb / WebSocket)
- 多言語化(本格的なi18n)
- マイクロサービス的なアーキテクチャ
- 本番デプロイの実作業(環境依存が大きいため、別途1回設けることを推奨)
ファイル一覧
基礎編 laravel-hands-on-01.md 〜 laravel-hands-on-08.md発展編 laravel-advanced-01.md 〜 laravel-advanced-08.md実務力編 laravel-professional-01.md 〜 laravel-professional-09.md番外編 laravel-extra-01-file-upload.md ← 発展編第3回以降、実務力編第7回の前までに laravel-extra-02-password-reset.md ← 発展編第5回のあとに差し込み laravel-extra-03-service-container.md ← 実務力編第4回のあとに差し込み laravel-extra-04-eloquent-idioms.md ← 発展編第3回以降、実務力編第3回のあとが繋がりやすい laravel-extra-05-events-middleware.md ← 発展編第5回以降、番外編4のあとが繋がりやすいTypeScript編(独立コース) laravel-ts-01.md 〜 laravel-ts-05.md ← 発展編第6回以降ならいつでも。実務力編と並行可第4部 フロントエンド編 laravel-frontend-01.md 〜 laravel-frontend-08.md付録 laravel-appendix-debugging.md ← 基礎編第2回で配布。全編で手元に置く README.md ← このファイル(全体マップ)実務力編の第4回以降では、講師から**「問題だらけのアプリ」**が別途配布されます。受け取ってから進めてください。