Laravel × DDD × クリーンアーキテクチャ実践ガイド
このガイドについて
Vue/React など SPA 開発経験者 を対象に、Laravel を使ったドメイン駆動設計 (DDD) とクリーンアーキテクチャをステップバイステップで学ぶ全 26 章のガイドです。Laravel の基礎から始め、どこに境界を引くかを決める戦略的設計、境界の内側を作る戦術的設計、クリーンアーキテクチャの実装、運用品質、イベント駆動への発展、総合実践までを連続した流れで身につけます。
このガイドの特徴
- 段階的: Laravel 基礎 → 戦略的設計 → 戦術的設計 → アーキテクチャ実装 → 運用テクニック → イベント駆動への発展 → 総合実践の順で学べる
- Laravel 未経験でも OK: 第 2 章で Laravel API 開発の基礎を解説してから DDD に進む
- 一貫した題材: EC サイトの注文システムを題材に、各概念が実装に落ちる過程を追える
- モダン PHP 前提: PHP 8.2 以上 (readonly / enum / コンストラクタプロモーション) と Laravel 11 以上を対象
執筆時点のバージョンについて
本ガイドは Laravel 11 / PHP 8.2 を前提に執筆しています。現行の最新版は Laravel 13 (2026 年 3 月リリース、PHP 8.3 以上が必要) で、サービスプロバイダの登録先など構成が変わっている箇所があります。DDD・クリーンアーキテクチャの設計上の考え方は版に依存しませんが、Laravel 固有の設定・記法は公式ドキュメントで最新版を確認してください。Laravel 13 前提で API 開発の基礎から追いたい場合は Laravel API 開発ガイド を参照してください。
ガイドの構造
学習の流れ
ガイドは導入 + 6 部構成で、Laravel の基礎から DDD の実践まで段階的に学べます。
導入
| 章 | 扱うこと |
|---|---|
| 01 はじめに | 本ガイドの狙いと、想定するアーキテクチャの全体像 |
| 02 Laravel API 開発の基礎 | Controller・FormRequest・Eloquent・DI |
第 1 部 DDD の戦略的設計
| 章 | 扱うこと |
|---|---|
| 03 なぜ DDD か | Fat Controller / Fat Model の限界 |
| 04 DDD の全体像 | 戦略的設計と戦術的設計という 2 つの層 |
| 05 戦略的設計 | サブドメイン・ユビキタス言語・コンテキストマップ |
| 06 イベントストーミング | 業務からモデルを見つけるワークショップ |
第 2 部 DDD の戦術的設計
| 章 | 扱うこと |
|---|---|
| 07 DDD の基本概念 | ドメインオブジェクト・集約・リポジトリ |
| 08 値オブジェクト | 不変でビジネスルールを内包するドメインオブジェクト |
| 09 エンティティ | 識別子とライフサイクルを持つドメインオブジェクト |
| 10 集約 | 整合性の境界と集約ルート |
| 11 ドメインサービス | エンティティに属さないビジネスロジック |
| 12 ドメインイベント | 集約間の疎結合な連携 |
| 13 OOP と DDD の戦術パターン | 原則がどのパターンに現れるか |
第 3 部 クリーンアーキテクチャと Laravel
| 章 | 扱うこと |
|---|---|
| 14 Laravel での DDD アーキテクチャ | 4 層構成と依存性逆転 |
| 15 ユースケース層の設計 | Command / Query 分離と DTO |
| 16 プレゼンテーション層の設計 | FormRequest・薄い Controller・API Resource |
| 17 リポジトリパターン | ドメインと永続化の境界 |
| 18 ドメインモデルとテーブル設計 | マッピングとインデックス |
第 4 部 実践テクニック
| 章 | 扱うこと |
|---|---|
| 19 トランザクション管理 | 整合性の境界をどこに置くか |
| 20 エラーハンドリング | ドメイン例外と HTTP ステータスの対応 |
| 21 テスト戦略 | テストピラミッドと層別テスト |
| 22 認証・認可設計 | JWT と層別の責務分担 |
第 5 部 イベント駆動への発展
| 章 | 扱うこと |
|---|---|
| 23 CQRS と Event Sourcing | 読み書きを分ける設計と、履歴を正本にする設計 |
| 24 メッセージングと pub/sub | プロセスをまたいでイベントを届ける |
第 6 部 総合実践
| 章 | 扱うこと |
|---|---|
| 25 実践:注文システムの実装 | 全層を貫く実装例 |
| 26 まとめと次のステップ | DDD の段階的導入 |
対象読者
- Vue/React など SPA 開発経験があり、バックエンド API 開発を学びたいフロントエンドエンジニア
- Laravel 未経験でも、PHP の基本文法がわかる方
- 「Fat Controller」「Fat Model」の問題を感じている方
- ビジネスロジックをどこに書くべきか迷っている方
- より保守性の高いコードを書きたい方
前提知識
| 必須度 | 知識 |
|---|---|
| 必須 | PHP の基本文法 (クラス、インターフェース) |
| 必須 | データベースの基本 (テーブル、リレーション) |
| 必須 | API の基本概念 (HTTP メソッド、JSON) |
| 推奨 | オブジェクト指向の基本概念 (カプセル化、継承、ポリモーフィズム) |
| 不要 | Laravel の経験 (本ガイドで基礎から解説) |
推奨される読み方
- 初学者: 上から順番に読み、各章のコードを実際に動かしながら進める
- Laravel 経験あり: 第 2 章を流し読みし、第 3 章「なぜ DDD か」から本格的に始める
- 辞書的に使いたい: 上の章立てから該当する章を直接開く
それでは はじめに から始めましょう。