Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
ドメイン駆動設計の紹介
haljik
September 27, 2018
Programming
0
65
ドメイン駆動設計の紹介
haljik
September 27, 2018
Tweet
Share
More Decks by haljik
See All by haljik
develop-with-domain-expert
haljik
1
800
Isolating-the-domainの紹介
haljik
3
1.2k
普段使いのDDD
haljik
21
8.3k
実録Spring MVC
haljik
10
4.1k
ドメイン駆動設計を軽快に実践するための工夫
haljik
22
7k
Other Decks in Programming
See All in Programming
Reactでアプリケーションを構築する多様化
sakito
4
3.3k
Loom is Blooming
josepaumard
3
540
Get Ready for Jakarta EE 10
ivargrimstad
0
2.2k
Named Document って何?
harunakano
0
370
脱オブジェクト指向講座(5分LT資料)
kishida
8
11k
Let's make a contract: the art of designing a Java API
mariofusco
0
160
【Qiita Night】新卒エンジニアによるSwift6与太予想
eiji127
0
180
Go API クライアントの実装 〜Go Conference に載せれなかったTIPS〜
yyoshiki41
0
190
mrubyを1300円のボードで動かそう
yuuu
0
180
Managing gRPC with Wire
oldergod
2
150
競プロへの誘 -いざな-
u76ner
0
350
From Java 11 to 17 and beyond
josepaumard
0
290
Featured
See All Featured
Visualization
eitanlees
124
11k
How To Stay Up To Date on Web Technology
chriscoyier
780
250k
Three Pipe Problems
jasonvnalue
89
8.6k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
Become a Pro
speakerdeck
PRO
3
770
Build your cross-platform service in a week with App Engine
jlugia
219
17k
How to Ace a Technical Interview
jacobian
265
21k
Adopting Sorbet at Scale
ufuk
63
7.5k
Why Our Code Smells
bkeepers
PRO
324
54k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
151
12k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
38
12k
VelocityConf: Rendering Performance Case Studies
addyosmani
316
22k
Transcript
υϝΠϯۦಈઃܭͷհ େਖ਼(FFL/JHIU7PM !IBMKJL
ࣗݾհ w Δͬ͘͡ w 5XJUUFS!IBMKJL w ϑϦʔϥϯε w +BWBϓϩάϥϚʔ w
̍ࣇͷ w ϚΠΫϩαʔϏε͕Θ͔Γ· ͤΜ
ࢲͷυϝΠϯۦಈઃܭྺ w ژ%%%ಡॻձʹࢀՃͨ͠ͷ͕࠷ॳ w ݱࡏ·ͰখنͭɺதنͷͭͷϓϩδΣΫτͰυϝΠ ϯۦಈઃܭΛ࣮ફ w ΄΅8FCΞϓϦͷΈ w ҰԠશγεςϜ͕ݱͰར༻͞Ε͍ͯΔঢ়گ
w ͏·͍͍ͬͯ͘Δͱ͜Ζ͋Δ͕ɺਂ͍Ϟσϧʹ౸ୡͰ͖ ͳ͍··ऴΘΓɺطʹϞσϧͷҙਤ͕Խͯ͠Δͷ
%%%ʹର͢Δࢲͷݱঢ় w શʹཧղͨ͠ w ͳʹΘ͔Βͳ͍ w ͪΐͬͱͰ͖Δ w ͳʹΘ͔Βͳ͍͜͜
ΤϦοΫɾΤϰΝϯεͷ υϝΠϯۦಈઃܭ͔Β w ·͕͖͑ʙୈ෦υϝΠϯϞσϧΛػೳͤ͞Δ w ·͕͖͑ w ୈষɿࣝΛ͔Έࡅ͘ w ୈষɿίϛϡχέʔγϣϯͱݴޠͷ͍ํ
w ୈষɿϞσϧͱ࣮Λ݁ͼ͚ͭΔ w ୈ෦Ϟσϧۦಈઃܭͷߏཁૉ w ୈষɿυϝΠϯΛִ͢Δ w ୈষɿιϑτΣΞͰදݱ͞ΕͨϞσϧ w ୈষɿݴޠΛ༻͢Δ w ୈ෦ΑΓਂ͍ಎ͔͏ϦϑΝΫλϦϯά w ୈষɿ͠ͳ͔ͳઃܭ͔Βʮ֓೦ͷྠֲʯ w ୈ෦ઓུతઃܭ w ୈষɿڥք͚ͮΒΕͨίϯςΩετ w ୈষɿৠཹ
ҙ ͔ͬ͜ॻ͖ ʜ ͷதࢲݟͰ͢
·͕͖͑ʙୈ̍෦ υϝΠϯϞσϧΛػೳͤ͞Δ w ·͕͖͑ w ୈ̍ষɿࣝΛ͔Έࡅ͘ w ୈ̎ষɿίϛϡχέʔγϣϯͱݴޠͷ͍ํ w ୈ̏ষɿϞσϧͱ࣮Λ݁ͼ͚ͭΔ
·͕͖͑ w ෳࡶ͕͞՝Ͱ͋Δ w ར༻ऀͷ׆ಈʹؔ͢ΔΛղܾ͢Δͷ͕ιϑτΣ Ξͷ֩৺ ͦΕҎ֎ͲΕ΄Ͳʮॏཁʯͩͱͯͦ͠ΕΛࢧ͑Δ ͷͰ͔͠ͳ͍ w ։ൃ͕ΠςϨʔςΟϒͰ͋Δલఏ
w ։ൃऀͱυϝΠϯΤΩεύʔτ͕ີʹؔΘ͍ͬͯΔ લఏ
ୈ̍ষ ࣝΛ͔Έࡅ͘ w ΄ͱΜͲ͕ࣝͳ͍୯७ͳϞσϧ͔ΒձΛ࢝ΊΔ w ։ൃऀͷ࣭ʹ͑Δ͜ͱͰυϝΠϯΤΩεύʔτࣝͷཧղ͕ਫ਼៛ʹͳΔ w ։ൃऀͪΖΜ͕ࣝ૿͑Δ w ॏཁͳͷΛϞσϧʹಋೖ͠ɺಉ࣌ʹෆཁͳৄࡉΛল͘
ୈষৠཹͭͳ͕Δ w ͦͷϞσϧΛݩʹ·ͨձΛ͢Δ w ͜ΕΒΛ܁Γฦ͢ w Ӆ͞Εͨ֓೦Λൃݟ͠ਂ͍Ϟσϧʹ౸Δ
ୈ̎ষ ίϛϡχέʔγϣϯͱݴޠͷ͍ํ w ٕज़༻ޠΘͳ͍ w ͍ͭͰͲ͜ͰϢϏΩλεݴޠ w Λग़ͯ͠ϞσϦϯά͢Δ w ҧײ͍͋·͍͞Λݕ
w ಉ͡ҙຯͷΑ͏ʹฉ͑͜Δҧ͏ݴ༿Λݕ ʢ͔ͨ͠͠ΒΘΕΔจ຺͕ҧ͏͔͠Εͳ͍ʣ w ̍ͭͷνʔϜʹ̍ͭͷݴޠ ίϯΣΠͷ๏ଇͱ͔̐ষͷڥք͚ΒΕͨίϯςΩετʹͭͳ͕Δ
ୈ̏ষ Ϟσϧͱ࣮Λ݁ͼ͚ͭΔ w ੳϞσϧͱ࣮ΛҰகͤ͞Δ w ϞσϦϯάύϥμΠϜΛαϙʔτ͢ΔݴޠͰ࣮͠Α͏ w ࣮ફతϞσϥɿੳऀͱ࣮ऀಉ͡ਓ
·͕͖͑ʙୈ̍෦ͷ·ͱΊ w ·͕͖͑ෳࡶ͞ͱ͍͏՝Λఏ͍ࣔͯ͠Δ w ୈ̍෦ͷϢϏΩλεݴޠΛͬͨϞσϧۦಈઃܭυϝΠ ϯۦಈઃܭͷओͳ׆ಈ w ୈ෦Ҏ߱ͯ͢ୈ̍෦Ͱඳ͔Εͨ׆ಈͷதͰΤϦοΫɾ ΤϰΝϯε͕࣮ࡍʹ໘ͨ͠՝ʹର͢ΔιϦϡʔγϣϯ
ୈ෦ Ϟσϧۦಈઃܭͷߏཁૉ w ୈষɿυϝΠϯΛִ͢Δ w ୈষɿιϑτΣΞͰදݱ͞ΕͨϞσϧ w ୈষɿݴޠΛ༻͢Δ
ୈষ υϝΠϯΛִ͢Δ w ΠϯϑϥετϥΫνϟ6*͔ΒυϝΠϯΛִͯ͠ɺूத Ͱ͖ΔΑ͏ʹ͠Α͏ ʢϨΠϠʔυΞʔΩςΫνϟ͚ͩͲɺυϝΠϯ͕Πϯϑϥ ετϥΫνϟʹґଘ͍ͯ͠Δਤʹͳͬͯͯྲྀੴʹݹ͍ʣ
ୈষ ιϑτΣΞͰදݱ͞ΕͨϞσϧ w ΤϯςΟςΟɺΦϒδΣΫτɺαʔϏεͰදݱ͢Δ ʢαʔϏεͬͯͳ͍ʣ w ؔ࿈ w ؔ࿈ͷํॏཁΛද͢͜ͱ͕͋Δ ྫʮຊʯͱͦͷʮ࡞ՈʯͰͲͪΒ͔Βؔ࿈ΛҾ͘ʁ
w ؔ࿈Λ੍ݶͯ͠දݱ͞ΕΔࣝΛ૿͢ w Ұํ௨ߦ w ݶఆ w ຊ࣭తͰͳ͍ؔ࿈আڈ
ΤϯςΟςΟ lͦΕΏ͑ɿz·Ͱ͕ΉͪΌͪ͘Ό͍ʜ w ࡶʹݴ͏ͱɺಉҰੑͷࣝผ͕ඞཁͳέʔε͍Ζ͍Ζ͋Δ ͦΕΏ͑ɺࣝผ͕ඞཁͳΒࣝผ͢ΔΛͬͨϞσϧΛ ࡞Δͷͩͱ͍͏Α͏ͳ͜ͱ͕ॻ͔Ε͍ͯΔ w γϯϓϧʹอͬͯࣝผʹूத͢Δ ʢྑ͘Ͱ͖ͨͱײͨ͡ΤϯςΟςΟͷଐੑࣝผʹඞཁͳ
ͷͱΦϒδΣΫτ͚ͩৼΔ͍ࣝผͷͨΊͷͷ ͔ͬͨ͠ʣ
ΦϒδΣΫτ w ԿͰ͋Δ͔Λهड़͢ΔΦϒδΣΫτ ୭Ͱ͋Δ͔ɺͲΕͰ͋Δ͔ؾʹ͠ͳ͍ w Ұաੑͷૢ࡞ͷͨΊʹੜ͞Εͯഁغ͞ΕΔ͜ͱ͋Δ w ෆมʹ͢Δ ʢҰ൪ཻͷখ͍͞ཁૉͰՃܭࢉͱ͍ͬͨzυϝΠϯ ϩδοΫzͷஔ͖ॴʹͳΔʣ
ୈষ ݴޠΛ༻͢Δ w ϞσϧۦಈઃܭΛߦ͍ͬͯ͘தͰɺग़͖ͯͨʹͲ͏ύλʔϯΛద༻͍͔͕ͯ͘͠ඳ͔Ε ͍ͯΔ w ߦΘΕ͍ͯΔҰ࿈ͷαΠΫϧ υϝΠϯΛִ͢Δ ΤϯςΟςΟͱΦϒδΣΫτΛ۠ผ͢Δ ؔ࿈Λઃܭ͢Δ
ूͷڥքͱϦϙδτϦΛબʢ͜Εೖग़ྗͷؔ৺ࣄ৭͕ڧ͍ͷͰॳظͷϞσϧͰؾʹ͠ͳ ͯ͘Α͍͔ͳʣ γφϦΦΛΥʔΫεϧʔ͢Δʢʹͩͯ͠ϞσϦϯάʣ ϦϑΝΫλϦϯά ৽ػೳಋೖ ૯߹ԋशతͳ༰ɻ͜ΕΛΠςϨʔςΟϒʹΔ
ୈ෦ ΑΓਂ͍ಎ͔͏ϦϑΝΫλϦϯά wୈষɿ͠ͳ͔ͳઃܭ
ୈষ ͠ͳ͔ͳઃܭ w ֓೦ͷྠֲ 1 ৽ͨͳཁٻ͕དྷΔͨͼɺͦͷ࣌ͷϞσϧͰ͗ͪ͜ͳ͔͘͠දݱͰ͖ͳ͔ͬ ͨΓɺ͋ͪͪ͜Λมߋ͠ͳ͚ΕରԠͰ͖ͳ͔ͬͨΓ͢Δ෦Λɺදݱ͕γ ϯϓϧʹɺมߋ͕؆୯Ͱ҆શʹͳΔΑ͏ʹϦϑΝΫλϦϯάΛ܁Γฦ͢ɻ݁ Ռͱͯͦ͠ͷ෦͕͠ͳ͔ʹͳ͍ͬͯ͘ɻͦͷաఔͰ֓೦ͷྠֲ͕ݟ͑ͯ
͘Δʢ͋Δ͍ݟ͚ͭʹ͍͘ʣ w มߋ͕Ԡٸॲஔʹ͗͢ͳ͍ͷ͔ɺ҉తͳར༻ऀͷؔ৺ࣄɺߏΛൃݟ ͢Δ͖͔͚ͬʹͳΔͷͳͷ͔Λࣗ͢Δ ʢʮୈ̕ষ҉తͳ֓೦Λ໌ࣔతʹ͢Δʯɺʮୈষৠཹʯʹͭͳ͕ Δɻ୯७ʹॏෳΛল͍ͨΓ͢Δٕज़తͳϦϑΝΫλϦϯάͰͳ͘υϝΠϯ ͷݴ༿ʹͳΓ͏Δ֓೦Λݟ͚ͭग़͢ॏཁͳϓϥΫςΟεɻίʔυ͔ΒͷϑΟʔ υόοΫΛಘΔखஈɻʣ
ୈ෦ ઓུతઃܭ w ୈষɿڥք͚ͮΒΕͨίϯςΩετ w ୈষɿৠཹ
ୈষ ڥք͚ͮΒΕͨίϯςΩετ w ॏෳͨ֓͠೦ɺِಉޠͷݕʢձॏཁʣ w ݱ࣮ੈքͷಉ͡ͷΛҟͳΔଆ໘͔ΒΈͨͱ͖ʹ໊લ͘͠ ׂ͕มΘΔɻ͜ΕΒΛಉ͡Ϟσϧͱͯ͠ѻ͏ͷ͔Ͳ͏͔ݕ౼͢ Δ w ୯ҰϞσϧମܥͷதͰ୯ʹݺͼ͚ΒΕͨΓҟͳΔ֓೦ͱͯ͠ந
ग़Ͱ͖ΔέʔεͱɺଞͷཁૉΛҾ͖࿈ΕͯผͷϞσϧମܥ͕͏ ̍ηοτͰ͖͕͋ΔΑ͏ͳέʔε͕͋Δ w ผͷϞσϧମܥ͕ग़དྷΔέʔε͕ڥք͚ͮΒΕͨίϯςΩετʜ ͜ͷຊͷதͰۤͷࡦͬΆ͍ॻ͔ΕํΛ͍ͯ͠ΔΑ͏ʹݟ͑Δ
ୈ̍̑ষ ৠཹ w υϝΠϯϏδϣϯ໌จͰํ͚ w ڧௐ͞ΕͨίΞʹΑΓίΞυϝΠϯͷ༰Λࢦఆ͢Δ w ύοέʔδϯάͯ͠͠ίΞΛִ͢Δ w ίΞυϝΠϯͷअຐΛ͠ͳ͍Α͏ʹ൚༻αϒυϝΠϯΛ
Γग़͢ w ίΞυϝΠϯͷअຐΛ͠ͳ͍Α͏ʹڽू͞ΕͨϝΧχζϜ ΛΓग़͢