ドメイン駆動設計 とは
ビジネスドメインに基づく設計
DDDとは
ドメイン駆動設計(DDD)は、ビジネスドメインのモデリングと開発者とドメインエキスパートの緊密なコラボレーションに焦点を当てたソフトウェア開発アプローチです。
戦略的設計
| 概念 | 説明 | |------|------| | 境界づけられたコンテキスト | ユビキタス言語を持つモデル境界 | | ユビキタス言語 | チームとビジネスの共通言語 | | コンテキストマップ | コンテキスト間の関係マップ | | サブドメイン | サブドメイン(コア/サポート/汎用) |
戦術的設計
| パターン | 目的 | |----------|------| | エンティティ | 同一性を持つオブジェクト | | 値オブジェクト | 不変の値オブジェクト | | 集約 | 関連エンティティのグループ | | 集約ルート | 集約へのエントリポイント | | リポジトリ | 集約へのアクセス | | ドメインサービス | エンティティ外のビジネスロジック | | ドメインイベント | ドメイン内のイベント | | ファクトリ | 複雑なオブジェクトの生成 |
サブドメインの種類
- コアドメイン — 競争優位性
- サポートサブドメイン — コアをサポート
- 汎用サブドメイン — 標準ソリューション
統合パターン
| パターン | 説明 | |----------|------| | 共有カーネル | コンテキスト間の共有コア | | 顧客-供給者 | 顧客-供給者関係 | | 順応者 | 上流モデルへの準拠 | | 腐敗防止層 | 外部モデルからの保護 | | オープンホストサービス | コンテキストの公開API |
DDDを適用するタイミング
- 複雑なビジネスロジック
- 長期プロジェクト
- ドメインエキスパートへのアクセス
- 設計投資の準備ができたチーム