Software engineering from east direction

六本木一丁目で働くソフトウェアエンジニアのブログ

「第三回ボトムアップドメイン駆動設計」でDDD(主に軽量DDD)について聞いてきた | 聴講レポート

「第三回ボトムアップドメイン駆動設計」という成瀬さん(@nrslib)さんによる、ドメイン駆動設計のイベントに参加してきました。 曖昧な理解でふわふわしていた箇所が、かなりつながった感覚があって大変ありがたい会でした。

nrs-seminar.connpass.com

nrslib.com

公開していただいている資料

イベント中に話されていた資料はtwitterでシェアしていただいていました。

資料内での補足

ドメインとは

集約の範囲

変更はトランザクションの単位という話をよく聞くが逆。変更の単位だから結果、トランザクションの単位になる

当日の質問

できるならやったほうがいいが、チームの反発具合によるところがある。ただ、有益だと思える箇所ならやったほうがいい。 ブログの本文とかただのIDとか別にそこまでやらなくてもいいねっていう箇所は勘所。

実際に入れていくなら、今回の例の「製品コード」とか複数組み合わせがあってクラスにしたほうがいいといった、目に見えてメリットを感じやすいところからやる

アプリケーションサービスをどういう単位?

非常に難しい問題。メソッド一つ一つクラスにする。「サークルのユーザーを取る」ときにサークルサービス?ユーザーサービス?そもそもクラスを分けちゃう。「サークルのユーザーを取る」というメソッドをもつクラスにする

ドメインサービスがビジネスロジックを書く場所か?

いろんなエンティティなどを強調させるのであれば、それはアプリケーションサービス。 ドメインサービスはエンティティ・バリューオブジェクトでは不自然なものをロジックにする

検索など複雑なSQLが必要な場合

CQRSの概念を活用する。アプリケーションサービスの直下に複雑なSQLを書いてしまう。Queryはフロントの都合などが多い。その場合はREADMODELとしてのアプリケーションサービス。

まとめ

理解が曖昧な状態で軽量DDD実践していたので、理解が深まり今のコードを改めて見直そうと思います。