『実践ドメイン駆動設計』を読んで社内勉強会をやった
By gushernobindsme at
経緯
JJUG2017fall 「DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話」 - little hands' lab
JJUG2017Fall で「DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話」というセッションを見て、その発表をした @little_hand_s さんとお話させていただいて、「DDDってすごい!俺もやる!」という気持ちになったのがきっかけ。
ちょうど同じくらいの時期に自社サービスの追加開発の話があって、
- 既存のコードベースとは別のリポジトリで開発できそう
- どうせやるなら理想の設計を追求したい
- DDD ってやつのどこがいいのかいっちょ教えてくれや泥水さんよぉ
という流れで、開発チームのみんなを集めて社内勉強会をする運びになりました。
進め方
勉強会の教材に使ったのはヴァーン・ヴァーノンの『実践ドメイン駆動設計』。
『エリック・エヴァンスのドメイン駆動設計』とどちらにしようか悩んだんだけど、
- 前に一度読んだことがあるものの、雲を掴むような話がずっと続いて辛かった
- 「『実践』の方が圧倒的にわかりやすい」という話を @little_hand_s さんから聞いてた
という事情を加味してこちらにしました。『エリック・エヴァンスのドメイン駆動設計』に興味がある人は過去のブログ記事を読んでみてください。
構成
『実践ドメイン駆動設計』の章立てに沿って、三部構成で勉強会を実施しました。
- 第1部:DDD の概要(第1章)
- 第2部:戦略的設計(第2章〜第3章)
- 第3部:戦術的設計(第4章〜第14章)
まずは DDD を導入するとどういうメリットがあるのか(あるいはオーバヘッドがあるのか)を理解してもらい、その上で、「戦略的設計」と「戦術的設計」という二つのツールの役割と使い方を説明する、という構成です。『実践ドメイン駆動設計』の受け売りですね。
勉強会には『実践ドメイン駆動設計』を全く読んでいない人にも参加してもらったんですが、この二つをはっきり分けて説明する構成にしたお陰で、みんな脱落することなく最後まで完走することができました。DDD に興味のあるデザイナ氏も遊びに来てくれたりして、和気藹々とした会になって良かったです。総スライド数155ページという最悪の構成で無茶のある進行をしたのに、みんなブチ切れることなく話を聞いてくれて本当に良かった。
全3回の勉強会を終えたあとは、ワークショップっぽい感じのコンテンツとして以下を用意しました。
- みんなで現状のコンテキストマップについて認識合わせ
- 理想のコンテキストマップを描いてみよう
「理想のコンテキストマップ」については、ホントはやりたかったんだけど、準備不足でうまく進行できなかったので割愛。とはいえ、4days の勉強会を通じて「レガシーシステムのここを直したい」「将来的にはこんな構成にしたいと思ってる」「ビジネスサイドの話をもっとたくさん聞いた方が良さそう」など、色々意見交換できたのはよかったかなと思っています。
DDD を実践することはまだできていないんですが、引き続きやっていこうと思います。おわり。