いくら人の話を聞いてもピンと来ないし、DDD本を読んでも全然頭に入らないので、自分なりに解釈してまとめることにしました。よろしければ、どぞ。
www.slideshare.net
ドメインからモデルを抽出→モデルの振る舞いと情報を定義→サービスに汎化させる、という流れを取っています。行間多めです。さーせん。
ドメインというのは、どうも2つの性質を持っている言葉のようだと思いました。
- その世界で現状行われていること
- 行われていることに対する希望や不平不満からくる要求(関心事と言うらしい)
上記の定義がだいだいあってるとすると、「その世界で現在進行中の物事及びそれに付随する要求をキチンと実装できる設計にしようぜ」って話がドメイン駆動設計の総論で良いのでは、というのが1つ。
で、ドメイン(特にいまやってる物事)を抽象化するには、「で、それってどういう情報をやりとりしてるんだっけ」「どんな意味があるんだっけ、その情報」って話になりますよね。それをモデルにして、モデルに対してプロパティとメソッドを与えていくのが、基本線なんじゃないでしょうか。オブジェクト指向やん、要は。
なので、ドメインっていうものをモデルに抽象化してオブジェクト指向の考え方を元に分割統治することで秩序を保ちながらドンドンできる事を進化させましょう、っていうのがもう少し実装に寄り添ったドメイン駆動設計で目指すことのように思いました。
未だによくわかりませんが、「ドメイン駆動設計は、みんなの心のなかにありまぁす!」っていう話は飽きたので、こんな感じでええんちゃうのという資料です。
ご興味のある方、ご自由にお使いくださいませ。