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
develop-with-domain-expert
Search
haljik
August 31, 2019
Programming
1
1.1k
develop-with-domain-expert
haljik
August 31, 2019
Tweet
Share
More Decks by haljik
See All by haljik
ドメイン駆動設計の紹介
haljik
0
120
Isolating-the-domainの紹介
haljik
3
1.8k
普段使いのDDD
haljik
21
9.4k
実録Spring MVC
haljik
10
4.9k
ドメイン駆動設計を軽快に実践するための工夫
haljik
22
7.6k
Other Decks in Programming
See All in Programming
AI 開発合宿を通して得た学び
niftycorp
PRO
0
160
20260313 - Grafana & Friends Taipei #1 - Kubernetes v1.36 的開發雜記:那些困在 Alpha 加護病房太久的 Metrics
tico88612
0
220
モダンOBSプラグイン開発
umireon
0
170
DevinとClaude Code、SREの現場で使い倒してみた件
karia
1
1.1k
Cyrius ーLinux非依存にコンテナをネイティブ実行する専用OSー
n4mlz
0
230
安いハードウェアでVulkan
fadis
0
670
「効かない!」依存性注入(DI)を活用したAPI Platformのエラーハンドリング奮闘記
mkmk884
0
120
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
740
Angular-Apps smarter machen mit Gen AI: Lokal und offlinefähig - Hands-on Workshop!
christianliebel
PRO
0
130
存在論的プログラミング: 時間と存在を記述する
koriym
3
270
「接続」—パフォーマンスチューニングの最後の一手 〜点と点を結ぶ、その一瞬のために〜
kentaroutakeda
3
1.4k
AI Assistants for Your Angular Solutions
manfredsteyer
PRO
0
150
Featured
See All Featured
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
240
KATA
mclloyd
PRO
35
15k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
160
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.2k
How GitHub (no longer) Works
holman
316
150k
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
0
160
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
61
43k
Building Applications with DynamoDB
mza
96
7k
BBQ
matthewcrist
89
10k
GraphQLとの向き合い方2022年版
quramy
50
14k
Building a Scalable Design System with Sketch
lauravandoore
463
34k
Six Lessons from altMBA
skipperchong
29
4.2k
Transcript
υϝΠϯΤΩεύʔτͱ ߦ͏ۀγεςϜ։ൃ ݄ !IBMKJL
ͱ͋ΔେاۀͰ ࣮ࡍʹߦΘΕͨۀγ εςϜ։ൃʹͯ ˞ҙਤతʹ΅͔ͨ͠Γݴ༿Λม͑ͨΓ͠ ͨΓ͍ͯ͠·͢
݄தࠒ w ։ൃମ੍·ͩͳ͍ w !JSPG͞ΜɺϓϦϯε͞Μ͕গ͠ઌʹίϯαϧςΟϯάʹ ೖ͍ͬͯͨ w ྻºߦ΄Ͳ͋Δɺͳʹ͔ͷ༧࣮Λཧͯͦ͠͏ ͳΤΫηϧϑΝΠϧ w
γεςϜԽͷ༧ࢉΛऔಘ͢ΔͨΊͷը໘Πϝʔδͱࢿྉ
ԿΘ͔Βͳ͍ ࢿྉ͋Δ͕ͦ͜ʹ͋Δݴ༿ͷॏΈ ҙਤ͕ෆ໌ͩͱ಄ʹೖͬͯ͜ͳ͍
݄ υϝΠϯΤΩεύʔτͱ։ൃϝϯόʔͷإ߹ͤ
ମ੍ͷ֬ೝ
ମ੍ w υϝΠϯΤΩεύʔτ w 'ࢯݱۀΛؒ୲͍ͯͯ͠ΛѲ͓ͯ͠ΓɺγεςϜԽ͍ͨ͠ਓ w ΦʔΨφΠβʔ w 0ࢯ'ࢯΑΓ࠷ॳʹ૬ஊΛड͚ͯ͜ͷΛ࡞ͬͨਓ w
։ൃଆ w !JSPGϓϩάϥϚʔ w !LB[VIJUP@NϓϩάϥϚʔ w SJUPϓϩάϥϚʔ w ϓϦϯεσβΠφʔ w ࢲ !IBMKJL ϓϩάϥϚʔ
։ൃଆશһύʔτλΠϚʔ ͭϦϞʔτϫʔΫ ʮΈΜͳͲΕ͙Βׂ͍͚࣌ؒΔͷʁʯ JSPGʮि͙Β͍ʯ LB[VIJUP@Nʮि͙Β͍ʯ SJUPʮि͔͙Β͍ʯ IBMKJLʮि͙Β͍ʯ ˞࣌ؒͰ͢
υϝΠϯΤΩεύʔτ'ࢯ ۀͷ֓ཁΛઆ໌
ۀͷ֓ཁ 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 ݄ʹӡ༻։͍͕࢝ͯͨ͠ɺͦͷޙϒϥογϡΞοϓ ΛॏͶ݄͔ͯΒຊ֨Քಇ͍ͯ͠Δ w ॳͷ෦ॺ෦͚ͩͰͳ͘࠷ऴ෦ॺͰར༻͞Ε͍ͯΔ w 'ࢯᐌ͘ ʮύοέʔδɺϕϯμʔʹґཔ͢Δͷͱൺֱ͔ͯ͠ ͳΓίετͰޮՌతͳγεςϜΛ࡞Δ͜ͱ͕Ͱ͖ͨʯ
ࠓͷॴେޭͱݴͬͯྑͦ͞͏
ϙΠϯτ w ࡞Γॏཁ Ͱ͖ΔݶΓతͳಈػΛ࣋ͭਓΛΞαΠϯ͢Δ w త͕ᐆດͳػೳ༏ઌॱҐΛԼ͛ͯίΞʹूத͢Δ w ॏཁͳεςʔΫϗϧμʔΛૣΊʹ·͖͜Ή ʮҰॹʹߟ͑ͯͭͬͨ͘ײʯ͕ޙͷڠྗؔʹͭͳ͕Δ w
༷ΤϯδχΞ͕ߟ͑ͯఏҊ͢Δ ͦΕΛಋ͖ͩͨ͢ΊͷϧʔϧΛυϝΠϯΤΩεύʔτ͔ΒҾ͖ग़͢ w ձΛϞσϧʹө͢Δ w ձͰϞσϧΛݕࠪ͢Δ
࠶ݱੑ w 0ࢯ͔ͩΒ͜ͷΛ༻ҙͰ͖ͨ w 'ࢯ͕͍͔ͨΒૣ͍ஈ֊ͰίΞʹूதͰ͖ͨ w ։ൃϝϯόʔ͕ۀܥͰ%%%Λࢦ͖ͯͨ͠ਓͨͪͩͬ ͨ ࠶ݱͰ͖Δؾ͍ͯ͠ͳ͍
্࣮Ͱͨ͜͠ͱ ΤΫηϧ্ʹ͋Δେྔͷ߲ΛͲ͏ѻ͏͔ w ϞσϧԽ͢ΔͷίΞͷؔ৺ࣄͷΈ w ଞจࣈͲ͓Γʮͦͷଞʯͱͯ͠ΩʔόϦϡʔͰอ࣋ w ඞཁʹͳͬͨΒϞσϧԽ͢Δ
ΞʔΩςΫνϟ υϝΠϯϞσϧ ৄ͘͠IUUQTHJUIVCDPNTZTUFNTFLLFJJTPMBUJOHUIFEPNBJO
ͬͨπʔϧ w υϝΠϯΤΩεύʔτͱͷΓͱΓ 'BDFCPPLϝοηϯδϟʔ ҙਤతͰͳ͍͚Ͳ w ։ൃऀಉ࢜ͷΓͱΓ 4MBDL(JUIVC*446& w
ϞσϧͷՄࢹԽ +*(IUUQTHJUIVCDPNEEEKBWB+JH