Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
DDD失敗談
Search
Paraya
June 21, 2017
Programming
0
130
DDD失敗談
Paraya
June 21, 2017
Tweet
Share
More Decks by Paraya
See All by Paraya
J2K failure story : UNIT
paraya3636
0
110
J2Kコンバータをカスタマイズする ver: 5min
paraya3636
0
1.8k
J2Kコンバータをカスタマイズする
paraya3636
1
2.2k
命名おじさん
paraya3636
1
160
Step up Kotlin
paraya3636
0
92
Other Decks in Programming
See All in Programming
AIエージェントの設計で注意するべきポイント6選
har1101
5
1.8k
Giselleで作るAI QAアシスタント 〜 Pull Requestレビューに継続的QAを
codenote
0
270
Cap'n Webについて
yusukebe
0
140
エディターってAIで操作できるんだぜ
kis9a
0
750
Deno Tunnel を使ってみた話
kamekyame
0
210
tparseでgo testの出力を見やすくする
utgwkk
2
260
ELYZA_Findy AI Engineering Summit登壇資料_AIコーディング時代に「ちゃんと」やること_toB LLMプロダクト開発舞台裏_20251216
elyza
2
510
JETLS.jl ─ A New Language Server for Julia
abap34
2
430
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
870
DevFest Android in Korea 2025 - 개발자 커뮤니티를 통해 얻는 가치
wisemuji
0
170
Graviton と Nitro と私
maroon1st
0
120
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
160
Featured
See All Featured
Chasing Engaging Ingredients in Design
codingconduct
0
78
RailsConf 2023
tenderlove
30
1.3k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
The agentic SEO stack - context over prompts
schlessera
0
550
Deep Space Network (abreviated)
tonyrice
0
20
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
160
We Are The Robots
honzajavorek
0
120
Site-Speed That Sticks
csswizardry
13
1k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
23
Designing for Timeless Needs
cassininazir
0
87
Stop Working from a Prison Cell
hatefulcrawdad
273
21k
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って最高
ご静聴 ありがとうございました