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
990
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
(なんとなくわかった気になれる)ドメイン駆動設計の概要
社内勉強会にて発表した、
ドメイン駆動設計に全く触れたことがない人向けに作成したスライドです。
honodera
February 05, 2017
More Decks by honodera
See All by honodera
ドメイン駆動設計 コンテキストマップについて
honodera
0
1.1k
Other Decks in Programming
See All in Programming
関数型プログラミングのメリットって何だろう?
wanko_it
0
160
自作OSでスライド発表する
uyuki234
1
3.8k
PHPだって関数型したい 〜できること、できないこと〜 / fp-in-php
jsoizo
0
190
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
0
100
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.9k
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
310
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
840
JAWS-UG横浜 #102 AWSサ終供養LT会 成仏できない AWS サービスたち 〜本日、三体供養します〜
maroon1st
0
110
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
510
初めてのKubernetes 本番運用でハマった話
oku053
0
120
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
260
Featured
See All Featured
16th Malabo Montpellier Forum Presentation
akademiya2063
PRO
0
200
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.7k
Chasing Engaging Ingredients in Design
codingconduct
0
230
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
150
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
sira's awesome portfolio website redesign presentation
elsirapls
0
300
AI: The stuff that nobody shows you
jnunemaker
PRO
8
820
Designing for Performance
lara
611
70k
BBQ
matthewcrist
89
10k
Everyday Curiosity
cassininazir
0
250
Technical Leadership for Architectural Decision Making
baasie
3
440
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