Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ドメイン駆動設計に再々々々々入門した
Search
code-hato
December 05, 2025
170
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメイン駆動設計に再々々々々入門した
code-hato
December 05, 2025
Transcript
23 slides
ドメイン駆動設計に 再々々々々入門した
自己紹介 ほうれん草ボンバー フロントエンドエンジニア ひまぷろで最初のゲスト! 最近はパフェ作りにハマっている
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に注目する 中級エンジニアになるために必要な考え方
More Decks by code-hato
See All by code-hato
意識低い系エンジニアの “成長”戦略
hashimoto_naoki
0
33
テスト
hashimoto_naoki
0
30
なぜ私は個人開発で失敗したのか?
hashimoto_naoki
0
47
Featured
See All Featured
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
530
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
31k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
1
610
HDC tutorial
michielstock
2
1k
Designing Experiences People Love
moore
143
24k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
Typedesign – Prime Four
hannesfritz
42
3.2k
The Curse of the Amulet
leimatthew05
4
17k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
660
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.7k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
900