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
540
より協力的なペアプロを促すには どうするかを考える
jnuank
9
2.2k
そのプランニングに意思、乗せていますか?
jnuank
1
1.7k
スクラムを実践していた私がXPの現場に来て感じたこと
jnuank
2
820
3つの概念で覚えるLinuxの世界
jnuank
0
21k
1週間ですら見積もれなかったからイテレーションを1日にしてみた
jnuank
0
670
正しくつくるための設計を学ぶ_最終報告
jnuank
1
140
Event Storming Big Pictureを試す
jnuank
0
820
対話から始めていく私たち開発チームのジャーニー
jnuank
2
790
Featured
See All Featured
A designer walks into a library…
pauljervisheath
204
24k
The Invisible Side of Design
smashingmag
298
50k
Imperfection Machines: The Place of Print at Facebook
scottboms
265
13k
Teambox: Starting and Learning
jrom
133
8.8k
Writing Fast Ruby
sferik
627
61k
BBQ
matthewcrist
85
9.3k
Side Projects
sachag
452
42k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Your Own Lightsaber
phodgson
103
6.1k
Practical Orchestrator
shlominoach
186
10k
For a Future-Friendly Web
brad_frost
175
9.4k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
93
16k
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