はじめに: Laravel × DDD × クリーンアーキテクチャ実践ガイド
この本で学ぶこと
本書は、Vue/ReactなどでSPA開発経験があり、バックエンドAPI開発を学びたい方を対象に、Laravel を使ったドメイン駆動設計(DDD)とクリーンアーキテクチャの考え方をステップバイステップで解説します。
第2章「Laravel API開発の基礎」で Laravel の基本を学んでから、DDD の世界に進みます。
本書を読み終えると、以下のことができるようになります。
- LaravelでAPIバックエンドを構築できる
- DDD の主要概念(エンティティ、値オブジェクト、集約、リポジトリ)を理解し、実装できる
- Laravel プロジェクトに DDD の考え方を適用できる
- Eloquent Model とドメインエンティティの違いを理解し、適切に使い分けられる
- 複数テーブルへの保存やトランザクション管理を適切に設計できる
本書の想定アーキテクチャ
本書では、SPAフロントエンド + APIバックエンドのアーキテクチャを想定しています。
本書の対象読者と前提知識はガイドのトップページにまとめています。読み進める前に一度ご確認ください。
本書では PHP 8.2 以上の構文(readonly、enum、コンストラクタプロモーションなど)を使用します。第2章でこれらの構文も解説するので、PHP 7 系の経験しかない方でも大丈夫です。
本書の構成
本書は導入 + 6 部構成です。各部のテーマと収録章はガイドのトップページの構造図・学習の流れにまとめています。
本書で使用する例
本書では、ECサイトの注文システムを題材にします。
この題材を通じて、DDD の各概念をどのように実装へ落とし込むかを学びます。
サンプルコードについて
本書のサンプルコードは、以下の環境を想定しています。
- PHP 8.2 以上
- Laravel 11 以上
コードは説明のために簡略化している場合があります。実際のプロジェクトでは、エラーハンドリングやバリデーションなどを追加してください。
DDDとクリーンアーキテクチャの概要
DDDとは何か
DDD(Domain-Driven Design:ドメイン駆動設計)は、エリック・エヴァンスが提唱した、ビジネスロジックを中心に据えたソフトウェア設計手法です。
「ドメイン」とは、ソフトウェアが解決しようとするビジネス領域や問題領域のことを指します。例えば、EC サイトであれば「注文」「在庫管理」「決済」などがドメインに該当します。
DDD の考え方は以下の通りです:
- ビジネスロジックをコードの中心に置く:データベースやフレームワークではなく、ビジネスルールを最優先に設計する
- ドメインエキスパートとの対話:ビジネス知識を持つ人とエンジニアが協力し、共通の言語で設計する
- コードでビジネスを表現:「このシステムが何をするのか」がコードから読み取れるようにする
従来の開発では「どうやって保存するか(DB 設計)」から始めがちですが、DDD では「何をするシステムなのか(ビジネスロジック)」を最初に考えます。ビジネスルールが DB スキーマの都合から独立するため、要件が変わってもテーブル設計に引きずられずに直せます。
クリーンアーキテクチャとは何か
クリーンアーキテクチャは、ロバート・C・マーチン(Uncle Bob)が提唱した、ビジネスロジックを外部依存から隔離するアーキテクチャパターンです。
クリーンアーキテクチャの原則:
- 依存関係の方向:外側の層(UI、DB)は内側の層(ビジネスロジック)に依存するが、内側は外側を知らない
- ビジネスロジックの独立性:フレームワークやデータベースが変わっても、ビジネスロジックは影響を受けない
- テスタビリティ:外部依存を切り離せるため、単体テストが容易になる
本書では、DDD の考え方をクリーンアーキテクチャで実装していきます。
参照リソース
本書を読み進める上で、以下のリソースも参考にしてください。
Laravel公式ドキュメント
- Laravel Documentation - Laravel 公式ドキュメント(英語)
- Laravel 日本語ドキュメント - 日本語翻訳版
DDDの原典
-
エリック・エヴァンス著『ドメイン駆動設計』(通称:DDD 本、青本)
- DDD の生みの親による原典。深く学びたい方におすすめ
- 翔泳社から日本語訳が出版されています
-
ヴォーン・ヴァーノン著『実践ドメイン駆動設計』(通称:IDDD 本、赤本)
- 実装に重点を置いた DDD 解説書。コード例が豊富
クリーンアーキテクチャ
- ロバート・C・マーチン著『Clean Architecture』
- クリーンアーキテクチャの提唱者による解説書
- KADOKAWA から日本語訳『Clean Architecture 達人に学ぶソフトウェアの構造と設計』が出版されています
上記の書籍は理論的な内容が中心ですが、本書はLaravelでの実装に特化しています。理論書と合わせて読むと、理解が深まります。
それでは、DDD の世界へ踏み出しましょう。