DDD の全体像: 戦略的設計と戦術的設計
DDD には「どこに線を引くか」を決める戦略的設計と、「線の内側をどう作るか」を決める戦術的設計の 2 つの層があります。この 2 つの関係、戦術パターンだけを導入したときに起きること、本ガイドがどの層をどこで扱うかを地図として示します。用語の定義は次章以降が担当します。
DDD には「どこに線を引くか」を決める戦略的設計と、「線の内側をどう作るか」を決める戦術的設計の 2 つの層があります。この 2 つの関係、戦術パターンだけを導入したときに起きること、本ガイドがどの層をどこで扱うかを地図として示します。用語の定義は次章以降が担当します。
DDD の戦術的設計で使う中核用語を整理。ドメイン / ドメインオブジェクト / ドメインモデル / ビジネスルールという 4 語の定義、エンティティと値オブジェクトの違い、整合性の境界としての集約、永続化を抽象化するリポジトリの役割を具体例で解説します。
Laravel 未経験でも大丈夫。Vue/React など SPA 開発者を対象に、API バックエンドとしての Laravel とドメイン駆動設計 (DDD)・クリーンアーキテクチャをステップバイステップで解説する全 26 章のガイド。境界づけられたコンテキストとイベントストーミングによるモデリングから、値オブジェクト・エンティティ・集約・リポジトリ、Laravel プロジェクトでの実装パターン・トランザクション・テスト・認証、CQRS と Event Sourcing・メッセージングまでを網羅します。
従来の Laravel MVC とクリーンアーキテクチャを比較し、プレゼンテーション / アプリケーション / ドメイン / インフラの 4 層構成、依存性逆転の原則 (DIP)、ディレクトリ構成、Eloquent Model とドメインエンティティの分離を解説します。
DDD のドメインサービス (Domain Service) を割引計算・在庫引当・送料計算の実装例で解説。複数集約にまたがりインフラ非依存のロジックを配置する判断基準、ユースケース (アプリケーションサービス) との違い、貧血ドメインモデルを避ける設計指針をまとめます。
従来の Laravel MVC で複雑なビジネスロジックを扱うと生じる Fat Controller・Fat Model・ロジック散在の問題を整理し、DDD を採用することで得られる「ビジネスルールの明確化・変更対応力・テスタビリティ・チームコミュニケーション」の 4 つのメリットを解説します。
Vue/React など SPA 開発経験者に向けた Laravel での DDD・クリーンアーキテクチャ入門。本書で学べること、題材にする EC サイトの注文システム、想定する SPA + API アーキテクチャ、DDD とクリーンアーキテクチャの全体像と参照書籍を紹介します。
HTTP リクエスト/レスポンスを扱うプレゼンテーション層の設計を解説。FormRequest による形式バリデーション、ドメイン層との役割分担、Command への変換、薄い Controller (Thin Controller)、API Resource、ミドルウェア認証と Policy 認可をまとめます。
本ガイドの導入と全 6 部 (DDD の戦略的設計 / 戦術的設計 / クリーンアーキテクチャ / 実践テクニック / イベント駆動への発展 / 総合実践) の要点を整理し、値オブジェクト → ユースケース層 → リポジトリ → ドメインイベントという段階的導入のロードマップ、よくある質問、推奨書籍・コミュニティ・学習パスをまとめます。
アプリケーション層 (ユースケース層) の設計を解説。ドメインオブジェクトの調整・トランザクション管理・入出力変換の責務、CQS 原則による Command / Query 分離、Command オブジェクトと DTO、Query 専用サービス、単一責任などの設計指針をまとめます。
これまで学んだ DDD・クリーンアーキテクチャを統合し、注文作成・確定 API を題材に 4 層 (プレゼンテーション / アプリケーション / ドメイン / インフラ) を実装。各層の責務、データ変換の流れ、層別テスト (ドメイン / UseCase / Repository) を通して全体像をまとめます。
DDD の集約 (Aggregate) を Order 集約を題材に解説。集約ルートを唯一のアクセス起点とする理由、集約境界の決め方 (ライフサイクル / 整合性 / トランザクション / 参照)、即時整合性と結果整合性の使い分け、集約間は ID 参照、スナップショットの考え方をまとめます。