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
100
Isolating-the-domainの紹介
haljik
3
1.7k
普段使いのDDD
haljik
21
9.2k
実録Spring MVC
haljik
10
4.8k
ドメイン駆動設計を軽快に実践するための工夫
haljik
22
7.6k
Other Decks in Programming
See All in Programming
MCPを使ってイベントソーシングのAIコーディングを効率化する / Streamlining Event Sourcing AI Coding with MCP
tomohisa
0
190
ご注文の差分はこちらですか? 〜 AWS CDK のいろいろな差分検出と安全なデプロイ
konokenj
4
710
Streamlitで実現できるようになったこと、実現してくれたこと
ayumu_yamaguchi
2
230
Bedrock AgentCore ObservabilityによるAIエージェントの運用
licux
8
340
QA x AIエコシステム段階構築作戦
osu
0
210
AIのメモリー
watany
11
1k
Workers を定期実行する方法は一つじゃない
rokuosan
0
130
効率的な開発手段として VRTを活用する
ishkawa
1
180
[SRE NEXT] 複雑なシステムにおけるUser Journey SLOの導入
yakenji
0
810
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
3
280
テストから始めるAgentic Coding 〜Claude Codeと共に行うTDD〜 / Agentic Coding starts with testing
rkaga
17
6.1k
코딩 에이전트 체크리스트: Claude Code ver.
nacyot
0
1k
Featured
See All Featured
The Language of Interfaces
destraynor
158
25k
GraphQLとの向き合い方2022年版
quramy
49
14k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
34
5.9k
Code Review Best Practice
trishagee
69
19k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Unsuck your backbone
ammeep
671
58k
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.9k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
16k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
138
34k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
720
Agile that works and the tools we love
rasmusluckow
329
21k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
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