Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
DDD実践のFB
Search
rirazou
December 18, 2019
Programming
57
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DDD実践のFB
DDD実践の問題点のFB
rirazou
December 18, 2019
More Decks by rirazou
See All by rirazou
recommended-collection-object.pdf
rirazou
0
93
Other Decks in Programming
See All in Programming
大喜利で理解するLLM as a Judge / Understanding LLM-as-a-Judge through Ogiri
rockname
0
190
ジョジョの世界をXRで再現する
mofurune
0
140
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
130
Vue Fes Japan 2026 タイムテーブル徹底解説
448jp
1
630
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
21
21k
最近”作らせてる” ローカルAIアプリの話
akit37
0
230
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
190
速習iPhone Duo対応
yuukiw00w
2
970
IBM Bob Dojo #1 仕様駆動開発入門
oniak3ibm
PRO
0
350
コードレビューのボトルネックを"する側"と"される側"の両面から解消する
yub0n
2
1.5k
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
5k
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
560
Featured
See All Featured
Building a Scalable Design System with Sketch
lauravandoore
464
34k
The Curious Case for Waylosing
cassininazir
1
560
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
300
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
The browser strikes back
jonoalderson
0
1.8k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
280
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
290
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
970
Balancing Empowerment & Direction
lara
6
1.3k
Deep Space Network (abreviated)
tonyrice
0
360
Chasing Engaging Ingredients in Design
codingconduct
0
350
Transcript
DDD実践のFB ドメインモデリング勉強会 2019/12/18 @rirazou_ 1
自己紹介 • @rirazou_ • 好きな食べ物:寿司、焼き肉、ラーメン、鶏の唐揚げ • 嫌いな食べ物:パクチー • 技術的な興味:開発系は全般的に、最近は設計 •
その他の興味:息子の成長 • 最近のはなし:痩せない(食ってるから) 2
本日のアジェンダ 3 本日お話しすること DDDの実践での問題点 解決案
本日のアジェンダ 4 本日お話しすること DDDの実践での問題点 解決案
本日お話しすること - モデリングというよりは実装よりの話になります - 現プロジェクトにおける簡易DDDの実践にて、 特に困った問題についてお話しします - 簡易DDDよりな実践のため分析が 根本的に足りてないという事はあります 5
本日のアジェンダ 6 本日お話しすること DDDの実践での問題点 解決案
DDDの実践での問題点 プロジェクトで何が起こったのか? - 画面の関心毎に引っ張られ過ぎて、 ドメインモデルの崩壊した。 - 集約を安易に取り扱い、巨大な集約を作ってしまい、 速度面で問題になることも多かった - 速度面の改善に取り組む中で、集約を歪めてしまい
さらなるドメインモデルの崩壊がおきた 7
DDDの実践での問題点 それで何が困るのか? - 1つのモデルが様々な関心毎を扱っている状態になり、 1つの修正がどう影響するのか読み取りずらくなった。 - 開発の後期になればなるほど、修正のコストが増加していく ※自動テストのメンテナンスも全然追いついてないので そう言った問題点は別でありました 8
DDDの実践での問題点 なぜそんなことが起こるのか? - 各画面で必要な情報が異なる - 1つの画面でも複数のモデルが必要になる - 複数のモデルの属性を組み合わせて表示したりする - 画面は顧客の要求を具現化しているので、情報の組合せが複雑
9
DDDの実践での問題点 そもそもドメインモデルが扱う事って? - そのドメインにおけるルールなどのビジネスロジックや プロセスなどのドメインの活動そのものを扱う - ドメインの活動から発生したシステムに対する 要求のユースケースをモデリングしたいわけではない ユースケースに使われるドメイン活動をモデリングしたい 10
DDDの実践での問題点 じゃあ画面が扱う事って? - ドメインが持つ情報を最適化して表示し、 人々の意思決定をサポートする - 意思決定を行った後の次のアクションへ入り口を提供し、 ドメインの活動を次へと進める - 要求を満たすため、それをサポートするために存在している
11
DDDの実践での問題点 結局は何が言いたいの? ドメインモデルは要求というよりは、 要求の向こう側にあるものをモデリングしたい 画面は要求そのものを実現したい ドメインが持つ情報は画面と密接にかかわってはいるが、 画面の関心毎とは別軸にあるものではないのか? ドメインモデルは画面から遠ざけたほうが良いのでは? もちろん、分析のスタートは要求や画面、帳票などになるが 今見えているそれらをドメインだと勘違いしない方がよいのでは?
12
本日のアジェンダ 13 本日お話しすること DDDの実践での問題点 解決案
解決案 ① 戦略的設計をちゃんとやろうぜ ② CQRSをやろうぜ ※時間がないので端折りますので、知らない人は調べてください。 14
解決案 ① 戦略的設計をちゃんとやろうぜ はい、すみません。その通りです。頑張ります。 振り返ると自分が出会った問題のほとんどは ドメインエキスパートを含めて ドメイン自体の活動自体を分析すれば 解決できたように感じています。 15
解決案 ② CQRSをやろうぜ CQRSとは、リードモデルとライトモデルを分けるやり方 - リードモデルは、データを読み取る操作を担当 UIの関心毎で構造化される - ライトモデルは、データを更新する操作を担当 ドメインモデルの役割との相性が良い
16
解決案 CQRSをする上で、 - デメリットが無いわけではない - 分けることで発生する複雑さもある - 常にリードモデルとライトモデルは分ける必要はない - 素で使えるなら使えばいい
- 複雑化しそうなら分ける選択肢を持つということが大事 17
本日のアジェンダ 18 本日お話しすること DDDの実践での問題点 解決案
まとめ 19 - UIはドメインそのものではなく、 ドメインをサポートするためのものではないのか? - 関心毎が異なるのであれば、分けるのが良いのではないか? - CQRSという解決策が生み出されているので、 実践する場では選択肢として考慮してみては?
- 戦略的設計を頑張ります。おれ。
質疑応答 - 本日のアジェンダ 20 本日お話しすること DDDの実践での問題点 解決案