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 10, 2017
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメイン駆動設計 コンテキストマップについて
社内勉強会にて発表した、
ドメイン駆動設計に全く触れたことがない人向けに作成したスライドです。コンテキストマップのみに内容を絞っています。
honodera
February 10, 2017
More Decks by honodera
See All by honodera
(なんとなくわかった気になれる)ドメイン駆動設計の概要
honodera
5
1k
Other Decks in Programming
See All in Programming
Introducing Stack Pull Request in GitHub
kkamegawa
0
120
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
T3DD26: From RAGs to Riches
martinhelmich
0
130
異なる設計思想のフレームワークを経験して得た学び
amekuhideki
2
1.3k
Cloudflare is Agents
chimame
0
190
Go 1.27 における memory allocation の高速化
andpad
0
360
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
230
Discordを用いたラボオートメーション関連情報収集の自動化
noguhiro2002
0
480
「人を評価する AI」の設計と実装
ryoyanara
0
270
高専キャリア LT 発表内容
crysta1221
6
5.3k
思考垂れ流し開発 ~音声入力 × AIエージェント × 開発ハーネスによる試行錯誤~
npostring
0
580
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
130
Featured
See All Featured
Ruling the World: When Life Gets Gamed
codingconduct
0
310
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.6k
jQuery: Nuts, Bolts and Bling
dougneiner
66
8.6k
The agentic SEO stack - context over prompts
schlessera
0
880
Darren the Foodie - Storyboard
khoart
PRO
3
3.8k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.9k
Building Flexible Design Systems
yeseniaperezcruz
330
41k
30 Presentation Tips
portentint
PRO
1
380
Docker and Python
trallard
47
4.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Rebuilding a faster, lazier Slack
samanthasiow
85
9.6k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
Transcript
υϝΠϯۦಈઃܭ ίϯςΩετϚοϓͷ ֓ཁ
લճDDDͷ֓ཁ ʹ͍ͭͯઆ໌͠·ͨ͠ ࠓճίϯςΩετϚοϓʹ ͍ͭͯ
(ಋೖ) ίϯςΩετϚοϓ ͬͯͳΜͰ͔͢ʁ
ίϯςΩετϚοϓͱ • DDDͷύλʔϯϥϯήʔδͷ̍ͭ ίϯςΩετϚοϓDDDΛߟҊͨ͠ΤϰΝϯ εͬͯਓ͕OO+XPͰͬͨͱ͖ͷ࣮ફΛ׆͔͠ ͯߟҊͨ͠ܦݧଇɺ๏ଇͷ̍ͭ(͜͏͍͏ͱ͖ʹ͜ ΜͳऔΓΈΛߦͳͬͨΒ͏·͍ͬͨ͘తͳ) ※ύλʔϯϥϯήʔδ...ൃݟ͔Βղܾͷϓϩ ηεͷҰఆͷϧʔϧΛهड़ͨ͠ͷ
DDDͷଞͷύλʔϯׂѪ • ϢϏΩλεݴޠ ϓϩδΣΫτʹؔ͢ΔʮاըɺઃܭɺϓϩάϥϚɺσβΠφʔɺ ސ٬ɺίʔυɺυΩϡϝϯτʯ͕ڞ௨ͷݴޠͰཧղ͞ΕΔ͜ͱ • ϨΠϠԽΞʔΩςΫνϟ υϝΠϯʹؔ͢Δίʔυ͕֤ϨΠϠʹࢄ͢ΔͱɺίʔυΛಡΜͰ ҙຯΛཧղ͢Δ͜ͱ͕ࠔʹͳΔɻυϝΠϯʹؔ͢ΔॲཧυϝΠ ϯʹدͤΔ
• υϝΠϯͷߏཁૉ(ΤϯςΟςΟɺΦϒδΣΫτɺαʔϏε...) υϝΠϯͷΫϥεΛͲͷΑ͏ʹ࡞͍͔ͬͯ͘ • ଞ͍Ζ͍Ζ
(ຊ) ίϯςΩετϚοϓ ͷৄࡉͳઆ໌
υϝΠϯΛྨͯ͠ ͦΕͧΕͷؔ࿈Λཧ͢Δ
͜Μͳײ͡Ͱᶃ UUpstream(ఏڙ͢Δଆ) DDownstream(ఏڙ͞ΕΔଆ)
͜Μͳײ͡Ͱᶄ
υϝΠϯʹ͍ͭͯ෮श • ࠷େ͖͍υϝΠϯ(ϏδωευϝΠϯ/Ϗδωε ͷେ)ʮhogeࣾͷఏڙ͍ͯ͠ΔαʔϏεfooʯ →େͱͳΔ↑ษڧձͰࢼ͠ʹ࡞Δࡍɺ·ͣ࠷ॳ ʹશһͰܾΊͯಉҙͨ͠΄͏͕͍͍͔ • Ұ෦Λࢦ͢߹ʹʮίΞυϝΠϯʯٴͼʮαϒ υϝΠϯʯͱ͍͏ݴ༿Λ͏
αϒυϝΠϯͬͯ (খചۀऀʹΑΔΦϯϥΠϯൢചΛྫʹ͢Δͱ...) • ϏδωευϝΠϯʮECίϚʔεʯͱ͔ • 4ͭͷओཁͳαϒυϝΠϯ 1.Χλϩά(ങ͍٬ʹݟͤΔ)ɺ2.จ(ങ͍٬͔Βड͚ ͚Δ)ɺ3.ٻ(ۚΛऩ͢Δ)ɺ4.ൃૹ(ങ͍खʹΛൃૹ͢ Δ)ɺଞࡏݿͱ͔͍Ζ͍Ζ... ※ൢച͢Δ෯͍ͷͰͦͷৄࡉؾʹ͠ͳ͍
ίΞυϝΠϯͬͯ • ڝ߹ଞࣾʹର͢Δ༏ҐΛཱ֬Ͱ͖ΔͳͲɺϏδωεΛߦͳͬ ͍ͯ͘͏͑Ͱॏཁͳ͜ͱؚ͕·Ε͍ͯΔͷ • αϒυϝΠϯͷྫ(DDDຊͷྫ)Ͱɺݕ౼͍ͯͬͨ݁͠Ռ ʮधཁ༧ଌػೳʯͱ͍͏υϝΠϯ͕Ճ͞ΕɺίΞυϝΠ ϯͱͨ͠ • ৫Λޭʹಋ͘ॏཁͳͷ
ษڧձͰ͏ͪʹͱͬͯ࠷ॏཁͳͷͳʹ͔ɺͦΕͧ Εߟ͑ͯΈ͍ͯͩ͘͞
ίϯςΩετϚοϓ࡞ͷ ਐΊํ 1. ͲΜͳαϒυϝΠϯ͕͋Δ͔ڍ͛Δ 2. ίΞυϝΠϯͲΕ͔ΈΜͳͰ͠߹ܾͬͯΊΔ 3. αϒυϝΠϯಉ࢜ͷؔ࿈ΛΈΜͳͰ͠߹ܾͬͯΊΔ 1.ʙ3.Λ܁Γฦ͢(ҰͰᘳʹͰ͖͕͋ΔͷͰͳ͍ ͷͰɺ܁Γฦٞ͢ΛॏͶΔ)
ࡉ͔͍ਐΊํ֤νʔϜʹ͓·͔ͤ
ίϯςΩετؒͷؔᶃ • ύʔτφʔγοϓ ྆νʔϜ͕ڠྗ͢Δɻ૬ޓґଘͷؔ • ڞ༗Χʔωϧ ໌ࣔతʹڥքΛܾΊɺҰͭͷυϝΠϯΛ2ͭͷνʔϜ͕ڞ༗͢Δɻ ͦͷࡍϢϏΩλεݴޠ߹ΘͤΔ • ސ٬/ڙڅऀͷ։ൃ
(্ྲྀνʔϜͷޭͷͨΊʹ)্ྲྀ͕ԼྲྀνʔϜͷχʔζʹԠ͑Δ • ॱԠऀ ্ྲྀ(ఏڙ͢Δଆ)͕Լྲྀ(ఏڙ͞ΕΔͷΛ͏ଆ)ͷཁٻʹԠ͑ͯ͘Εͳ͍ͷͰ͖͋ ΒΊΔɻզຫɻ
ίϯςΩετؒͷؔᶄ • ഊࢭ(ACL AntiCorruptin Layer) ͦΕͧΕͷίϯςΩετʹͯར༻͢ΔϞσϧΛมΛ྆ํʹରͯ͠ߦ͏ɻ ͦΕͧΕͷίϯςΩετʹӨڹͳ͍ • ެ։ϗεταʔϏε(Open Host
Service) αϒγεςϜΛΞΫηεͰ͖ΔΑ͏ʹ͢ΔϓϩτίϧΛఆٛɻશһ͕༻Ͱ͖Δ • ެද͞Εͨݴޠ(Published Language) ίϯςΩετͷϞσϧಉ࢜Λม͢Δࡍʹڞ༗ͷݴޠΛఆٛ͢Δ • ผʑͷಓ ॱԠऀͷΑ͏ʹզຫ͢Δ͜ͱͳ͘ɺ͓ผΕɻඞཁͳͷΛࣗͨͪͰ࡞Δ • େ͖ͳటஂࢠ (ίϯςΩετؒͷؔͱ͍͏͔ίϯςΩετͷঢ়ଶ?)ͻͲ͍ঢ়ଶͷશମΛେ͖͘ғΉڥքΛ ࡞Δ
ίϯςΩετϚοϓΛ࡞Δత ʗϝϦοτ • ΓऔΓ͕ඞཁʹͳΔγεςϜΛѲͰ͖Δ • ڊେͳటͩΜ͝ͷΑ͏ͳίϯςΩετͱؔΘΔࡍʹ༗༻ ൴Βͱͷؔ࿈Λ͖ͪΜͱөͤ͞ݟΛಘ͓ͯ͘ɻͲ͜ͰνʔϜؒͷίϛϡ χέʔγϣϯ͕ඞཁʹͳΔ͔அͰ͖ΔΑ͏ʹͳΔ • νʔϜؒͷΓऔΓΛԁʹ͢ΔͨΊʹར༻Ͱ͖Δ
ਤʹͳ͍ͬͯΔͨΊ͔Γ͍͢ • ґଘ͢ΔଞͷϓϩδΣΫτͱͷؔΛҙਂ͘ߟ͑ΒΕΔΑ͏ʹͳΔ • ৫ͷߏʹؔΘͬͯ͘Δ ݱঢ়ίϯςΩετ㲈νʔϜʹͳ͍ͬͯΔʁ
࡞্ͷҙ • ͋͘·Ͱݱঢ়ɺݱଘ͢ΔͷΛਤࣔ͢Δ͜ͱ কདྷΉ࢟ɺ͋Δ͖࢟Λਤࣔ͢ΔͷͰͳ͍ • ڽΒͳ͍͍ͯ͘ ϗϫΠτϘʔυʹϚʔΧͰॻ͘ఔͰΑ͍ ↑ͱΓ͋͑ͣษڧձͰ্ه̎ͭΛҙ͢ΕΑ͍ • ίϯςΩετϚοϓΛߋ৽͢Δ
• ࡞ͬͨͷډࣨʹܝࣔ͢ΔͳͲͯ͠ϝϯόʔ͕͍ͭͰݟΕΔΑ͏ ʹ