『アーキテクチャ ディスカッション Vol.1のときにめっちゃ事例を話されていたnrsさん独演会的な勉強会であるボトムアップドメイン駆動設計 - connpass に行ってきたのでメモというか感想
発表
しりょうです。ごさっしゅうください。https://t.co/1bqJ8e2MH7https://t.co/X4PEFpgxS2#bu_ddd
— nrs (@nrslib) 2018年10月23日
大ボリューム前後編の資料
発表メモ
- エリック・エヴァンス本に関して「パターン」と「マインド」という切り出し方をして、「パターン」の部分に関して実装的な部分の内容をよりぬきでC#のコードに落として説明。
- ValueObjectはもちろん、リポジトリの説明のためにDependency injection の話にも触れて、実装例やその際に使う実装手法を交えながらわかりやすい順番で話されていた感じ。
- 最後の話の締め的にはDDDというよりかはレイヤードアーキテクチャ、ヘキサゴナルアーキテクチャの文脈で今日の実装例を締めくくった。
感想
DDDに出てくる実装寄りの話を「パターン」という囲み方でとっつきやすい形に説明されていた感じでした。ただ御本人もお話されていたようにドメイン駆動設計でよく登場するユビキタス言語のような概念部分の話は「マインド」という形で切り分け、そこの理解は実際の書籍を読んでねという感じ分けてました。
この切り方、あんざいゆきさんがDroidKaigiで話したものにおきかえると今回の「パターン」の部分が「戦術的設計」で、「マインド」の部分が「戦略的設計」にあたるのかなという印象でした。
- Y.A.M の 雑記帳: ドメイン駆動設計について DroidKaigi 2017 で登壇しました。 より
ドメイン駆動設計の本質的な部分は今回で言うところの「マインド」のほうがウェイト大きいかなと思っていて、それを実践していく上でモデリング技術力であったり、ドメインエキスパートとのコミュニケーションフロー(ユースケース駆動開発とか)に発展していくと思うので、今日の内容はそういう意味でも「エリック・エヴァンスのドメイン駆動設計の本を読むにあたって、先に知っておきたいプログラミングテクニックガイド」という感じだったなという印象です。
そこに関しては「軽量DDD」という形であるということも発表内でも、Twitterでも発表者ご当人がお話されていました。
さて最後に皆さんにお伝えしましたが今日お話しした内容はドメイン駆動設計ではありません
— nrs (@nrslib) 2018年10月23日
軽量 DDD と呼ばれるものです
ドメイン駆動設計の本質を理解する下地を作っただけです
上記のような感想を書きましたが、今日の話は面白くなかったとかためにならなかったとかでは全然なく、実際に値オブジェクトやエリック・エヴァンス文脈のエンティティはどう使うのか、ドメインモデル貧血症ってどういう状態なのか、というようなところが順を追って説明されたのでとてもわかりやすく、また実践的に使っているテクニックが落とし込まれていてとても勉強になりました。
「ドメイン駆動開発で扱われているこれって、実コードにするとどうなるの?」みたいなときに取り出しやすい資料を作っていただけてありがたいかぎりな感じでした。
(あと加えて書くとするなら、「マインド」の部分のドメイン駆動設計を知りたければもちこ本を読むと、エリック・エヴァンス本を読む前にはいいかもという気持ちにもなりました。)
おまけ
会場で質問したことにかとじゅんさんがレスポンスされており、なるほどなー!と思ったのでメモ
個人的には、そういう解釈の仕方をすると混乱のもとなので、全部エリックエヴァンスのという接頭辞をつけた方がよいかと https://t.co/xD9wJT63Oy
— かとじゅん (@j5ik2o) 2018年10月23日