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
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Mode...
Search
suzushin54
March 24, 2024
Programming
4.2k
5
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
Object-Oriented Conference 2024 の登壇資料です。
suzushin54
March 24, 2024
More Decks by suzushin54
See All by suzushin54
Learning DDD輪読会#15 / Learning DDD Book Club #15
suzushin54
1
350
認知的複雑度から見るGo言語のイベントソーシング実装 / Event Sourcing with Go
suzushin54
8
6.5k
Learning DDD輪読会#9 / Learning DDD Book Club #9
suzushin54
0
370
Learning DDD輪読会#4 / Learning DDD Book Club #4
suzushin54
1
890
Learning DDD輪読会#1
suzushin54
2
1.1k
複数の境界づけられたコンテキストにおける共通ロジックの扱いについて / Handling common logic in multiple contexts
suzushin54
1
2.8k
Other Decks in Programming
See All in Programming
Deep dive into the select statement (GopherCon UK)
jespino
0
170
Swift愛好会と私(ウホーイ) / Swift Fan Club and Uhooi
uhooi
0
130
Gmail/Google DriveをトリガーにAIエージェントを動かそう! / Run AI agents with Gmail/Google Drive as triggers!
har1101
3
460
AIは賢い。でも実行環境は? CLIおじさんがAI時代に伝えたいこと ~ CLIおじさんがAI時代に伝えたいこと ~
curekoshimizu
1
150
iOS開発×AI駆動開発 〜最近使って便利だったスキルの話〜
nogu66
0
140
AIと壁打ちしながら進めるコスト管理
fufuhu
2
1.9k
{ Android | Kotlin } Gradle Plugin in 2026
ryunen344
1
280
LLMは4年分のCompose移行を再現できるのか?実プロダクト279件のXMLで探る自動化の境界線
makun
0
380
DroidKaigi 2026 「個人開発という実験場: Android エンジニアが手にする4つの自由」
slashnephy
0
220
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
980
MySQLとPostgreSQLって何が違うの?
akagami
PRO
0
160
業務時間外もAIに働いてもらう話
colorful12
3
9.9k
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
55
13k
It's Worth the Effort
3n
188
29k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
970
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Docker and Python
trallard
47
4.2k
What the history of the web can teach us about the future of AI
inesmontani
PRO
1
680
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
35
2.8k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
500
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
220
Transcript
Shinichiro υϝΠϯɾϑΝʔετͰߟ͑Δ ղܾʹཱͭϞσϧઃܭ Object-Oriented Conference 2024 #ooc_2024
👨💻 whoami Intro • Shinichiro Mikami • ϕʔεϑʔυגࣜձࣾ 🍞 •
γχΞιϑτΣΞΤϯδχΞ • ܦྺɿSIer -> ࣄۀձࣾ ࣾ • Gopher ʕ◔ϖ◔ʔ 2 mikami.bsky.social suzushin54
🗣 ࠓճͷτʔΫʹ͍ͭͯ Intro • γεςϜ։ൃͷݱʹ͓͍ͯɺ“Ϟσϧ” ͕ᐆດʹѻΘΕ͍ͯΔͱײ͡Δ • ϞσϧΛదʹઃܭɾ࣮͢Δ͜ͱɺڝ૪ྗͷݯઘͱͳΔ • ༗໊ͳઃܭݪଇ։ൃख๏ɺΑ͘ݟฉ͖͢ΔɻԿΒ͍͍ͷΒ͍͠
• ຊʹͦ͏ͳͷ͔ʁΈΜͳෲམ͍ͪͯͬͯ͠ΔͷͩΖ͏͔ʁ • ͦ͜Ͱ͜Ε·Ͱʹ໘ͨ͠Ϟσϧʹؔ͢Δ՝ΞϯνύλʔϯΛ֬ೝ • ղܾʹཱͭϞσϧͱɺͲͷΑ͏ͳͷ͔ʁΛߟ • ࣄͷઆ໌ίʔυͷஅยͷհʹཹΊΔ͜ͱͳ͘ɺ ͳͥෳࡶ͕ͭ͘͞ΒΕͯ͠·͏ͷ͔ɺܦҢྲྀΕͱڞʹݟ͍ͯ͘ 3
🙊 ຊͷ༰ʹ͍ͭͯ Intro • ్தల։͢Δ EC αΠτͷྫՍۭͷͰ͋Γɺॴଐ͢Δاۀͷࣄۀ ίʔυϕʔεͱҰؔ͋Γ·ͤΜ • ݶΒΕͨ࣌ؒͳͷͰɺؔ࿈͢ΔίϯηϓτΛཏతʹΧόʔ͢Δ͜ͱ
Ͱ͖·ͤΜʢগɺྫ֎తͳέʔεͳͲ৮Ε͍ͯ·ͤΜʣ • ݸผͷϓϥΫςΟεͷྑ͠ѱ͠Λͨ͡Γ൷ධ͢ΔͷͰ͋Γ·ͤΜ 4
Agenda • ϞσϧͱԿ͔ʁ • ιϑτΣΞ։ൃͰѻΘΕΔϞσϧ • EC αΠτͷ۩ମྫ • ઓज़తϓϩάϥϛϯά
• ઓུతϓϩάϥϛϯά • ·ͱΊ 5 🔖 ຊͷ༰ʹ͍ͭͯ
ϞσϧͱԿ͔ʁ
📝 Ϟσϧͱʁ Intro 7 https://www.agilealliance.org/resources/experience-reports/towards-autonomous-aligned-teams-with-domain-driven-design/ Ϟσϧͱɺ͋Δࣄݱͷ୯७Խ͞ΕͨදݱͰ͋Γɺ ҙਤతʹಛఆͷଆ໘Λڧௐ͠ɺଞͷଆ໘Λແࢹͨ͠ͷɻ ಛఆͷ༻్Λߟྀͨ͠நԽɻ “A model
is a simplified representation of a thing or phenomenon that intentionally emphasizes certain aspects while ignoring others. Abstraction with a specific use in mind.” - Rebecca Wires-Brock ※ ҙ༁ͨ͠ͷ ࢀߟ:ʰLearning Domain-Driven Designʱ
Intro 8 https://www.marathon.tokyo/en/media/press-release/pdf/230621_release_en.pdf https://www.tokyometro.jp/station/pdf/202305/202305_number_en.pdf ͦΕͧΕͷతͷͨΊʹɺ ಛఆͷଆ໘Λڧௐͨ͠Γɺແࢹ͍ͯ͠Δ 🗾 యܕతͳϞσϧͷྫਤ
✅ Ϟσϧݱ࣮ੈքͷࣄࣄͷίϐʔͰͳ͍ Intro • ͯ͢ͷϞσϧʹʮతʯ͕͋ΓɺͦͷୡʹඞཁͳใͷΈΛؚΉ • ຊ࣭తʹɺϞσϧԽநԽͰ͋Δ • ෆඞཁͳࡉ෦লུͯ͠ɺղܾʹඞཁͳͷ͚ͩΛ͢ •
ʢOOP ͷΫϥεͷઆ໌ʹʮࣸ૾ʯͱ͍͏ݴ༿͕ΘΕΔ͜ͱ͕͋Γɺ ɹ͜ΕޡղΛট͘දݱͰ͋Δͱߟ͍͑ͯ·͢ʣ • நԽͷతɺᐆດʹ͢Δ͜ͱͰͳ͍ • ͋Δ࣮ମΛ؆ུԽͯ͠ɺॏཁͰͳ͍ৄࡉΛলུͨ͠ͷ • ෳࡶͳͷʹ͍ͭͯߟ͑ͨΓૢ࡞ͨ͠Γ͢ΔͷΛ༰қʹ͢Δ 9
ιϑτΣΞ։ൃͰ ѻΘΕΔϞσϧ
σʔλϞσϧ Ϟσϧʹ͍ͭͯ • σʔλͷߏɺؔੑɺ͓ΑͼϧʔϧΛମܥతʹఆٛͨ͠Έ • ≒ ER ਤ ͱͯ͠ೝࣝ͞Ε͍ͯΔ 11
ࢀߟ:ʰγεςϜ։ൃɾ৽ͷͨΊͷσʔλϞσϧେશ ʱ ୈ1ষ
υϝΠϯϞσϧ Ϟσϧʹ͍ͭͯ • ۀυϝΠϯʹಛԽͨ͠ιϑτΣΞϞσϧͷ͜ͱ • ΦϒδΣΫτϞσϧͱ࣮ͯ͠͞ΕΔ͜ͱ͕ଟ͘ɺ ѻ͏σʔλৼΔ͍Λɺۀతʹਖ਼֬ͳҙຯ߹͍Ͱอ࣋͢Δ 12 ࢀߟ:ʰ࣮ફυϝΠϯۦಈઃܭʱ -
υϝΠϯϞσϧͱ 👉 σʔλͷߏؔੑʹͨ͠σʔλϞσϧͱҟͳΓɺ γεςϜ͕ରͱ͢ΔྖҬͷใʹϑΥʔΧε͍ͯ͠Δ நԽ͞ΕͨϞσϧ͕࣮͞Εͯ υϝΠϯΦϒδΣΫτͱͳΔ
υϝΠϯΦϒδΣΫτ Ϟσϧʹ͍ͭͯ • όʔτϥϯυɾϝΠϠʔΦϒδΣΫτͷݪଇͱͯ͠ɺ ʮͯ͢ͷΦϒδΣΫτԿΒ͔ͷΫϥεͷΠϯελϯεͰ͋Δɻʯͱ ఆ͍ٛͯ͠Δ ※ Go ݴޠͳͲΫϥεߏΛ࣋ͨͳ͍͕ɺҟͳΔํ๏Ͱ OOP
Λ࣮ݱ͍ͯ͠ΔͨΊɺ͜͜Ͱ͡ͳ͍ • DTO ͷΑ͏ʹ୯ʹσʔλΛอ࣋͢Δ͚ͩͰͳ͘ɺͦͷσʔλʹؔ࿈͢ ΔৼΔ͍ʢϝιουɾؔʣ߹Θͤͯ࣋ͭʢநσʔλܕʣ 13 ࢀߟ:ʰΦϒδΣΫτࢦೖ ୈ2൛ ݪଇɾίϯηϓτʱ 👉 ΦϒδΣΫτࢦϓϩάϥϛϯάͷಛੑΛ׆͔ͨ͠ϓϥΫςΟε ͔͠͠ɺ։ൃͷݱʹ͓͍ͯᐆດʹଊ͑ΒΕΔ͜ͱଟ͍
σʔλϞσϧͱυϝΠϯϞσϧͷҧ͍͕ᐆດʹͳΔݪҼͷߟ Ϟσϧʹ͍ͭͯ 1. DB ઃܭ͔Β࢝ΊΔ։ൃΞϓϩʔν • DB ઃܭΛߦ͍ɺσʔλΛ֨ೲ͠ɺͦΕΛѻ͏࣮Λͯ͠͠·͏ 2. ORMͷར༻ʢ
※ Active Record ύλʔϯʣ • DB ͷϨίʔυΛϥοϓͨ͠ΦϒδΣΫτDB ΞΫηεͱυϝΠϯϩδοΫΛ࣋ͭ 3. εΩʔϚۦಈ։ൃͷҰൠԽͷӨڹ • Ϧιʔεʹର͢ΔCRUD ૢ࡞͕ڧௐ͞ΕɺΑΓσʔλʹҙ͕ࣝҾ͖دͤΒΕΔ ʢϦιʔεࢤͰ͋Δ REST API ಛʹݦஶʣ 4. ։ൃऀͷυϝΠϯࣝෆ • Ϗδωεϧʔϧۀ্ൃੜ͢ΔΠϕϯτΛੳͰ͖͍ͯͳ͍ͨΊɺ طʹݟ͍͑ͯΔϦιʔεҎ֎ͷϞσϧΛఆٛͰ͖ͳ͍ • ͜͜·ͰͰΠϯλʔϑΣΠε͕ݻ·͓ͬͯΓɺͦΕͰ࣮Ͱ͖ͯ͠·͏ 14 ※ https://www.martinfowler.com/eaaCatalog/activeRecord.html
υϝΠϯϞσϧͷॏཁੑ Ϟσϧʹ͍ͭͯ • ͦͦɺϏδωεϩδοΫຊ࣭తʹෳࡶͳͷ • ͦͷෳࡶ͞Λཧ͠ɺڞ௨ͷཧղΛଅਐ͢Δ • Ϗδωεϧʔϧͷ໌֬Խ • υϝΠϯϨΠϠʔͰҰݩཧ͢Δ͜ͱͰɺҰ؏ੑΛอূͰ͖Δ
…etc 15 👉 ϏδωεͷܧଓతͳվળͱΛࢧԉ͢ΔͨΊʹॏཁ
EC αΠτͷ۩ମྫ
ECαΠτ: OOC Shop Online ͷ։ൃ EC αΠτͷ۩ମྫ • Սۭͷձࣾ OOC
inc. ͰɺECαΠτΛ։ઃ͢Δ͜ͱʹɻ • ωοτγϣοϓͷ࡞αʔϏεΛ͏Ҋ͕͋ͬͨɺ ΧελϚΠζੑΛٻΊͯ։ൃΛܾஅ • PjM ͱϑϩϯτΤϯυΤϯδχΞ, όοΫΤϯυΤϯδχΞͷ3ਓͰ։ൃΛ։࢝ 17
ٕज़ελοΫͱΞʔΩςΫνϟ EC αΠτͷ۩ମྫ • C#, ASP.NET • REST API •
Layered Architecture • Repository pattern (DIP) • RDB 18 Controller ApplicationService Domain Infrastructure DB
ੜ AI ΛશྗͰ׆༻ͨ͠։ൃ EC αΠτͷ۩ମྫ • ཁ݅ͱઃܭํΛ AI ʹ͑ɺ രͰ։ൃΛਐΊ͍ͯ͘
• ػೳཁ݅Λຬͨ͢γεςϜ ͋ͬͱ͍͏ؒʹ✨ 19
1ޙ 1 year later
🎉 OOC Shop ઈௐʂ EC αΠτͷ۩ମྫ • ૣΊͷϚʔέοτΠϯ͕ޭΛ͠ɺചΓ্͛ௐ • 1पه೦Ωϟϯϖʔϯɺେޱސ٬͚ͷ։ൃҊ݅Ͱେ͠
• ΤϯδχΞ૿һͯ͠ɺଓʑͱՃ։ൃ͕ߦΘΕ͍ͯ͘ 21
3ޙ 3 year later
⚡ Ӣߦ͖͕ո͘͠ͳͬͯͨ EC αΠτͷ۩ମྫ • ECαΠτͷੑೳྼԽ͕ݦஶʹɻCore Web Vitals ͷείΞௐ •
ػೳՃͷམ͖ͪͯͯɺڝ߹ଞࣾͱൺͯػೳམཱ͕ͪͭ • ίʔυϩδοΫ͕ෳࡶԽ͠ɺΤϯδχΞ͔Βٕज़తෛ࠴ͷ͕ • ͦΜͳ࣌ɺෆ۩߹͕ݪҼͱͳΓ SNS ͰԌ্͢Δࣄ͕݅ൃੜ 🔥 • νʔϜҰཱͪࢭ·Γɺઃܭ࣮Λݟ͢͜ͱʹͨ͠🕵 23
վળͷಓے
ॳͷυϝΠϯͱαϒυϝΠϯͷཧղ վળͷಓے 25 Λจ͍ͨ͠ • ͡ΊʮΛചΔͨΊͷ EC αΠτʯΛ࡞Δ͜ͱ͚ͩΛߟ͍͑ͯͨ • ͦͷͨΊɺγεςϜͷͷར༻ऀ͚ͩʹ͍ͯͨ͠
EC system จ 👤 👩🏭 ސ٬ ࡏݿ Λݟ͍ͨ ࡏݿཧ ൃૹ αϓϥΠ νΣʔϯ
αϒυϝΠϯͷൃݟͱཧղ վળͷಓے 26 Ϧʔυ֫ಘࢪࡦ EC system จ Χλϩά ίϯςϯπཧ ސ٬ཧ
ࡏݿཧ 👨💻 👩💻 🧑💻 👩🏭 Ϛʔέ จ 👤 ސ٬ ݟΔ Ωϟϯϖʔϯ Ϋʔϙϯ ΤϯδχΞ ӡ༻อक ΧελϚʔ αϙʔτ αϓϥΠ νΣʔϯ ࡏݿཧ ൃૹ αϙʔτ • γεςϜͰͳ͘ɺϏδωεͷ؍͔Βੳͨ͠͠ • ૢ࡞͢ΔҎ֎ʹɺ࣮ࡍʹଟ͘ͷࣄۀ׆ಈྖҬ͕ଘࡏ͢Δ͜ͱʹؾͮ͘ ϩόετωεੳ, Πϕϯτετʔϛϯά …etc
αϒυϝΠϯʹରԠ͢Δڥք͚ͮΒΕͨίϯςΩετͷઃܭ վળͷಓے 27 Ϧʔυ֫ಘࢪࡦ EC system จ Χλϩά ίϯςϯπཧ ސ٬ཧ
ࡏݿཧ 👨💻 👩💻 🧑💻 👩🏭 Ϛʔέ จ 👤 ސ٬ ݟΔ Ωϟϯϖʔϯ Ϋʔϙϯ ΤϯδχΞ ӡ༻อक ΧελϚʔ αϙʔτ αϓϥΠ νΣʔϯ ࡏݿཧ ൃૹ αϙʔτ • ࣄۀ׆ಈྖҬʹରԠ͢ΔܗͰαϒγεςϜΛݕ౼ • ࠓճશʹ 1:1 ͰରԠ͢ΔΑ͏ʹ Ordering context Catalog context Inventory context Support context CMS context
ׂ݉ͷ Product Ϟσϧ վળͷಓے • ࠶ઃܭޙʹվΊͯݟΔͱɺ จ຺ͷࠞࡏΛೝࣝͰ͖ͨ • ෳͷΛ࣋ͬͨ͜ͱͰɺ Fat
Model ʹͳͬͯ͠·͍ͬͯͨ 28 👈 Inventory EC system Product 👈 Catalog 👈 Ordering 😵💫
վળޙͷ Product Ϟσϧ վળͷಓے 29 EC system Ordering context Catalog
context Inventory context Support context CMS context Product • Catalog context ͱͯ͠ඞཁͳ ଐੑɾৼΔ͍ʹݶఆ
Ordering context ઐ༻ͷϞσϧ վળͷಓے 30 EC system Ordering context Catalog
context Inventory context Support context CMS context OrderProduct Product • αϓϥΠνΣʔϯͷ୲ऀʮจʯͱݺΜͰ͍ͨ • OrderProduct ͱͯ͠ఆٛͨ͠ • ׂ͕໌֬ʹ͢Δ͜ͱͰݟ௨͕͠ ྑ͘ͳΓɺςετ༰қੑ্
վળલͷ Customer Ϟσϧ վળͷಓے • SNS Ԍ্ࣄ݅ͷݪҼɺαϙʔτͷϝϞ͕ސ٬ͷϚΠϖʔδͰ ϒϥβͷ։ൃऀπʔϧʹදࣔ͞Εͯ͠·͍ͬͯͨ͜ͱͱ໌ • 1ͭͷڥք͚ΒΕͨίϯςΩετ͓ΑͼυϝΠϯϞσϧΛෳνʔϜ͕ϝϯς͍ͯͨ͠
31 👤 ސ٬ 🧑💻 ΧελϚʔ αϙʔτ ߹͕ͤଟ͍ސ٬Λ ʮཁҙ٬ʯͱϝϞ { "mypage": { "customer": { "name": "John Doe", "email": "
[email protected]
", "address": "123 Main Street, Anytown, CA", "orders": null, "rank": 3, "memo": "ཁҙ٬", "inquiryCount": 13, "lastLogin": "2024-03-23T18:40:58" } 😡 API શͯͷ߲Λฦ͍ͯͨ͠
ReadModel ͷಋೖʢCQRSʣ վળͷಓے 32 • ސ٬ͷϚΠϖʔδʹඞཁͳใͷΈ Λอ࣋ͨ͠ ReadModel Λઃܭͨ͠ •
ϦʔυϞσϧͷ݅ • QueryMethodͷΈΛ࣋ͭ (ΠϛϡʔλϒϧͰ͋Δ) • ͋ΔϢʔεέʔεʹಛԽ͍ͯ͠Δ • ඞཁͳσʔλ͕ΦϒδΣΫτऔಘ࣌ ʹར༻ՄೳͰ͋Δ͜ͱ Controller Domain Infrastructure Customer ApplicationService Customer MyPage ࢀߟɿʰΦϒδΣΫτઃܭελΠϧΨΠυʱ
33 ReadModel ͷಋೖʢCQRSʣ վળͷಓے ϚΠϖʔδදࣔʹ ඞཁͳσʔλͷΈ Customer Ϟσϧ CustomerMyPage Ϟσϧ
• දࣔͷͨΊ͚ͩͷଐੑৼΔ͍ΛυϝΠϯϞσϧ͔ΒऔΓআ͘͜ ͱ͕Ͱ͖ɺ͞Βʹݟ௨͕͠ྑ͘ͳͬͨ ૯จճͳͲಋग़͍ͯͨ͠ ใ࠷ॳ͔Β࣋ͨͤΔ
ಉ͡աͪΛ܁Γฦ͞ͳ͍ͨΊʹ վળͷಓے • νʔϜۀΛੳ͢Δ͜ͱͰ • ͕͖ࣗͨͪ߹͍ͬͯͨࣄۀྖҬɺͦͷதͷ׆ಈྖҬΛཧղͨ͠ • ׆ಈྖҬʹରԠ͢ΔܗͰαϒγεςϜΛઃܭɺ ϦϑΝΫλϦϯάʹΑΓ៉ྷͳίʔυΛऔΓͨ͠ •
͔͠͠ɺίʔυϕʔε͕มΘ͚ͬͨͩͰ ͕࣌ؒܦͯ·ͨෳࡶੑʹ·͞Εͯ͠·͏ • ։ൃͷΞϓϩʔνΛม͑Δඞཁ͕͋ͬͨ 34
ઓज़తϓϩάϥϛϯά Tactical Programming
ઓज़తϓϩάϥϛϯάͱͲͷΑ͏ͳͷ͔ ઓज़తϓϩάϥϛϯά • ػೳΛಈ࡞ͤ͞Δ͜ͱʹযΛͯͨϓϩάϥϛϯάͷ͜ͱ • ʮԿΛղܾ͍ͨ͠ͷ͔ʯͰͳ͘ɺ ʮͲ͏͢Ε࣮ݱͰ͖Δͷ͔ʯͱߟ͑ͯ͠·͏ • طʹ͋ΔϦιʔεΛݩʹԿͱ͔͠Α͏ͱ͢Δ •
ٕज़తͳղܾํ๏ͷؔ৺ҰҼ • ʮఆظόονͰಉظ͢Δඞཁ͕͋ΔͷͰ…ʯ🤔 36 ࢀߟ: ʰA Philosophy of Software Designʱ 👉 ઓज़తϓϩάϥϛϯάͷੵΈॏͶ͕ෳࡶ͞ΛੜΉ
ઓज़తϓϩάϥϛϯάͷྫ 1 - খنͷվम ઓज़తϓϩάϥϛϯά • ཁ݅ɿ৽ΛఆՁͷ10%Ҿ͖Ͱൢച͠·͢ • ΤϯδχΞɿ •
Product ʹ IsNewRelease ϑϥάΛ͚ͭͯɺtrue ͩͬͨΒׂҾ͠Α͏ • Products ςʔϒϧʹΧϥϜΛՃͯ͠ • Product Ϟσϧʹ bool ͷϓϩύςΟΛՃ͢Ε OK 37
ઓज़తϓϩάϥϛϯάͷྫ 2 - ػೳՃ ઓज़తϓϩάϥϛϯά • ཁ݅ɿͷϨϏϡʔػೳΛՃ͠·͢ • ΤϯδχΞɿ •
ProductReviews ςʔϒϧΛ࡞Ζ͏ • ProductId Λ֎෦Ωʔͱͯ࣋ͬͯ͠ඥ͚ͮΔ • Product Ϟσϧʹ Reviews ྻΛՃͯ࣋ͨͤ͠Ε͍͍ 38
ઓज़తϓϩάϥϛϯάΛՃͤ͞Δ AI ʹΑΔ։ൃ ઓज़తϓϩάϥϛϯά • ͜ͷ࣌ɺΤϯδχΞ ੜ AI ʹؙ͓͛ͯ͠Γɺ ಛʹԿߟ͍͑ͯͳ͔ͬͨ
39 Generative AI
ઓज़తϓϩάϥϛϯάͷ݁Ռ ઓज़తϓϩάϥϛϯά • ͱ͍͑ɺͲͪΒͦͷ͕࣌͋ΔΑ͏ʹࢥ͑ͳ͍͔͠Εͳ͍ • ͦͯ͠ɺϦϦʔε͞ΕΔͱ࣮ࡍʹՁੜΈग़͢ • ͔͠͠ɺͦͷੵΈॏͶ͕ෳࡶ͞Λ࡞Γ্͍͛ͯ͘ • ͰɺͲ͏͢Δ͖ͳͷ͔ʁ
40
ઓུతϓϩάϥϛϯά Strategic Programming
ઓུతϓϩάϥϛϯάͱͲͷΑ͏ͳͷ͔ ઓུతϓϩάϥϛϯά • ػೳΛಈ࡞ͤ͞Δ͜ͱΛୈҰͷඪʹ͢ΔͷͰͳ͘ɺ ͍͔ͭ͘ͷઃܭΛࢼͯ͠࠷ΫϦʔϯͳͷΛબ͢Δ • কདྷͷγεςϜ֦ுΛఆͯ͠ɺ֦ு͕༰қͳͷΛબ͢Δ • γεςϜઃܭΛվળ͢ΔͨΊʹ࣌ؒΛࢿ͢Δ •
࠷Ͱͳ͘ɺ࠷ળΛࢦ͢Ξϓϩʔν 42 ࢀߟ: ʰA Philosophy of Software Designʱ
ઓུతϓϩάϥϛϯάͷྫ 1 - খنͷվम ઓུతϓϩάϥϛϯά 43 • ཁ݅ɿ৽ΛఆՁͷ10%Ҿ͖Ͱൢച͠·͢ • ϚʔέςΟϯάνʔϜʹΑΔͱɺࠓޙ༷ʑͳΩϟϯϖʔϯΛల։͍ͨ͠Β͍͠
• ͢ͰʹܭըࡁΈͷͷɺۀքͰҰൠతͳΩϟϯϖʔϯʹ͍ͭͯݕ౼ͨ͠ • ׂҾΛཧ͢ΔΈΛઃܭͯ͠ɺͦͷϩδοΫΛผ్࣮͢Δ • จͷλΠϛϯάͰΩϟϯϖʔϯΛద༻ͯ͠ɺׂҾΛ࣮ݱ͢Δ • ͦͷޙɺΞτϨοτΛ30%Ҿ͖Ͱൢച͢Δࡍগ͠ͷվमͰ࣮ݱͰ͖ͨ ੜ AI Λ͏߹ ઃܭίϯηϓτΛ͑ͯนଧͪʹ
ઓུతϓϩάϥϛϯάͷྫ 2 - ػೳՃ ઓུతϓϩάϥϛϯά • ཁ݅ɿͷϨϏϡʔػೳΛՃ͠·͢ • Review ϞσϧΛఆٛͯ͠ɺѻ͏Α͏ʹͨ͠
• ਓؾେྔͷϨϏϡʔ͕͋ͬͯද͕ࣔ͘ͳΔ͜ͱ͕ ݒ೦͞Ε͕ͨɺಠཱͯ͠ѻ͑ͨͨΊԆಡΈࠐΈ͢Δ͜ͱ͕Ͱ͖ͨ • ݸʑͷϨϏϡʔʹରͯ͠ෆదͳ༰ΛϑΟϧλϦϯά͢ΔͳͲɺ αϙʔτνʔϜ͔Βͷཁʹૉૣ͘Ԡ͑Δ͜ͱ͕Ͱ͖ͨ 44
ઓज़తϓϩάϥϛϯάѱ͔ʁ ઓज़తϓϩάϥϛϯάͱઓུతϓϩάϥϛϯά ϦεΫड༰ͯ͠બ͢Δ߹͋ΔʢͦΕ͕ྑ͍ͱݴ͍ͬͯͳ͍ʣ 1. ڝ߹ΑΓઌʹࢢαʔϏεΛೖ͍ͨ͠ 💨 2. PoC ͱͯ͠ͷ࣮Ͱ͋Γɺ࣮֬ʹ͍ࣺͯͷίʔυͰ͋Δ •
ʢԟʑʹͯͦ͠ͷ··ϩʔϯν͞ΕΔͱ͍͏͋Δ🙉 ʣ 3. Hot fi x 🚑 45 ࢀߟ: ʰA Philosophy of Software Designʱ ͕࣌ؒܦͭʹͭΕɺઓུతΞϓϩʔνͷਐḿ͕ٯస͢Δ
46 ʰιϑτΣΞΞʔΩςΫνϟͷجૅʱ “ΞʔΩςΫνϟʹਖ਼ղؒҧ͍ͳ͍ɻ ͨͩτϨʔυΦϑ͕͋Δ͚ͩͩ.” - Neal Ford
·ͱΊ
ࠓճͷςʔϚͰ͋Δ“ղܾʹཱͭϞσϧ”ͱ ·ͱΊ • ରυϝΠϯͷϏδωεϧʔϧ͕໌֬ʹө͞Ε͍ͯΔ • σʔλͱϩδοΫ͕·ͱΊΒΕɺநσʔλܕͱͯ͠ઃܭ͞Ε͍ͯΔ • ٸͳࢢͷมԽϏδωεཁٻʹରԠͰ͖Δॊೈ͞Λ࣋ͭ • ࠶ར༻ੑʹ༏ΕɺҙຯతͳίʔυͷॏෳΛ͙
48
υϝΠϯϑΝʔετͱ ·ͱΊ • ٕज़తͳ՝DBઃܭΑΓઌʹɺղܾ͍ͨ͠ྖҬʢυϝΠϯʣͱͦ ͷෳࡶੑʹֶ͍ͭͯͼɺͦͷࣝΛத৺ʹઃܭ͢ΔΞϓϩʔν • αϒυϝΠϯΛੳͯ͠ɺڥք͚ΒΕͨίϯςΩετΛઃܭ͢Δ • ͦͷதͰར༻͢ΔυϝΠϯϞσϧΛઃܭ͢Δ •
దͳۀཧղͷޙʹɺΑΓྑ͍ઃܭ͕ՄೳʹͳΔʢ՝ͷղ૾Λ্͛Δʣ • શ͘ҟͳΔઃܭʹͳΔ͜ͱ͑͋͞Δ • DDD ͷઓज़తઃܭͷϓϥΫςΟεͷΈΛઌʹಋೖ͢Δέʔε… • ཧநͷґଘɺִͳͲɺݟ௨͠ΛΑ͘͢Δҙຯ͋Δ • ෆ۩߹ΛੜΈग़͢γεςϜɺϞσϧʹͳΔϦεΫΛΑΓଟ๊͑͘Δ 49
͍͞͝ʹ ·ͱΊ • AI͕ίʔυΛಡΜͰɺॻ͍ͯɺϨϏϡʔ·Ͱ͢Δ࣌ɻࢲ͕ͨͪશͯΛख ͰରԠ͢Δػձݮ͖ͬͯ·ͨ͠ɻ͜ͷઌͬͱݮΔͰ͠ΐ͏ɻ • ࠓճͷྫͷΑ͏ʹɺAI ʹطଘͷϦιʔεΛఏڙͯ͠ɺ͜͏͍ͬͨΛ ղܾ͍ͨ͠ͱ͑Δͱɺଟ͘ͷ߹ʹઓज़తϓϩάϥϛϯάΛ࢝Ί·͢ •
࣮ࡍʹಈ࡞͢Δͷͷɺͬͪ͜ΛཱͯΔͱཱ͕͋ͬͪͨͣɺόάΛ௵ͯ͠ ·ͨผͷՕॴͰόάΔɺͱ͍ͬͨঢ়گʹͳΓ͕ͪͰ͢ɻݱ࣌Ͱɻ • ࢲ͕ͨͪυϝΠϯΛੳͯ͠ɺઃܭ͢Εɺͬͱ AI Λ׆༻Ͱ͖·͢ • AI ͱγεςϜΛ࡞Δ࣌ɺԿΛղܾ͍ͨ͠ͷ͔Λؾʹͯ͠Έ͍ͯͩ͘͞ 50