Upgrade to Pro — share decks privately, control downloads, hide ads and more …

エヴァンス本輪読会お疲れ様会を楽しむために / DDD輪読会での差分とこれから

166179f92d3bf392db9c148c2b7e6f5a?s=47 Jun Nakajima
August 28, 2021
47

エヴァンス本輪読会お疲れ様会を楽しむために / DDD輪読会での差分とこれから

エヴァンス本輪読会お疲れ様会でLTした内容です
https://ddd-community-jp.connpass.com/event/220962/

166179f92d3bf392db9c148c2b7e6f5a?s=128

Jun Nakajima

August 28, 2021
Tweet

Transcript

  1. エヴァンス本輪読会
 お疲れ様会を楽しむために
 2021/08/28 エヴァンス本輪読会お疲れ様会 Jun Nakajima

  2. エヴァンス本輪読会
 お疲れ様でした!
 2

  3. そもそもなんでLT会?
 3

  4. そもそもなんでLT会?
 4

  5. LT会を開く動機
 • みんなの学びを聴きたい、話したい
 • いろんな立場の人が常時30〜40人で輪読会に参加していた
 • 輪読会だけの時間では語れなかった何かが、それぞれある はず
 5

  6. 設計技術の暗黙知と形式知
 • 設計の技術は(言語やFWと比べて)暗黙知が多い
 6 暗黙知 形式知 形式知 形式知 それぞれ個人の経験
 世の中に出ている情報(書籍・ネットな

    ど)

  7. 設計技術の暗黙知と形式知
 • 輪読会が目指していたもの
 7 暗黙知 形式知 形式知 形式知 ①本の内容と経験を紐づけて話 したり感想を言う


    ②言語化できたものを
 日常的に扱えるようになる
 形式知 形式知 形式知 形式知 形式
  8. ぜひ学んだことの言語化を
 • LTでお話する登壇者はもちろんのこと、
 話を聴いた参加者の皆さんも、感想だったりフィードバックを してください
 • 登壇者のさらなる言語化に繋がりますし、
 なにより自身の形式知にも繋がっていきます
 8

  9. 前置きはここまで
 9

  10. DDD輪読会での差分と
 これから
 2021/08/28 エヴァンス本輪読会お疲れ様会 Jun Nakajima

  11. 輪読会を行なう前後の
 自身の差分
 11

  12. 輪読会を行なう前
 • IDDD本を読んでみたが、結局のところDDDって…?という状態
 ◦ 現場はJavaじゃないし…(Pythonメインだった)
 • 誰かがIDDD本読んだら、エヴァンス本でしょ! というノリで始まった(気がする)
 
 • 現場ではモデリングもしなかったし、ドメインに沿った型を定義するということはし

    ていなかった
 • 自身でコードに書いてたりはしたが、業務上複雑でもなかったので、導入するメ リットも薄かった
 12
  13. 輪読会を行った後
 • あらためて読むと、第1部のモデルの話がすごく重要だと気づいた
 ◦ 以前の自分は、読みやすさから第2部のテクニックを先に学んでた
 ◦ モデルと実装を結びつける重要性
 ◦ モデルのリファクタリングという観点は新しかった
 •

    第4部の責務のレイヤは、モデリングに一つ別の視点が加わった
 ◦ ただ現状をモデリングしていると複雑すぎるので、現場ではモデリングする 時に責務のレイヤを取り入れてみた
 13
  14. モデルと実装を結びつける
 14

  15. ソフトウェアシステムの一部を設計する際には、紐づけが明らかに なるように、ドメインモデルを文字通りの意味で忠実に反映させるこ と (中略)
 強固なユビキタス言語を支えることに加えて、ドメインと実装両方 の目的に使える単一のモデルを要求すること
 15 -- エリック・エヴァンスのドメイン駆動設計 P.47


    モデルと実装を結びつける

  16. モデルと実装を結びつける
 • この結びつける感覚はなかなか難しかった
 ◦ モデルを描いて満足していまい、その後参照しない
 ◦ 日本語⇔英語変換の壁
 ▪ 日本語でモデル描いて、実装は英語で結びつきがわ かりづらくなる


    ◦ 設計と実装を分けてしまう(設計書作って、実装)
 ▪ 設計と実装を行き来するアジャイル的アプローチ
 16
  17. モデルと実装を結びつける
 • 第1〜2部では結びつける重要性と方法論を述べている
 • モデルと実装を結びつけるにはアジャイル開発が前提
 ◦ 設計と実装を同じチームでやる
 • オブジェクト指向などのドメインのふるまいを表せるツールサ ポートが必要


    ◦ コードでモデルが表現できないと、結びつけられない
 17
  18. モデルを常に
 リファクタリングし続ける
 18

  19. Ericの経験から導き出される教訓は、真に強力なドメ インモデルは時間と共に進化するということであり、 偉大なベテランモデラであっても、最高のアイデアを 得られるのはシステムが初期リリースされた後のこと だ
 19 -- マーチン・ファウラー
 エリック・エヴァンスのドメイン駆動設計 P.xi

    序文
 モデルは常にリファクタリングし続ける

  20. 忘れないで欲しいのだが、こうしたモデルに基づく設 計は一度に現れるものではない。
 ドメインの重要な概念を蒸留して、シンプルで鋭いモ デルにするには、リファクタリングと知識のかみ砕き を何度か反復しなければならないのだ。
 20 -- エリック・エヴァンスのドメイン駆動設計 P.55
 モデルは常にリファクタリングし続ける


  21. なぜモデルをリファクタリングするのか
 • DDDは、的確なモデル(事業のコア)を見つけてそれをコード で表現できることが一つ目的としてある
 ◦ 深いモデル
 • 暗黙的な概念を明示したり、そのドメインにおいては周辺的 な些末な情報を省いていったり
 21

  22. なぜモデルをリファクタリングするのか
 • リファクタリングと一口で言っても、容易ではない
 • 絶えずやっていかないといけな部分
 • 今までの自分では、ただ現状をモデリングしていっただけ だったが、それを責務のレイヤなどを取り入れることで一つ 整理をする観点を手に入れることができた
 22

  23. 今後の展望
 23

  24. ひたすら実践を続けていく
 • 現場ではDDDを実践しているが、まだモデルへ常に行き来し ている状態ではない
 ◦ それを促すようにしていきたい
 • もっとモデルを忠実にコードに落とせるようにしていきたい
 ◦ コードリーディング


    ◦ 現場ベースでの相談だったり
 24
  25. Thank you! 25