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
(なんとなくわかった気になれる)ドメイン駆動設計の概要
Search
honodera
February 05, 2017
Programming
980
5
Share
(なんとなくわかった気になれる)ドメイン駆動設計の概要
社内勉強会にて発表した、
ドメイン駆動設計に全く触れたことがない人向けに作成したスライドです。
honodera
February 05, 2017
More Decks by honodera
See All by honodera
ドメイン駆動設計 コンテキストマップについて
honodera
0
1.1k
Other Decks in Programming
See All in Programming
テレメトリーシグナルが導くパフォーマンス最適化 / Performance Optimization Driven by Telemetry Signals
seike460
PRO
2
220
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
4.4k
20260315 AWSなんもわからん🥲
chiilog
2
190
LM Linkで(非力な!)ノートPCでローカルLLM
seosoft
0
370
Radical Imagining - LIFT 2025-2027 Policy Agenda
lift1998
0
230
Migration to Signals, Signal Forms, Resource API, and NgRx Signal Store @Angular Days 03/2026 Munich
manfredsteyer
PRO
0
230
RSAが破られる前に知っておきたい 耐量子計算機暗号(PQC)入門 / Intro to PQC: Preparing for the Post-RSA Era
mackey0225
3
120
車輪の再発明をしよう!PHP で実装して学ぶ、Web サーバーの仕組みと HTTP の正体
h1r0
3
500
Feature Toggle は捨てやすく使おう
gennei
0
410
AIと共にエンジニアとPMの “二刀流”を実現する
naruogram
0
130
Nuxt Server Components
wattanx
0
240
アーキテクチャモダナイゼーションとは何か
nwiizo
14
2.9k
Featured
See All Featured
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
200
Navigating Team Friction
lara
192
16k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
140
WENDY [Excerpt]
tessaabrams
9
37k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
85
How to train your dragon (web standard)
notwaldorf
97
6.6k
Being A Developer After 40
akosma
91
590k
The browser strikes back
jonoalderson
0
890
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
120
How to build a perfect <img>
jonoalderson
1
5.3k
Are puppies a ranking factor?
jonoalderson
1
3.2k
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.8k
Transcript
υϝΠϯۦಈઃܭͷ֓ཁ
υϝΠϯۦಈઃܭͬͯ ͳΜͰ͔͢ʁ
OO + XP = DDD
OO+XP=υϝΠϯۦಈઃܭ • ʮυϝΠϯۦಈઃܭʯʮΦϒδΣΫτࢦʯͱʮΤΫε τϦʔϜϓϩάϥϛϯάʯͷ߹Θٕͤ ˠΤΫετϦʔϜͳΦϒδΣΫτࢦϓϩάϥϛϯά • ΤϰΝϯεͬͯਓ͕OO+XPͰͬͯΈֶͯΜͩ͜ͱΛ·ͱ Ίͨͷ • ʮυϝΠϯۦಈઃܭʯOOʴXPͷߟ͑ํɺΓํ͕ϕʔ
εͰɺͦͷதͰʮڧௐ͢Δ(ॏ͖Λஔ͍͍ͯΔ)ʯ͕͋Δ
υϝΠϯۦಈઃܭ͕ڧௐ͢Δ • ʮυϝΠϯͷࣝʯͷܧଓతͳֶश ˠҰճ࡞ͬͯऴΘΓ͡Όͳ͍ • ʮݴ༿ʯΛͬͨʮϞσϦϯάʯ ˠΈΜͳͰ͠߹ͬͯ߹ҙ͠Α͏ • ʮϞσϧʯͱʮίʔυʯΛҰகͤ͞Δ ˠίʔυΛಡΊۀ͕Θ͔Δతͳ
͜ͷ̏ͭΛॏࢹͯ͠ιϑτΣΞΛ։ൃ͢Δͷ͕ ʮυϝΠϯۦಈઃܭʯ
ΦϒδΣΫτࢦ... ΤΫετϦʔϜ ϓϩάϥϛϯά...
ΦϒδΣΫτࢦ(ઃܭ) ͬͯͳʹʁ
ΦϒδΣΫτࢦͬͯ • ʮσʔλʯͱʮॲཧʯΛҰ·ͱΊʹͨ͠ʮΦϒδΣΫτʯಉ͕࢜ϝοηʔδΛૹͬͯ ૬खͷॲཧϧʔνϯΛݺͼग़͢ܗࣜͰιϑτΣΞͷ։ൃΛߦ͍ͬͯ͘ํ๏ٴͼߟ ͑ํɻ(ωοτ͔Βίϐϖ) • ंͱ͔Ͱྫ͕͑ͪ(ΦϒδΣΫτࢦ͋Δ͋Δ)ɻ ͔͠͠ۀͱ͔͚Ε͍ͯΔͨΊɺ ͳΜ͔Πϝʔδ͠ʹ͍͘? •
σʔλͱͦͷσʔλΛ͏ϩδοΫɺҰͭͷΫϥεʹ·ͱΊΔ • ҰͭҰͭͷΦϒδΣΫτͷׂ୯७ʹ͢Δ • ෳࡶͳॲཧΦϒδΣΫτΛΈ߹Θ࣮ͤͯݱ͢Δ • 1ΫϥεԿߦҎɺ1ϝιουԿߦҎͱ͔͍͏ࡉ͔͍ࣄ͜͜ͰׂѪ • ίʔυ͕ॏෳ͠ͳ͍͔ΒҰՕॴ͚͍͍ͩͤɺςετָ͕ʹͳΔ→อकੑ͕ߴ͘ͳ Δ
XP(ΤΫετϦʔϜϓϩ άϥϛϯά)ͬͯʁ
XPͬͯͲΜͳͷ • ιϑτΣΞཁٻ༷ͷมߋͳͲͷมԽʹରͯ͠ػහʹର Ԡ͢Δ • ॳظஈ֊ͷઃܭΑΓίʔσΟϯάͱςετΛॏࢹ͢Δ • υΩϡϝϯτΑΓιʔείʔυΛॏΜ͡Δ • ֤ఔΛஈ֊తʹਐΊ͍ͯ͘ΑΓɺৗʹϑΟʔυόοΫ
Λߦͬͯमਖ਼ɾ࠶ઃܭ͍ͯ͘͠ϓϩηεΛॏࢹ͢Δ • 4ͭʹྨͨ͠12ͷϓϥΫςΟε(͜ͷͰ্هͷߟ͑ํ ͕ͳΜͱͳ͘Θ͔Ε͍͍ͷͰɺৄࡉׂѪ)
DDDͰ ։ൃ͢Δత...
OOͰมߋ༰қੑΛߴΊΔ XPͰมԽద༻ੑΛߴΊΔ (OO͕XPΛࢧ͑Δɻ૬ޓ ʹิڧ͋͠͏)
࣮ࡍͲΜͳײ͡Ͱ։ൃ͢Δͷʁ
͜Μͳײ͡Ͱ ᶃ • ϓϨθϯςʔγϣϯ / ΞϓϦ / σʔλιʔε / υϝΠ
ϯʹ͚Δ ɹ→্هͷϨΠϠͰΞϓϦΛ࡞ͯ͠ɺυϝΠϯʹஔ͘υ ϝΠϯϞσϧʹۀͷؔ৺ࣄΛू͢Δ • ۀࢹͰϞσϧΛ࡞Δɺۀϧʔϧ(Ճɺஅɺܭࢉ)ɺ ۀ༻ޠΛ͏ ɹ→υϝΠϯҎ֎ʹࢄΒͬͨۀϩδοΫυϝΠϯ ʹدͤΔ
͜Μͳײ͡Ͱ ᶄ
͜Μͳײ͡Ͱ ᶅ
͖͔ͬ͞ΒυϝΠϯͱ͍ͬͯΔ
υϝΠϯͬͯԿ͔Ͷʁ
υϝΠϯ • ιϑτΣΞΛར༻͢Δਓୡͷʮ׆ಈʯͱʮؔ৺ࣄʯ ˠιϑτΣΞͷར༻ʮ׆ಈʯͷҰ෦ ˠؔ৺ࣄͷযϏδωεۀ্ͷՌ • ιϑτΣΞΛ࡞Δ׆ಈˠυϝΠϯͰͳ͍ • ίϯϐϡʔλͷΈڍಈˠυϝΠϯͰͳ͍ •
ը໘༷ɺػೳҰཡɺϢʔβετʔϦʔˠυϝΠϯͰ ͳ͍
͖͔ͬ͞ΒυϝΠϯϞσϧ ͱ͍ͬͯΔ
υϝΠϯϞσϧͬͯԿ͔Ͷʁ
υϝΠϯϞσϧ
Ϟσϧ • େͳࣝΛʮཁʯͨ͠ɺγϯϓϧͰ͔ Γ͍͢આ໌ͨ͠ͷ • ϞσϦϯάͷεΩϧʹʮཁྗʯ ॏཁͳཁૉΛൃݟ͢Δྗ ຊ࣭తͰͳ͍ͷΛΔྗ ݫີʹΈཱͯΔྗ
υϝΠϯϞσϧ • ιϑτΣΞΛར༻͢Δਓͨͪͷʮ׆ಈʯͱ ʮؔ৺ࣄʯͷຊ࣭Λ؆ܿʹදͨ͠ͷ ؔ৺ࣄ...ۀࣝɺۀϧʔϧ • දݱ νʔϜͰަΘ͢ձɺϥϑεέονɺίʔυɺ (จষਤ)ۀͷؔ৺ࣄ
Ͳ͏ͬͯ υϝΠϯ(υϝΠϯϞσϧ) Λఆ͍ٛͯ͘͠ͷʁ
None
υϝΠϯͷࣝΛטΈࡅ͘ • υϝΠϯͷॏཁͳؔ৺ࣄΛཧղ͢Δ • υϝΠϯΤΩεύʔτʢۀΛख़͍ͯ͠Δ ਓʹ͓٬༷ɺར༻ऀʣͷΛฉ͍ͯཧղ͢Δ • ݴ͍͑ΔͳΒཁ݅ఆٛͬͯײ͡Ͱ͠ΐ͏͔
None
ݴ༿Λͬͨҙਤͷୡ • ཧղͨ͠υϝΠϯͷࣝΛجʹυϝΠϯϞσϧΛ࡞Δ • ར༻ऀʹͱͬͯͷॏཁͳؔ৺ࣄΛཧղͨ͠ͷΛཧɺ ཁ͠Ϟσϧʹ͢Δ • ϝϯόʔͰڞ௨ͷཧղΛ͢Δ͜ͱɺಉҙ͢Δ͜ͱ͕େࣄ • ϝϯόʔ͕ಉ͡ݴ༿Ͱཧղ͢Δ͜ͱ͕େࣄ
ˠϢϏΩλεݴޠ • υΩϡϝϯτͷΘΓʹձ͢Δɻͦ͜Ͱग़͖ͯͨݴ༿ ͕Ϋϥε໊ϝιου໊ʹͳΔ
None
Ϟσϧͱ࣮Λ݁ͼ͚ͭΔ • ۀαʔϏεͷ࣮ߦͱͳΔ ʮۀతͳʯஅ /ʮۀతͳʯܭࢉ /ʮۀత ͳʯՃͷ݁ՌΛฦ͢ • ۀͷؔ৺ࣄΛநσʔλܕͱͯ͠දݱ͢Δ ސ٬ΫϥεɺΫϥεɺจΫϥεɺྔ
ΫϥεɺظΫϥε...
Ϟσϧͱ࣮Λ݁ͼ͚ͭΔ • ۀͷʮΓ͍ͨ͜ͱʯɺʮΓ͍ͨ͜ͱʯ ΛΫϥε໊ͱϝιου໊Ͱදݱ͢Δ • ࣮ͷৄࡉҙࣝ͠ͳ͍ɺҙࣝͤ͞ͳ͍ ˠ෦ͷσʔλߏͱϩδοΫΛݟͤͳ͍ɻ ͦͷΫϥεͷͦͷϝιουΛݺͼग़͓ͯ͠ ࣄΛͯ͠Β͏
υϝΠϯͷʮִʯ͕ॏཁ • ۀࣝͷଞͷͷ·͗ΕࠐΈΛ͙ →ϓϨθϯςʔγϣϯʹଘࡏ͢Δۀϧʔϧ(Ϗϡʔఆٛͷifจ) →ଠͬͨαʔϏεΫϥε τϥϯβΫγϣϯεΫϦϓτ(1ϢʔεέʔεΛ1ϝιουͰશ෦ Δɺίʔυ͕ॏෳ͢Δ) σʔλͷೖΕ͚ͩͷυϝΠϯͷΫϥε →σʔλͷۀࣝ(where۟ಈతsqlʹଘࡏ͢ΔۀϩδοΫ) →ςʔϒϧͷ۠ϑϥά(Ξϯνύλʔϯͷๅݿ)→ͪΌΜͱϞσϧ
ʹ͢Δ
ऴΘΓ • ϢϏΩλεݴޠɺϨΠϠʔԽΞʔΩςΫνϟ DDDͷϕετϓϥΫςΟεͷύλʔϯ(͜Εͬͨ Β͏·͍͔͘͘Α)ͷҰͭɻ • ߹॓Ͱߦͳ͏ίϯςΩετϚοϓͷ࡞ͦͷύ λʔϯͷҰͭɻ(υϝΠϯΛΑ͠ͳʹྨ͍ͯ͘͠) ※ίϯςΩετϚοϓͷઆ໌ผεϥΠυͰ
Ҿ༻ݩ • ૿ాږࢯͷDDDؔ࿈ͷεϥΠυ http://www.slideshare.net/masuda220