🗺️
サブドメイン(コア・サポート・汎用)
ドメインをコア・サポート・汎用の3種に分類し、投資対効果を最大化する戦略的設計の出発点
解決する課題
大きなドメインをそのまま設計しようとすると、すべてに同じ力をかけてしまい、本当に重要な部分(競争優位)に集中できない。
「注文」「在庫」「認証」「通知」を同等に扱っていると、リソースが分散して自社の強みが生まれない。
概念
ドメインを問題領域で分割したものがサブドメイン。Vernon は3種類に分類する。
| 種別 | 定義 | 例 | 投資方針 |
|---|---|---|---|
| コアドメイン | 競争優位の源泉。ここでしか作れない | ECの「レコメンドアルゴリズム」「価格戦略」 | 自前で作る。最高の人材を投入 |
| サポートサブドメイン | コアを支えるが汎用ではない業務固有の機能 | 「商品カタログ管理」「在庫追跡」 | 自前 or アウトソース。適切なコスト |
| 汎用サブドメイン | どの会社でも同じ仕組みが必要 | 「認証・認可」「通知メール」「決済」 | 買う(既製品・OSSを使う) |
なぜ重要か
コアドメインを見極めることで:
- 限られた開発リソースを最も価値ある場所に集中できる
- 汎用サブドメインに Auth0・Stripe 等を使うことで時間を節約できる
- チームの自律性と責任範囲が明確になる
背景・思想
Evans(青本)はコアドメインへの集中を説いたが、何がコアドメインかの判断基準が曖昧だった。Vernon(IDDD)はこの3分類を明示的に提示し、経営判断と技術設計を結びつけた。
「このシステムで自社が他社より優れていなければならない機能は何か?」という問いがコアドメインの特定につながる。
適用の考え方
1. ドメインエキスパートとともにドメイン全体を書き出す
2. 「これは他社でも同じか?」→ YES なら汎用
3. 「これは自社の競争優位か?」→ YES ならコア
4. それ以外はサポート
関連概念
- → 境界づけられたコンテキスト(サブドメインに境界を引く)
- → コンテキストマップ(複数のコンテキスト間の関係)
- → DDDはなぜ必要か
- 1. 🗺️サブドメイン(コア・サポート・汎用)
- 2. 🗾コンテキストマップ
- 3. ⬡六角形アーキテクチャ(ポートとアダプター)
- 4. 🪪エンティティ(Entity)
- 5. ⚙️ドメインサービス(Domain Service)
- 6. 📣ドメインイベント(Domain Event)
- 7. 🫧集約(Aggregate)
- 8. 📐集約の設計原則(Vernon の4ルール)
- 9. 🗄️リポジトリ(Repository)
- 10. 🏭ファクトリ(Factory)
- 11. 📦モジュール(Module)
- 12. 🎛️アプリケーションサービス(Application Service)
- 13. 🔌境界づけられたコンテキストの統合
- 14. ⚡CQRS(コマンドクエリ責任分離)
- 15. 📜イベントソーシング(Event Sourcing)
出典: 実践ドメイン駆動設計(Vaughn Vernon)第2章