Lock in $30 Savings on PRO—Offer Ends Soon! ⏳
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Mode...
Search
suzushin54
March 24, 2024
Programming
5
3.9k
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Model Design
Object-Oriented Conference 2024 の登壇資料です。
suzushin54
March 24, 2024
Tweet
Share
More Decks by suzushin54
See All by suzushin54
Learning DDD輪読会#15 / Learning DDD Book Club #15
suzushin54
1
320
認知的複雑度から見るGo言語のイベントソーシング実装 / Event Sourcing with Go
suzushin54
8
6.2k
Learning DDD輪読会#9 / Learning DDD Book Club #9
suzushin54
0
330
Learning DDD輪読会#4 / Learning DDD Book Club #4
suzushin54
1
850
Learning DDD輪読会#1
suzushin54
2
1.1k
複数の境界づけられたコンテキストにおける共通ロジックの扱いについて / Handling common logic in multiple contexts
suzushin54
1
2.5k
Other Decks in Programming
See All in Programming
Canon EOS R50 V と R5 Mark II 購入でみえてきた最近のデジイチ VR180 事情、そして VR180 静止画に活路を見出すまで
karad
0
140
「コードは上から下へ読むのが一番」と思った時に、思い出してほしい話
panda728
PRO
39
26k
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
190
Graviton と Nitro と私
maroon1st
0
140
これならできる!個人開発のすゝめ
tinykitten
PRO
0
130
AIの誤りが許されない業務システムにおいて“信頼されるAI” を目指す / building-trusted-ai-systems
yuya4
6
4k
Python札幌 LT資料
t3tra
7
1k
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
150
開発に寄りそう自動テストの実現
goyoki
2
1.4k
著者と進める!『AIと個人開発したくなったらまずCursorで要件定義だ!』
yasunacoffee
0
160
JETLS.jl ─ A New Language Server for Julia
abap34
2
460
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
4
1.2k
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
1
85
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
2
2.8k
A better future with KSS
kneath
240
18k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
0
110
Rails Girls Zürich Keynote
gr2m
95
14k
jQuery: Nuts, Bolts and Bling
dougneiner
65
8.3k
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
Game over? The fight for quality and originality in the time of robots
wayneb77
1
66
[RailsConf 2023] Rails as a piece of cake
palkan
58
6.2k
Getting science done with accelerated Python computing platforms
jacobtomlinson
0
78
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.4k
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
130
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