なぜ、難しいか
- 基本的に抽象的なことを扱っている上に、前提や語彙の定義があいまいなこと
- 歴史が浅いこと
- 具体例を表に書きづらいこと
DDDの落ち着き方
1. 技術や用語、概念などから、一部だけ盗む
ValueObject、Repository、Dependency Injection、テスタビリティ、ユビキタス言語、などの概念や用語だけを盗みます。
例えば、永続化するわけではなく各テーブルにamountと単位および単位に関する計算ロジックがあるなら、それを1つのドメインモデルとしてValueObjectの形でAmountモデルを作って、そこに集約させたら扱いやすいかも知れません。どうもamountに関するロジックが散らばっているが、直し方がいまいち分からないし、大勢が参加するPJだといちいち語彙の統制が取れないという時に、ValueObjectとしてAmountモデル¥を利用したらいいなと気づくことができます。
FileやIO、外部API、DBやRedis、別プロセスといった外部への通信は、だいたいレポジトリ層にまとめておくと、依存性の注入によりテスタビリティを上げられるでしょう。一旦それでいいと考えます。