- URL: # Domain-Driven Hexagon
- 著者: @Sairyss
いつ読むか?
- ポートアンドアダプターのリファレンス実装として
読書メモ
対象プロジェクト
複雑なビジネスロジックを持つ大規模プロジェクト向け。シンプルな CRUD には過度な抽象化。
コアパターン
- CQS: Command(状態変更)と Query(読取)を分離
- Aggregate: ルートエンティティを通じた一貫性境界。外部からはルートのみ参照
- Domain Event: Aggregate 間は直接呼び出しではなくイベントで疎結合化
プロジェクト構造
Application Core:
- Domain Layer (Entities, Aggregates, Domain Services)
- Application Layer (Use Cases, Commands/Queries, Ports)
外側:
- Interface Adapters (Controllers, DTOs)
- Infrastructure (Repositories, External Adapters)
モジュールは「垂直スライス」で整理。モジュール間は Facade/Mediator 経由で通信。
重要な設計原則
- 依存性の方向: 常に内側(Domain)を指す
- Port: インフラ依存を抽象化。テスト時のモック化が容易
- Entity: コンストラクタで検証、意図的なメソッド名を使用(getter/setter より)