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
130
エヴァンス本輪読会お疲れ様会を楽しむために / 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
260
より協力的なペアプロを促すには どうするかを考える
jnuank
9
2.1k
そのプランニングに意思、乗せていますか?
jnuank
1
1.7k
スクラムを実践していた私がXPの現場に来て感じたこと
jnuank
2
790
3つの概念で覚えるLinuxの世界
jnuank
0
21k
1週間ですら見積もれなかったからイテレーションを1日にしてみた
jnuank
0
650
正しくつくるための設計を学ぶ_最終報告
jnuank
1
140
Event Storming Big Pictureを試す
jnuank
0
780
対話から始めていく私たち開発チームのジャーニー
jnuank
2
780
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
231
130k
Visualization
eitanlees
143
15k
Creatively Recalculating Your Daily Design Routine
revolveconf
217
12k
Performance Is Good for Brains [We Love Speed 2024]
tammyeverts
1
240
Put a Button on it: Removing Barriers to Going Fast.
kastner
58
3.4k
GraphQLの誤解/rethinking-graphql
sonatard
65
9.9k
Optimising Largest Contentful Paint
csswizardry
31
2.8k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
327
21k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
45
4.9k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
38
2.1k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.2k
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