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
680
より協力的なペアプロを促すには どうするかを考える
jnuank
9
2.3k
そのプランニングに意思、乗せていますか?
jnuank
1
1.9k
スクラムを実践していた私がXPの現場に来て感じたこと
jnuank
2
860
3つの概念で覚えるLinuxの世界
jnuank
0
21k
1週間ですら見積もれなかったからイテレーションを1日にしてみた
jnuank
0
700
正しくつくるための設計を学ぶ_最終報告
jnuank
1
150
Event Storming Big Pictureを試す
jnuank
0
870
対話から始めていく私たち開発チームのジャーニー
jnuank
2
820
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
66
11k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
A designer walks into a library…
pauljervisheath
205
24k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Designing for Performance
lara
604
68k
The Art of Programming - Codeland 2020
erikaheidi
53
13k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
7k
Fireside Chat
paigeccino
34
3.1k
Statistics for Hackers
jakevdp
797
220k
Agile that works and the tools we love
rasmusluckow
328
21k
How GitHub (no longer) Works
holman
312
140k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
44
9.4k
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