Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

そもそもなんでLT会?
 3

Slide 4

Slide 4 text

そもそもなんでLT会?
 4

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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


Slide 7

Slide 7 text

設計技術の暗黙知と形式知
 ● 輪読会が目指していたもの
 7 暗黙知 形式知 形式知 形式知 ①本の内容と経験を紐づけて話 したり感想を言う
 ②言語化できたものを
 日常的に扱えるようになる
 形式知 形式知 形式知 形式知 形式

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

前置きはここまで
 9

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

輪読会を行なう前
 ● IDDD本を読んでみたが、結局のところDDDって…?という状態
 ○ 現場はJavaじゃないし…(Pythonメインだった)
 ● 誰かがIDDD本読んだら、エヴァンス本でしょ! というノリで始まった(気がする)
 
 ● 現場ではモデリングもしなかったし、ドメインに沿った型を定義するということはし ていなかった
 ● 自身でコードに書いてたりはしたが、業務上複雑でもなかったので、導入するメ リットも薄かった
 12

Slide 13

Slide 13 text

輪読会を行った後
 ● あらためて読むと、第1部のモデルの話がすごく重要だと気づいた
 ○ 以前の自分は、読みやすさから第2部のテクニックを先に学んでた
 ○ モデルと実装を結びつける重要性
 ○ モデルのリファクタリングという観点は新しかった
 ● 第4部の責務のレイヤは、モデリングに一つ別の視点が加わった
 ○ ただ現状をモデリングしていると複雑すぎるので、現場ではモデリングする 時に責務のレイヤを取り入れてみた
 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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


Slide 16

Slide 16 text

モデルと実装を結びつける
 ● この結びつける感覚はなかなか難しかった
 ○ モデルを描いて満足していまい、その後参照しない
 ○ 日本語⇔英語変換の壁
 ■ 日本語でモデル描いて、実装は英語で結びつきがわ かりづらくなる
 ○ 設計と実装を分けてしまう(設計書作って、実装)
 ■ 設計と実装を行き来するアジャイル的アプローチ
 16

Slide 17

Slide 17 text

モデルと実装を結びつける
 ● 第1〜2部では結びつける重要性と方法論を述べている
 ● モデルと実装を結びつけるにはアジャイル開発が前提
 ○ 設計と実装を同じチームでやる
 ● オブジェクト指向などのドメインのふるまいを表せるツールサ ポートが必要
 ○ コードでモデルが表現できないと、結びつけられない
 17

Slide 18

Slide 18 text

モデルを常に
 リファクタリングし続ける
 18

Slide 19

Slide 19 text

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


Slide 20

Slide 20 text

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


Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

今後の展望
 23

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

Thank you! 25