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
tsserverとは何だったのか、これからどうなるのか
nowaki28
1
460
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
150
Copilot CLI の継戦能力を高める コンテキスト管理
nozomutu
1
1.2k
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
Oxcを導入して開発体験が向上した話
yug1224
4
290
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
150
キャリア迷子上等 ─ "ない道"は自分で作ればいい
16bitidol
3
1.9k
Why Laravel apps break—Mastering the fundamentals to keep them maintainable
kentaroutakeda
1
340
Modding RubyKaigi for Myself
yui_knk
0
900
Claspは野良GASの夢をみるか
takter00
0
180
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
230
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
510
Featured
See All Featured
How to make the Groovebox
asonas
2
2.2k
Designing for Timeless Needs
cassininazir
1
250
The #1 spot is gone: here's how to win anyway
tamaranovitovic
2
1.1k
AI in Enterprises - Java and Open Source to the Rescue
ivargrimstad
0
1.3k
Are puppies a ranking factor?
jonoalderson
1
3.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
550
30 Presentation Tips
portentint
PRO
1
320
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
240
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
280
The SEO identity crisis: Don't let AI make you average
varn
0
480
Agile Actions for Facilitating Distributed Teams - ADO2019
mkilby
0
200
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って最高
ご静聴 ありがとうございました