RAKUS Developers Blog | ラクス エンジニアブログ

株式会社ラクスのITエンジニアによる技術ブログです。

社内でDDD(ドメイン駆動設計)読書会を開催しました

こんにちは、id:eichisandenです。
社内の有志とDDD(ドメイン駆動設計)関連の2冊の書籍の読書会を開催したので、ふりかえって書いていきたいと思います。

1冊目:「エリック・エヴァンスのドメイン駆動設計」

最初の題材として選んだのは、DDDの原典「エリック・エヴァンスのドメイン駆動設計」です。
長いので以後は「エヴァンス本」と呼びます。
今年の1月〜6月に掛けて、計17回開催しました。

読書会をやるきっかけ

ある日の社内チャットで、エヴァンス本に挫折したことで盛り上がったのがきっかけでした。

f:id:eichisanden:20200918160012p:plain

f:id:eichisanden:20200918182059p:plain
章と書いてますが部の間違いです
かく言う自分もTweetをさかのぼると3年前に挫折していて、いつかリベンジしたいと思っていました。

良い機会なのでみんなで読書会しようと言うことになり、社内で声をかけたところ10人のメンバーが参加してくれました。

本は会社経費で購入させてもらいました。技術書としても高い部類の本に入るので非常にありがたいです。

f:id:eichisanden:20200918131624j:plain
壮観ですが本当はもっとあります

読書会の形式

そもそも私自身が読書会を主催したことが無いため色々調べた結果、この方式に決めました。
なぜこの形式にしたかと言うと、下記のような仮説があったからです。

  • 事前準備が必要だと参加者の負担が大きいのでは?
  • 誰かが講師になるスタイルだとその人に掛かる負担が大きいのでは?
  • 参加者の負担が大きいと参加が離脱していってしまうのではないか?

特に事前準備はせず(と言っても主催者の私は不安なので読みましたが)、読書会当日は数ページ程度のパートに切って、読んでは議論を数セット繰り返しました。
分からなかったことや他の人の意見を聞きたいことは付箋に書いおいて、読み終わったらホワイトボードに貼って議論しました。

f:id:eichisanden:20200918154242j:plain

やってみてどうだったか?

みんなで理解を補いながら読めるから理解しやすい

参加者の中にはDDDを実践しているチームの人や、以前にこの本やIDDD本を読んで知識がある人がいたりして、 意味が分からなかったところは他の人の解釈を聞くことで理解の助けになりました。

ただし難しいところはみんなで読んでも難しい

内容の難しさに輪をかけて文章の構造が分かりにくくて意味が掴めない箇所については、
みんなで束になって掛かっても分からないこともありました。

理解できた方が良いんですが、みんなも分からないのだから自分だけ理解力がない訳ではないと言う変な安心感もありました(笑)
これについては他の本も含め行ったりきたり何度も読むことでブレイクスルーがあるかもしれないと思いました。
もしかすると分からない文は英語の原書も併せて読むことで理解できる物もあるかもと思いました(これは実践できてませんが)

事前に読んできてもらうスタイルの方が良かったかもしれない

参加者の負担を下げたことで完走率は高くなったとも思いますが、
この本のように難易度が高い場合は、事前に読んできてもらい当日は議論に集中した方が良かったかもしれないとも思っています。

これは読書会に求める期待効果によって実施スタイルは今後は使い分ようと終わってみて思いました。

  • 技術書を読む習慣がない人にもっと本を読んで欲しい
     → 本を読む機会を作ることが目的なので当日読めば良い
  • 本の内容を深く理解するため他の人と議論したい
     → 事前に読んできてもらって議論を中心にする

2冊目:「ドメイン駆動設計 モデリング/実装ガイド」

booth.pm

今年の7月〜8月に掛けて、計8回開催しました。

読書会をやるきっかけ

エヴァンス本でモデルやユビキタス言語など戦略的な設計はなんとなくは理解できたが、具体的なイメージが湧かなかったため評判が良かったこの本を読んでみたところ良い本でしたので読書会の題材にしました。
コロナの影響でオンラインでの開催になり場所の制約がなくなったため、他拠点のメンバーにも声をかけたところ18名ものメンバーが参加してくれました。

読書会の形式

  • オンライン形式(ZOOM)
  • エクストリームリーディング形式
  • 事前にGithubのIssueに持ち回りで概要をまとめておく
  • 当日は疑問点などをSli.doに書いてもらって読み終わったら議論した

やってみてどうだったか?

エヴァンス本に比べて本の内容がスッと頭に入ってくるので、当日読むスタイルでも無理なくやれました。
本を読んでもらった後、GithubのIssueにまとめた意訳と自分の理解のDiffをとることで更に理解が進みました。
メンバーが拡大したことでDDDを実践している人も増えて、他サービスでDDDを実践して困ってることなど生きた情報が共有されて良い読書会になりました。

番外編: モデリング大会

参加者から発案で、去年にネット上で流行っていたチケット料金モデリングを読書会の集大成として皆んなでやってみました。
実際に手を動かしてみると自分の理解度合いが分かりますし、コードも書いてみないとモデルを完成させるのが難しいと言うのを肌で感じることができました。

拙作ですが、モデルには「振る舞い」まで書かない方が良いかもね、と他の参加者にフィードバックもらいました。
github.com

チケット料金モデリングはお題としてちょっと難しかった気がするので、 もっとシンプルなお題でまたやってみたいと思っています。

最後に

読書会の題材としてDDDの本は向いていて、エヴァンス本は複数人で助け合いながら読むのが良かったです。
エヴァンス本でモデリングユビキタス言語の重要性を理解した後で、噛み砕いた本で理解を深めるのは順番としては悪くなかったのではと思っています。

読書会を開催する時の参考になれば幸いです。

Copyright © RAKUS Co., Ltd. All rights reserved.