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
かとじゅん
PRO
June 05, 2019
Programming
5
2.3k
ドメイン駆動設計基礎講座_ドメインと組織編_
かとじゅん
PRO
June 05, 2019
Tweet
Share
More Decks by かとじゅん
See All by かとじゅん
私のキャリアの旅路: 技術をきっかけに変化を楽しむ
j5ik2o
PRO
3
630
いかに開発効率と品質を高めるか: ドメイン駆動設計と組織パターンの視点から考える
j5ik2o
PRO
2
1.6k
社内のメンバーに「関数型プログラミングの学習・教育」についていろいろ聞いてみた
j5ik2o
PRO
1
1.4k
AWS データベースブログの記事 「Amazon DynamoDBによる CQRSイベントストアの構築」 を勝手に読み解く
j5ik2o
PRO
2
2k
EIPとAkkaについて
j5ik2o
PRO
3
2.2k
モデルを中心にデザイン(設計)すること
j5ik2o
PRO
2
2.2k
ドメインイベントの観点から再考するソフトウェア設計
j5ik2o
PRO
16
9.5k
セキュリティのためのソフトウェア設計について
j5ik2o
PRO
4
1.8k
AWS Dev Day 2021 - AWSでスケーラビリティとレジリエンスを実現するアーキテクチャを考える
j5ik2o
PRO
2
1.6k
Other Decks in Programming
See All in Programming
Elm Form Validation
bkuhlmann
0
510
DMMプラットフォームがTiDB Cloudを採用した背景
pospome
8
4k
0→1と1→10の狭間で Javaという技術選定を振り返る/Reflecting on the Decision to Choose Java Between Scaling from 0 to 1 and 1 to 10
jaguar_imo
2
380
Build Apps for iOS, Android & Desktop in 100% Kotlin With Compose Multiplatform (mDevCamp 2024)
zsmb
0
320
Scalable Customer Journey Orchestration (CJO)
lewuathe
0
210
Hanami and htmx
bkuhlmann
0
210
冗長なエラーログを削減し、スタックトレースを手に入れる / Reducing Verbose Error Logs and Obtaining Stack Traces
upamune
0
520
Compose-View Interop in Practice (mDevCamp 2024)
stewemetal
0
130
Snowflakeで眠ったデータを起こそう!
estie
0
120
What We Can Learn From OSS
inouehi
0
420
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
920
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
26
8.2k
Featured
See All Featured
Teambox: Starting and Learning
jrom
128
8.4k
Unsuck your backbone
ammeep
663
57k
Docker and Python
trallard
34
2.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
13
4.6k
KATA
mclloyd
15
12k
Designing for humans not robots
tammielis
248
25k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
116
18k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
7
1k
Building Flexible Design Systems
yeseniaperezcruz
319
37k
The Invisible Customer
myddelton
114
12k
How GitHub Uses GitHub to Build GitHub
holman
468
290k
The Language of Interfaces
destraynor
151
23k
Transcript
υϝΠϯۦಈઃܭجૅߨ࠲ ʙυϝΠϯͱ৫ฤʙ ͔ͱ͡ΎΜ !KJLP
υϝΠϯͱ#$
υϝΠϯͱ#$ w υϝΠϯ ྖҬ w Ϗδωεͷઓུ՝Λੳ໌֬Խ͢ΔྖҬ w #$ڥք͚ͮΒΕͨίϯςΩετ ղܾྖҬ
w Ϗδωεͷઓུ՝Λղܾ͢ΔྖҬ
αϒυϝΠϯ w ίΞυϝΠϯ w ৫Λޭʹಋ͘࠷ॏཁͳ ͷ w αϒυϝΠϯ w ࢧԉυϝΠϯ
w ϏδωεʹඞཁෆՄܽͩ ͕ίΞυϝΠϯ΄ͲॏཁͰ ͳ͍ͷ w ൚༻υϝΠϯ w ϏδωεʹಛผͰͳ͍͕ શମͱͯ͠ඞཁͳͷ ೝূ ܥ ֎෦&31ͳͲࠩ͠ସ͑ Մೳͳͷ υϝΠϯ ࢧԉυϝΠϯ ൚༻υϝΠϯ ίΞυϝΠϯ
&ίϚʔεͷυϝΠϯੳྫ υϝΠϯ &ίϚʔε#$ Χλϩά จ ٻ ൃૹ ࡏݿ w ଟ͘ͷؔ৺ࣄ͕୯Ұ#$ʹด͡ࠐΊΒΕͯ͢ͷཁٻʹରԠͰ͖ͳ͍
w ຊ࣭తͰͳ͍ґଘ͕ൃੜ͠มߋ༰қੑ͕Լ͢Δ w ৫ͷίϛϡχέʔγϣϯෳࡶԽ͢Δ w ຊདྷαϒυϝΠϯɾ#$ຖʹׂ͞ΕΔ͖ w ग़య࣮ફυϝΠϯۦಈઃܭ
αϒυϝΠϯͷੳ w ෳࡶʹབྷΈ߹ͬͨϞ σϧΛղ͠ɺػೳ ʹج͍ͮͨαϒυϝ Πϯʹׂ͢Δ w αϒυϝΠϯ#$ͷ ؔੑཧ͢Δ w
#$͕αϒυϝΠϯ ͚ͩͰΓཱͭͱ ݶΒͳ͍͕ɺͰ͖Ε #$ʹαϒυϝΠ ϯ͕·͍͠ w ग़య࣮ફυϝΠϯۦ ಈઃܭ υϝΠϯ &ίϚʔε#$ ٻ จ Χλϩά ࡏݿ#$ ൃૹ धཁ༧ଌ#$ ࡏݿ
ίΞυϝΠϯͷੳ w ࡏݿͷ࠷దԽ͕՝ w ചΕߦ͖͕Α͍Λޮతʹࡏݿ͠ɺചΕͳ͍ ͷࡏݿΛ֬อ͠ͳ͍ɻ w ࢿۚޮΛվળ͠ചΕےͷࡏݿΛ֬อ͘͢͠ ͢Δɻ·ͨɺ༧Λ্ճΔചΕߦ͖Λݟͤͨͱ͖ɺ ͦͷͷࡏݿ֬อͰ͖ͳ͚ΕͳΒͳ͍ɻ
w কདྷͷࡏݿྔച্ݟࠐΈΛաڈͷ͔ΒஅͰ ͖Εେ͖ͳॿ͚ʹͳΔɻ͜ͷΑ͏ͳधཁ༧ଌػೳ ͷಋೖ৽ͨͳίΞυϝΠϯʹͳΔͩΖ͏
ίϯςΩετϚοϓͷత w γεςϜؒͷؔΛదʹ ѲͰ͖Δ w νʔϜطଘγεςϜͱͷ࿈ ܞํ๏ΛѲͰ͖ɺଞνʔϜ ͱͷίϛϡχέʔγϣϯͷඞ ཁੑΛஅͰ͖ΔΑ͏ʹͳΔ w
ίϯςΩετϚοϓ৫ؒ ͷΛݟ͚ͭग़ͤΔ།Ұͷ υΩϡϝϯτͱͳΔͨΊɺϓ ϩδΣΫτͷޭʹෆՄܽͱ ͞Ε͍ͯΔ w ग़య࣮ફυϝΠϯۦಈઃܭ ೝূɾΞΫηε ΞδϟΠϧ ϓϩδΣΫτཧ ίϥϘϨʔγϣϯ 6 6 6 % % %
ίϯςΩετϚοϓͷύλʔϯ w ৫ύλʔϯ w νʔϜͷؔΛ ද͢ w ౷߹ύλʔϯ w σʔλͱγες
Ϝͷ࿈ܞํ๏Λ ද͢ νʔϜ# νʔϜ" γεςϜ# γεςϜ" ձ σʔλ
৫ύλʔϯ
ύʔτφʔγοϓ w ೋͭͷίϯςΩετΛ୲͢ΔνʔϜ͕ޭɾࣦഊͷ ӡ໋Λڞʹ͢Δ৫ύλʔϯ ӡ໋ڞಉମ w νʔϜؒͰڠྗతͳؔΛங͖ɺ։ൃͷϓϥϯχϯά ΠϯςάϨʔγϣϯͷཧڞಉͰߦ͍ɺ͓ޓ͍ͷ χʔζΛຬͨ͢Α͏ʹ͢Δඞཁ͕͋Δɻ૬ޓґଘ͢Δ
ػೳ͓ޓ͍ͷϦϦʔεʹؒʹ߹͏Α͏ʹ։ൃ͢Δ $POUFYU# $POUFYU"
ผʑͷಓ w ίϯςΩετΛ͢Δ৫ύλʔϯ w ೋͭͷػೳͷू߹͕͓ޓ͍ʹͱͬͯෆՄܽͰͳ͍ͳ Β͢Δ͜ͱ͕Ͱ͖Δ w ΠϯςάϨʔγϣϯͷߴίετΛΘ͟Θ͟͏ඞཁ ͳ͍ɻ։ൃऀ͕ͦͷখ͍͞είʔϓͰγϯϓϧͰಛԽ ͨ͠ղܾࡦΛݟ͚ͭΒΕΔΑ͏ʹ͢Δ
$POUFYU# $POUFYU"
ॱԠऀ w ্ྲྀԼྲྀ͕ؔ͋Δ৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀ͕Լྲྀͷཁٻ ʹԠ͑Δಈػ͕ͳ͍ɻ w ্ྲྀʹԼྲྀͷ൱ͷ͕ͳ͍ w ԼྲྀνʔϜ#$ؒͷมͷखؒ Λলͨ͘Ίʹɺ্ྲྀʹ༩͑ΒΕ
ͨϞσϧͰզຫ͢͠Δ͜ͱʹͳ Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
ސ٬ڙڅऀ w ্ྲྀԼྲྀ͕ؔ͋Δ৫ύλʔ ϯɻͨͩ͠ɺ্ྲྀͷνʔϜ͕ޭ ͢Δ͔Ͳ͏͔͕Լྲྀͷ݁Ռʹࠨӈ ͞ΕΔ w ্ྲྀνʔϜԼྲྀνʔϜͷχʔζ ʹ༷ʑͳํ๏ͰରԠ͢Δඞཁ͕͋ ΔɻԼྲྀͷ༏ઌॱҐΛߟྀͯ͠ɺ
্ྲྀͷϓϥϯχϯάΛߦ͏ɻԼྲྀ ͷཁ݅ʹඞཁͱͳΔ࡞ۀʹ͍ͭͯ ަব͠ɺ༧ࢉΛཱͯΔ͜ͱͰఏڙ ͷଋͱεέδϡʔϧΛશһ͕ཧ ղͰ͖ΔΑ͏ʹ͢Δ $POUFYU# $POUFYU" 6QTUSFBN %PXOTUSFBN
౷߹ύλʔϯ
ڊେͳటஂࢠ #JH#BMMPG.VE w ڥք͕ͳ͍͘͠ᐆດͳγεςϜΛ ࣔ͢Ξϯνύλʔϯ w ෳͷ֓೦ମܥ͕ࠞ͟Γ߹͍ɺఆٛ ϧʔϧ͕ᐆດͳͬͨΓໃ६͢Δɻػೳ Ճ͞ΕΔͱJGDBTFͳͲͷذϩδο Ϋ͕૿͑ΔɻґଘؔιϑτΣΞ
Λԣஅ͠࠷ऴతʹటஂࢠʹͳΔ w &ίϚʔεͷͱࡏݿͷผͷ ֓೦͕ͩɺڥք͕ͳ͍ͷͰͯ͢ͷཁ ٻΛຬͨ͢ɺਆϞσϧͱͯ͠ͷϞ σϧ͕Ͱ͖͕͋Δɻཧղมߋࠔ ʹʜ w ࠷ਓؾ͕͋Δઃܭख๏Ͱ͋Δʜ $POUFYU# $POUFYU" $POUFYU$
ڞ༗Χʔωϧ w Ұ෦ͷϞσϧͦΕʹؔ࿈͢Δ ίʔυΛڞ༗͢Εɺ૬ޓґଘ ੑ͕ඇৗʹߴ·Δɻ w ઃܭ࡞ۀͷॿ͚ʹͳΔ͜ͱ͋ ΕɺٯʹअຐʹͳΔ͜ͱ͋ ΔɻҰํͷνʔϜʹ૬ஊͤͣʹ มߋͯ͠ͳΒͳ͍ɻ
w ໌ࣔతͳڥքΛఆΊɺೋͭͷ νʔϜ͕߹ҙͨ͠υϝΠϯϞσ ϧͷαϒηοτΛࢦఆ͢Δ $POUFYU# $POUFYU"
ഊࢭ "$- w ഊͨ͠ੈքͷϞσϧΛ৽͍͠ੈքʹ ࣋ͪࠐ·ͳ͍ͨΊͷ౷߹ύλʔϯ w ԼྲྀͷΫϥΠΞϯτִ͢ΔͨΊͷ ϨΠϠʔΛ࡞͢Δ͜ͱʹΑͬͯɺ্ ྲྀͷγεςϜͷػೳΛಠࣗͷυϝΠϯ Ϟσϧͷ༻ޠͰදݱ͢ΔػೳΛఏڙ͢
Δ w "$-طଘͷ*'Λͯ͠ଞͷγες Ϝͱ௨৴͢ΔͷͰɺଞͷγεςϜΛम ਖ਼͢Δඞཁ΄ͱΜͲͳ͍͔ɺ·ͬͨ ͘ͳ͍͜ͱ͋Δɻ෦తʹɺ͜ͷ ϨΠϠʔ͕ඞཁʹԠͯ͡ೋͭͷϞσϧ ؒͰͷมΛ྆ํʹରͯ͠ߦ͏ $POUFYU# $POUFYU" "$-
ެ։ϗεταʔϏε 0)4 w ϓϩτίϧΛαʔϏεͱͯ͠ެ։͠ɺαϒγεςϜͱ ౷߹͢Δඞཁ͕͋Δ৫͕ར༻Ͱ͖ΔΑ͏ʹ͢Δ w ৽͍͠౷߹ͷཁ݅ʹରԠ͢Δࡍɺϓϩτίϧʹػೳ ΛՃ֦͠ு͢Δɻͨͩ͠ɺ͋ΔνʔϜ͚ͩʹಛ༗ͷ ཁٻผͩɻͦͷΑ͏ͳಛघͳέʔεʹɺҰճݶΓ ͷมαʔϏεΛ༻ͯ͠ϓτϩτίϧΛ֦ு͠ɺڞ
༗ϓϩτίϧ୯७ͰҰ؏ੑͷ͋Δঢ়ଶΛอͭ͜ͱɻ $POUFYU# $POUFYU" 0)4
ެද͞Εͨݴޠ 1- w ͭͷڥքͷϞσϧಉ࢜Λม͢ΔͨΊʹڞ௨ͷ ݴޠΛ͏ɻ w ϞσϧΛ͜ͷڞ௨ݴޠʹมͨ͠ޙʹɺҰํͷϞσ ϧม͢Δ w ެද͞Εͨݴޠެ։ϗεταʔϏεͱΈ߹Θͤ
ͯར༻͞ΕΔ͜ͱ͕ଟ͍ $POUFYU# $POUFYU" 1-
#$ͱϚΠΫϩαʔϏε
#$ͱϚΠΫϩαʔϏε w #$ʹԊͬͯαʔϏεڥքΛҾ͘ɻνʔϜ#$ʹҰக ͢Δ͜ͱʹͳΔɻ#$ͷυϝΠϯ֓೦ΛѲ͢͠ ͘ͳΔɻཁٻมԽ࣌ʹมߋରͷαʔϏε͕ಛఆ͞ Εɺมߋ͢Δඞཁͷ͋ΔՕॴ͕ݮΓɺਝʹσϓϩΠ Ͱ͖ΔΑ͏ʹͳΔ w #$ͷαʔϏε͕͓ޓ͍ʹର͢ΔαʔϏεʹ͋Δ Մೳੑ͕ߴ·ΓɺγεςϜઃܭͱϦϦʔεௐ͕༰қ
ʹͳΔɻ w Ϗδωεརؔऀͱͷରͷํʹؔͯ͠ɺνʔϜ ͕ͷઐՈͱΑ͍ؔΛங͖͘͢ͳΔ
#$γεςϜͷڥքʹ৫ͷڥք
৫ΞʔΩςΫνϟʹӨ͞ΕΔ w ΠϊϕʔγϣϯͷδϨϯϚΑΓ
ίϯΣΠͷ๏ଇ w γεςϜΛઃܭ͢Δ͋ΒΏΔ৫ɺඞͣͦͷ৫ͷίϛϡχ έʔγϣϯߏʹ฿ ͳΒ ͬͨߏΛ࣋ͭઃܭΛੜΈग़͢ɻ w ͭ·Γɺ৫ͷߏγεςϜͷߏͱἧ͑ͯͳ͚ΕͳΒͳ ͍ɻ w
ٯίϯΣΠઓུ ग़య"/"(*-&8": w lࣗͨͪͷ·͍͠ΞʔΩςΫνϟઃܭΛଅਐ͢ΔΑ͏ ʹɺνʔϜͱ৫ଆΛػಈతʹਐԽͤ͞Δ͜ͱΛਪ͢Δɻ ཧతʹʮٕज़తΞʔΩςΫνϟʯ͕ʮϏδωεΞʔΩς Ϋνϟʯͷಉܗࣸ૾ʹͳΔΑ͏ʹz w ʮਓؒ৫ؒͷίϛϡχέʔγϣϯʢใྲྀʣʯͱ͍͏ ͷ͕ιϑτΣΞ։ൃʹܾఆతͳΠϯύΫτΛ༩͑Δɺͱ ͍͏͜ͱΛ·ͣೝΊɺͦΕΛੵۃతʹ׆༻͢ΔΑ͏ʹɺͱ͍ ͏͜ͱͰ͢ɻ
·ͱΊ w ڥք͚ͮΒΕͨίϯςΩετ #$ Ϟσϧͷ༗ޮൣ ғͱݴΘΕΔɻͦͷϞσϧརؔऀؒγεςϜ ؒͰར༻͞ΕΔɻ͜ͷಛੑʹ߹Θͤͯɺ৫ͷڥք ʹγεςϜͷڥքͱͳΔΑ͏ʹ͢Δ͜ͱ͕·ΕΔ w ʮιϑτΣΞձͰͰ͖ͯΔʯͱ͍͏ݴ༿͋
Δɻ৫͕վม͞ΕΔͱ͖ɺίϛϡχέʔγϣϯ ͷมԽ͕ιϑτΣΞ༩͑ΔӨڹΛແࢹͰ͖ͳ ͍ɻࡶͳίϛϡχέʔγϣϯγεςϜΛෳࡶʹ͢ ΔՄೳੑ͋Δ͠ɺ৫ؒͷׂ͕γϯϓϧʹͳΕ ɺͦΕΛӨͨ͠γεςϜγϯϓϧʹͳΔ͔͠ Εͳ͍