Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドメイン駆動設計に再々々々々入門した
Search
code-hato
December 05, 2025
0
15
ドメイン駆動設計に再々々々々入門した
code-hato
December 05, 2025
Tweet
Share
More Decks by code-hato
See All by code-hato
なぜ私は個人開発で失敗したのか?
hashimoto_naoki
0
6
Featured
See All Featured
Rebuilding a faster, lazier Slack
samanthasiow
84
9.3k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
RailsConf 2023
tenderlove
30
1.3k
Being A Developer After 40
akosma
91
590k
Done Done
chrislema
186
16k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Bash Introduction
62gerente
615
210k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.1k
Code Review Best Practice
trishagee
73
19k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
How STYLIGHT went responsive
nonsquared
100
5.9k
Faster Mobile Websites
deanohume
310
31k
Transcript
ドメイン駆動設計に 再々々々々入門した
自己紹介 ほうれん草ボンバー フロントエンドエンジニア ひまぷろで最初のゲスト! 最近はパフェ作りにハマっている
DDD、むずくね?
“入門書”をたくさん読むもどれも途中で挫折・・・
ドメイン 値オブジェクト わからない単語・概念が多すぎる エンティティ 集約 境界づけらた コンテキスト DIP
プログラミング言語の壁がある サンプルコードがJavaで書かれている →TypeScriptではclass構文をあまり使わない サンプルコードが長くて読みずらい 普段の業務とかけ離れているコードだからイメージがわかない
俺の理解力の無さ なめんじゃねーぞ!!
エリック・エヴァンズに難しい コードでいじめられたよ〜
「小学5年生ののび太でもわかるように 説明してください」 魔法のプロンプト
理 解 し て あ げ な い だ か
ら
注意事項 「わかりやすさ」を優先しているため、 正確性は犠牲にしています コード例は一切使っていません 表層の大雑把な理解です
ドメイン駆動設計 再々々々々入門 ドメインとは? サッカーでいう、 「ルール」のこと 手を使ってはいけない(キーパー以外) 1チーム11人 オフサイドがある ゴールしたら1点 ・・・
「この世界ではこうするよ」っていう約束ごと
ドメイン駆動設計 再々々々々入門 値オブジェクトとエンティティ 値オブジェクト 1つ1つを区別しなければいけない存在 サッカー選手 同じ名前の人が2人いても、背番号が 違えば別人 エンティティ 中身(値)が同じなら、
同じものとして扱ってよい存在 お金(1,00円玉はどれも100円) サッカーボール(サイズが同じであ れば、どれでも良い)
ドメイン駆動設計 再々々々々入門 集約(Aggregate) サッカーでいう、 「試合」のこと 試合には以下のもの(オブジェクト)の集合 チーム 選手 ゴール ボール
複数のものを集めたまとまり
ドメイン駆動設計 再々々々々入門 DIP(依存性逆転の原則) 〈悪い例〉メッシがいるから、ゴールキーパー2人にする 「ルールを先に決めて、人がルールに合わせるようにしようね」という考え方 〈良い例〉メッシがいるから、4人マークをつける 一人の選手によって、サッカーのルールが変更されている 一人の選手によって、サッカーの戦術が変更されている(ルールは変更されていない)
わかりやすく説明してくれ ありがとう・・・
ドメイン駆動設計 再々々々々入門 ドメイン駆動設計を学ぶ意味は? 初級エンジニアから中級エンジニアへの 考え方を変えるきっかけとなる
ドメイン駆動設計 再々々々々入門 ドメイン駆動設計を学ぶ意味は? How(どのように?)ではなく、 What(何?)で考える
画面デザインはどうする? FW・ライブラリーの選定はどうする? DB設計はどうする? どういうふうに実装する? How?
あなたの会社は何を作っていますか? そのサービスの特徴は何ですか? 他の類似サービスと比べて、そのサービスの強み何ですか? 今後、機能追加するとしたら何が必要ですか? What?
ドメイン駆動設計 再々々々々入門
ドメイン駆動設計 再々々々々入門 技術領域 ビジネス領域 ドメイン駆動 How? What?
ドメイン駆動設計 再々々々々入門 まとめ ドメイン駆動設計は難解な概念が多くとっつきにくい 「ビジネスをもっと良く理解しよう!」という考え方 HowではなくWhatに注目する 中級エンジニアになるために必要な考え方