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
かとじゅん
June 05, 2019
Programming
4
2.6k
ドメイン駆動設計基礎講座_ドメインと組織編_
かとじゅん
June 05, 2019
Tweet
Share
More Decks by かとじゅん
See All by かとじゅん
AIコーディングエージェントの現実と設計品質の重要性
j5ik2o
0
87
なぜイベント駆動が必要なのか - CQRS/ESで解く複雑系システムの課題 -
j5ik2o
15
7.3k
アクターシステムに頼らずEvent Sourcingする方法について
j5ik2o
8
1.3k
メッセージとイベントを中核に置いたシステム設計の有用性について
j5ik2o
12
4k
私のキャリアの旅路: 技術をきっかけに変化を楽しむ
j5ik2o
3
940
いかに開発効率と品質を高めるか: ドメイン駆動設計と組織パターンの視点から考える
j5ik2o
5
2.9k
社内のメンバーに「関数型プログラミングの学習・教育」についていろいろ聞いてみた
j5ik2o
2
2.1k
AWS データベースブログの記事 「Amazon DynamoDBによる CQRSイベントストアの構築」 を勝手に読み解く
j5ik2o
2
3.3k
EIPとAkkaについて
j5ik2o
3
2.9k
Other Decks in Programming
See All in Programming
バッチ処理を「状態の記録」から「事実の記録」へ
panda728
PRO
0
150
Software Architecture
hschwentner
6
2.3k
「ちょっと古いから」って避けてた技術書、今だからこそ読もう
mottyzzz
10
6.6k
タスクの特性や不確実性に応じた最適な作業スタイルの選択(ペアプロ・モブプロ・ソロプロ)と実践 / Optimal Work Style Selection: Pair, Mob, or Solo Programming.
honyanya
3
160
Cursorハンズオン実践!
eltociear
2
1k
Writing Better Go: Lessons from 10 Code Reviews
konradreiche
0
980
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
230
デミカツ切り抜きで面倒くさいことはPythonにやらせよう
aokswork3
0
230
2分台で1500examples完走!爆速CIを支える環境構築術 - Kaigi on Rails 2025
falcon8823
3
3.6k
CSC509 Lecture 04
javiergs
PRO
0
300
CSC305 Lecture 06
javiergs
PRO
0
220
Your Perfect Project Setup for Angular @BASTA! 2025 in Mainz
manfredsteyer
PRO
0
170
Featured
See All Featured
Keith and Marios Guide to Fast Websites
keithpitt
411
23k
The Cost Of JavaScript in 2023
addyosmani
54
9k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
30
2.9k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
5.6k
The Art of Programming - Codeland 2020
erikaheidi
56
14k
Mobile First: as difficult as doing things right
swwweet
224
10k
Bash Introduction
62gerente
615
210k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Visualization
eitanlees
149
16k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
189
55k
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 ʮιϑτΣΞձͰͰ͖ͯΔʯͱ͍͏ݴ༿͋
Δɻ৫͕վม͞ΕΔͱ͖ɺίϛϡχέʔγϣϯ ͷมԽ͕ιϑτΣΞ༩͑ΔӨڹΛແࢹͰ͖ͳ ͍ɻࡶͳίϛϡχέʔγϣϯγεςϜΛෳࡶʹ͢ ΔՄೳੑ͋Δ͠ɺ৫ؒͷׂ͕γϯϓϧʹͳΕ ɺͦΕΛӨͨ͠γεςϜγϯϓϧʹͳΔ͔͠ Εͳ͍