Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
エヴァンス本輪読会お疲れ様会を楽しむために / DDD輪読会での差分とこれから
Search
Jun Nakajima
August 28, 2021
0
140
エヴァンス本輪読会お疲れ様会を楽しむために / DDD輪読会での差分とこれから
エヴァンス本輪読会お疲れ様会でLTした内容です
・
https://ddd-community-jp.connpass.com/event/220962/
Jun Nakajima
August 28, 2021
Tweet
Share
More Decks by Jun Nakajima
See All by Jun Nakajima
アジャイルの知見の少ないメンバーの多いチームづくりの1年半をふりかえる
jnuank
1
610
より協力的なペアプロを促すには どうするかを考える
jnuank
9
2.2k
そのプランニングに意思、乗せていますか?
jnuank
1
1.8k
スクラムを実践していた私がXPの現場に来て感じたこと
jnuank
2
840
3つの概念で覚えるLinuxの世界
jnuank
0
21k
1週間ですら見積もれなかったからイテレーションを1日にしてみた
jnuank
0
680
正しくつくるための設計を学ぶ_最終報告
jnuank
1
140
Event Storming Big Pictureを試す
jnuank
0
840
対話から始めていく私たち開発チームのジャーニー
jnuank
2
810
Featured
See All Featured
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
0
98
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
GitHub's CSS Performance
jonrohan
1030
460k
Optimising Largest Contentful Paint
csswizardry
33
3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Code Reviewing Like a Champion
maltzj
520
39k
Navigating Team Friction
lara
183
15k
RailsConf 2023
tenderlove
29
940
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Rebuilding a faster, lazier Slack
samanthasiow
79
8.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
Transcript
エヴァンス本輪読会 お疲れ様会を楽しむために 2021/08/28 エヴァンス本輪読会お疲れ様会 Jun Nakajima
エヴァンス本輪読会 お疲れ様でした! 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