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.2k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
develop-with-domain-expert
haljik
August 31, 2019
More Decks by haljik
See All by haljik
ドメイン駆動設計の紹介
haljik
0
140
Isolating-the-domainの紹介
haljik
3
1.8k
普段使いのDDD
haljik
21
9.5k
実録Spring MVC
haljik
10
5k
ドメイン駆動設計を軽快に実践するための工夫
haljik
22
7.7k
Other Decks in Programming
See All in Programming
変わらないものが、変わるものを決める — 意図駆動開発 × イベントソーシング × イミュータブル | What Doesn't Change Decides What Can — IDD × Event Sourcing × Immutability
tomohisa
0
1.4k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.6k
ITヒヤリハットを整理してみた ~ライフサイクルと原因から考える再発防止策~
koukimiura
1
140
Lean は証明の正しさを確認するためだけのツールって思ってませんか?
inoueasei
1
150
Cloudflare is Agents
chimame
0
150
ビデオ通話が繋がる0.2秒で何が起きているのか
supurazako
2
180
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
550
PostgreSQL 18で考えるUUID主キー
kazuhiro1982
0
460
人間の目はかわらない、だからJPEGは30年もつ
yuzneri
12
18k
FDEが実現するAI駆動経営の現在地
gonta
2
270
VibeCodingからAgenticWorkflowへ
starfish719
0
320
Laravelで学ぶ Webアプリケーションチューニング入門/web_application_tuning_101
hanhan1978
4
1.7k
Featured
See All Featured
Designing for Performance
lara
611
70k
RailsConf 2023
tenderlove
30
1.5k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Agile that works and the tools we love
rasmusluckow
331
22k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Designing Experiences People Love
moore
143
24k
Un-Boring Meetings
codingconduct
0
380
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.3k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
Visualization
eitanlees
152
17k
Odyssey Design
rkendrick25
PRO
2
750
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