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
Paraya
June 21, 2017
Programming
0
120
DDD失敗談
Paraya
June 21, 2017
Tweet
Share
More Decks by Paraya
See All by Paraya
J2K failure story : UNIT
paraya3636
0
88
J2Kコンバータをカスタマイズする ver: 5min
paraya3636
0
1.8k
J2Kコンバータをカスタマイズする
paraya3636
1
2.1k
命名おじさん
paraya3636
1
150
Step up Kotlin
paraya3636
0
81
Other Decks in Programming
See All in Programming
ニーリーにおけるプロダクトエンジニア
nealle
0
870
「テストは愚直&&網羅的に書くほどよい」という誤解 / Test Smarter, Not Harder
munetoshi
0
180
初学者でも今すぐできる、Claude Codeの生産性を10倍上げるTips
s4yuba
16
12k
型で語るカタ
irof
0
190
10 Costly Database Performance Mistakes (And How To Fix Them)
andyatkinson
0
430
RailsGirls IZUMO スポンサーLT
16bitidol
0
190
ISUCON研修おかわり会 講義スライド
arfes0e2b3c
1
450
Rubyでやりたい駆動開発 / Ruby driven development
chobishiba
1
740
Goで作る、開発・CI環境
sin392
0
240
Quand Symfony, ApiPlatform, OpenAI et LangChain s'allient pour exploiter vos PDF : de la théorie à la production…
ahmedbhs123
0
210
“いい感じ“な定量評価を求めて - Four Keysとアウトカムの間の探求 -
nealle
2
11k
Rails Frontend Evolution: It Was a Setup All Along
skryukov
0
160
Featured
See All Featured
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How GitHub (no longer) Works
holman
314
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Faster Mobile Websites
deanohume
307
31k
Building a Modern Day E-commerce SEO Strategy
aleyda
42
7.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Site-Speed That Sticks
csswizardry
10
690
XXLCSS - How to scale CSS and keep your sanity
sugarenia
248
1.3M
Product Roadmaps are Hard
iamctodd
PRO
54
11k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Six Lessons from altMBA
skipperchong
28
3.9k
Transcript
DDD失敗談 @paraya3636(ぱらや)
paraya3636(みうら) @paraya3636(ぱらや) # 直近やってたこと - iOS 3年 - Android 2年半
- CleanArchitecture(DDD) 2年
DDD失敗談
僕が考えていた DDDへの幻想
# DDDで一度設計すれば変更は少ない # ユビキタス(共通)言語は不変 # ロジックはドメインレイヤーに書けばよい
DDDで一度設計すれば 変更は少ない
そんなことはなかった
NG: DDDで一度設計してしまえば変更は少ない # ドメインの設計見直しタイミング - 他の仕様に引きづられて仕様が変わる - ユーザテストの意見反映で仕様が変わる - 実装を進めていてより良い設計を思いついた
# 意外とコロコロ変わる 悩んでベスト設計を目指すのはNG。 ベター設計で速度を優先したほうが良い。
ユビキタス(共通)言語は 不変
そんなことはなかった
NG: ユビキタス(共通)言語は不変 # ユビキタス言語が変わるタイミング - デザイン進めて行く上で変わった - 他アプリでの名称違うからそっちの反映 - 気付いたら自然と変わってた
# 定着するまで変わることがある 変わらないように努めるべき。 だが、変わる可能性は充分にあることを留意する。 変わってもイライラしない。
ロジックはドメインレイヤーに 書けばよい
これは少し掘り下げて話しま す
NG: ロジックはドメインレイヤーに書けばよい # 間違ってはいないが設計がふわっとしてる - ふわっとしたまま実装するとミスを誘発する # 実際に起きた問題 - ビジネスロジックどこ書けばいいかわからん…
- 一旦ユースケースにメソッド書くか - →Entityがただのデータの入れ物化
ドメインモデル貧血症
メソッドが存在しないドメインモ デルがある →でもロジック書きたい NG: ユースケースに書く
ユースケース肥大化 共通ロジックとして使いづらい ドメインモデル
ドメインモデル貧血症 # データの入れ物自身が振る舞う事を意識する - 1. Entityに書けるか? - 2. ValueObjectに書けるか? -
3. 振る舞いだけを持つServiceに書く # ユースケースにロジックは書かない - ユースケースではドメインモデルのロジックの呼び出し 順序でロジックの流れを表現する
思っていたDDDとはちょっと 違ったけど
でもDDDって最高
ご静聴 ありがとうございました