エヴァンス本輪読会お疲れ様会でLTした内容です ・https://ddd-community-jp.connpass.com/event/220962/
エヴァンス本輪読会 お疲れ様会を楽しむために 2021/08/28エヴァンス本輪読会お疲れ様会Jun Nakajima
View Slide
エヴァンス本輪読会 お疲れ様でした! 2
そもそもなんでLT会? 3
そもそもなんでLT会? 4
LT会を開く動機 ● みんなの学びを聴きたい、話したい ● いろんな立場の人が常時30〜40人で輪読会に参加していた ● 輪読会だけの時間では語れなかった何かが、それぞれあるはず 5
設計技術の暗黙知と形式知 ● 設計の技術は(言語やFWと比べて)暗黙知が多い 6暗黙知形式知形式知形式知それぞれ個人の経験 世の中に出ている情報(書籍・ネットなど)
設計技術の暗黙知と形式知 ● 輪読会が目指していたもの 7暗黙知形式知形式知形式知①本の内容と経験を紐づけて話したり感想を言う ②言語化できたものを 日常的に扱えるようになる 形式知形式知形式知形式知形式
ぜひ学んだことの言語化を ● LTでお話する登壇者はもちろんのこと、 話を聴いた参加者の皆さんも、感想だったりフィードバックをしてください ● 登壇者のさらなる言語化に繋がりますし、 なにより自身の形式知にも繋がっていきます 8
前置きはここまで 9
DDD輪読会での差分と これから 2021/08/28エヴァンス本輪読会お疲れ様会Jun Nakajima
輪読会を行なう前後の 自身の差分 11
輪読会を行なう前 ● IDDD本を読んでみたが、結局のところDDDって…?という状態 ○ 現場はJavaじゃないし…(Pythonメインだった) ● 誰かがIDDD本読んだら、エヴァンス本でしょ! というノリで始まった(気がする) ● 現場ではモデリングもしなかったし、ドメインに沿った型を定義するということはしていなかった ● 自身でコードに書いてたりはしたが、業務上複雑でもなかったので、導入するメリットも薄かった 12
輪読会を行った後 ● あらためて読むと、第1部のモデルの話がすごく重要だと気づいた ○ 以前の自分は、読みやすさから第2部のテクニックを先に学んでた ○ モデルと実装を結びつける重要性 ○ モデルのリファクタリングという観点は新しかった ● 第4部の責務のレイヤは、モデリングに一つ別の視点が加わった ○ ただ現状をモデリングしていると複雑すぎるので、現場ではモデリングする時に責務のレイヤを取り入れてみた 13
モデルと実装を結びつける 14
ソフトウェアシステムの一部を設計する際には、紐づけが明らかになるように、ドメインモデルを文字通りの意味で忠実に反映させること (中略) 強固なユビキタス言語を支えることに加えて、ドメインと実装両方の目的に使える単一のモデルを要求すること 15-- エリック・エヴァンスのドメイン駆動設計 P.47 モデルと実装を結びつける
モデルと実装を結びつける ● この結びつける感覚はなかなか難しかった ○ モデルを描いて満足していまい、その後参照しない ○ 日本語⇔英語変換の壁 ■ 日本語でモデル描いて、実装は英語で結びつきがわかりづらくなる ○ 設計と実装を分けてしまう(設計書作って、実装) ■ 設計と実装を行き来するアジャイル的アプローチ 16
モデルと実装を結びつける ● 第1〜2部では結びつける重要性と方法論を述べている ● モデルと実装を結びつけるにはアジャイル開発が前提 ○ 設計と実装を同じチームでやる ● オブジェクト指向などのドメインのふるまいを表せるツールサポートが必要 ○ コードでモデルが表現できないと、結びつけられない 17
モデルを常に リファクタリングし続ける 18
Ericの経験から導き出される教訓は、真に強力なドメインモデルは時間と共に進化するということであり、偉大なベテランモデラであっても、最高のアイデアを得られるのはシステムが初期リリースされた後のことだ 19-- マーチン・ファウラー エリック・エヴァンスのドメイン駆動設計 P.xi 序文 モデルは常にリファクタリングし続ける
忘れないで欲しいのだが、こうしたモデルに基づく設計は一度に現れるものではない。 ドメインの重要な概念を蒸留して、シンプルで鋭いモデルにするには、リファクタリングと知識のかみ砕きを何度か反復しなければならないのだ。 20-- エリック・エヴァンスのドメイン駆動設計 P.55 モデルは常にリファクタリングし続ける
なぜモデルをリファクタリングするのか ● DDDは、的確なモデル(事業のコア)を見つけてそれをコードで表現できることが一つ目的としてある ○ 深いモデル ● 暗黙的な概念を明示したり、そのドメインにおいては周辺的な些末な情報を省いていったり 21
なぜモデルをリファクタリングするのか ● リファクタリングと一口で言っても、容易ではない ● 絶えずやっていかないといけな部分 ● 今までの自分では、ただ現状をモデリングしていっただけだったが、それを責務のレイヤなどを取り入れることで一つ整理をする観点を手に入れることができた 22
今後の展望 23
ひたすら実践を続けていく ● 現場ではDDDを実践しているが、まだモデルへ常に行き来している状態ではない ○ それを促すようにしていきたい ● もっとモデルを忠実にコードに落とせるようにしていきたい ○ コードリーディング ○ 現場ベースでの相談だったり 24
Thank you!25