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
5
980
(なんとなくわかった気になれる)ドメイン駆動設計の概要
社内勉強会にて発表した、
ドメイン駆動設計に全く触れたことがない人向けに作成したスライドです。
honodera
February 05, 2017
Tweet
Share
More Decks by honodera
See All by honodera
ドメイン駆動設計 コンテキストマップについて
honodera
0
1.1k
Other Decks in Programming
See All in Programming
それ CLI フレームワークがなくてもできるよ / Building CLI Tools Without Frameworks
orgachem
PRO
17
3.8k
Webinar: AI-Powered Development: Transformiere deinen Workflow mit Coding Tools und MCP Servern
danielsogl
0
110
LLMは麻雀を知らなすぎるから俺が教育してやる
po3rin
3
2.1k
#QiitaBash TDDで(自分の)開発がどう変わったか
ryosukedtomita
1
360
CLI ツールを Go ライブラリ として再実装する理由 / Why reimplement a CLI tool as a Go library
ktr_0731
3
1k
あなたとJIT, 今すぐアセンブ ル
sisshiki1969
1
600
パスタの技術
yusukebe
1
300
抽象化という思考のツール - 理解と活用 - / Abstraction-as-a-Tool-for-Thinking
shin1x1
1
960
自作OSでDOOMを動かしてみた
zakki0925224
1
1.3k
Infer入門
riru
4
1.4k
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
120
decksh - a little language for decks
ajstarks
4
21k
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
134
9.5k
The World Runs on Bad Software
bkeepers
PRO
70
11k
Balancing Empowerment & Direction
lara
1
540
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
139
34k
Product Roadmaps are Hard
iamctodd
PRO
54
11k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
110
19k
A designer walks into a library…
pauljervisheath
207
24k
Visualization
eitanlees
146
16k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
283
13k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
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