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実践のFB
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
rirazou
December 18, 2019
Programming
0
47
DDD実践のFB
DDD実践の問題点のFB
rirazou
December 18, 2019
Tweet
Share
More Decks by rirazou
See All by rirazou
recommended-collection-object.pdf
rirazou
0
81
Other Decks in Programming
See All in Programming
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
1
970
LLM Observabilityによる 対話型音声AIアプリケーションの安定運用
gekko0114
2
430
OSSとなったswift-buildで Xcodeのビルドを差し替えられるため 自分でXcodeを直せる時代になっている ダイアモンド問題編
yimajo
3
620
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
730
組織で育むオブザーバビリティ
ryota_hnk
0
180
AIと一緒にレガシーに向き合ってみた
nyafunta9858
0
240
SourceGeneratorのススメ
htkym
0
200
AIフル活用時代だからこそ学んでおきたい働き方の心得
shinoyu
0
130
Basic Architectures
denyspoltorak
0
670
KIKI_MBSD Cybersecurity Challenges 2025
ikema
0
1.3k
CSC307 Lecture 01
javiergs
PRO
0
690
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
210
Have SEOs Ruined the Internet? - User Awareness of SEO in 2025
akashhashmi
0
270
RailsConf 2023
tenderlove
30
1.3k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
61
52k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
180
Between Models and Reality
mayunak
1
190
The Curse of the Amulet
leimatthew05
1
8.6k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
1
100
DevOps and Value Stream Thinking: Enabling flow, efficiency and business value
helenjbeal
1
94
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
910
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の実践での問題点 解決案