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
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
DDD失敗談
Paraya
June 21, 2017
More Decks by Paraya
See All by Paraya
J2K failure story : UNIT
paraya3636
0
120
J2Kコンバータをカスタマイズする ver: 5min
paraya3636
0
1.9k
J2Kコンバータをカスタマイズする
paraya3636
1
2.3k
命名おじさん
paraya3636
1
190
Step up Kotlin
paraya3636
0
100
Other Decks in Programming
See All in Programming
Modding RubyKaigi for Myself
yui_knk
0
900
DynamoDBには集計系のクエリがないけどなんとかしたい
musan
1
130
「エンジニアインターン、どうやって取った?」準備のリアルを語るLT会 Progate BAR
akiomatic
0
120
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
240
Webフレームワークの ベンチマークについて
yusukebe
0
150
Java × distroless で 軽量なコンテナイメージを / Java on Distroless
contour_gara
0
510
生成AI時代にこそ効くGo | Why Go Works in the Age of Generative AI
mom0tomo
8
3.2k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.3k
Semantic Version 単位で戦略を柔軟に変えて、パッケージアップデートを自動化する
daitasu
0
180
RTSPクライアントを自作してみた話
simotin13
0
510
These Five Tricks Can Make Your Apps Greener, Cheaper, & Nicer
hollycummins
0
280
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
430
Featured
See All Featured
Become a Pro
speakerdeck
PRO
31
6k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
140
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
52k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
Between Models and Reality
mayunak
4
330
Breaking role norms: Why Content Design is so much more than writing copy - Taylor Woolridge
uxyall
0
310
Into the Great Unknown - MozCon
thekraken
41
2.6k
Fireside Chat
paigeccino
42
3.9k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
840
Music & Morning Musume
bryan
47
7.2k
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って最高
ご静聴 ありがとうございました