Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
ドメイン・ファーストで考える問題解決に役立つモデル設計 / Domain First Mode...
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
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
360
認知的複雑度から見る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
900
Learning DDD輪読会#1
suzushin54
2
1.2k
複数の境界づけられたコンテキストにおける共通ロジックの扱いについて / Handling common logic in multiple contexts
suzushin54
1
2.8k
Other Decks in Programming
See All in Programming
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
620
JAWS-UG 東京支部が始める、JAWS-UG支部コラボ / JAWS-UG lunchtime LT Collaboration
y0hgi
0
220
iOS 27でニュースアプリはどう変わる!? 〜日経電子版の新機能対応と、開発事例から〜
lynnswap
7
13k
AI が書く Go コードの品質を劇的に向上させる Linter: “declscope”
mpyw
0
490
contenteditable と日本語入力に向き合う
colorful12
0
190
Embedded Swiftで作る自作USBデバイス によるiOSデバイスの自動テスト / iOSDC Japan 2026 glassfiber
glassfiber
0
330
AWS CDKのカスタムリソースでContinuum(旧Security Agent)を実装した話 | Implementing Continuum (formerly Security Agent) via AWS CDK Custom Resource
akihisaikeda
2
150
Are APIs Still Relevant in the AI Era?
soyuka
0
450
KiroのSpecで「五目並べ」を作ってみる
satoshi256kbyte
1
370
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
140
なぜCTOを降りてFDEを選んだのか?〜なぜプロダクト企業がFDEで顧客の現場に踏み込むのか〜
gonta
1
190
R8 の設定見直しでアプリサイズ削減
andpad
0
210
Featured
See All Featured
The Pragmatic Product Professional
lauravandoore
37
7.5k
Prompt Engineering for Job Search
mfonobong
0
500
Documentation Writing (for coders)
carmenintech
77
5.6k
The Cost Of JavaScript in 2023
addyosmani
55
10k
Building the Perfect Custom Keyboard
takai
2
900
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
How to train your dragon (web standard)
notwaldorf
96
6.9k
Testing 201, or: Great Expectations
jmmastey
46
8.3k
The Curious Case for Waylosing
cassininazir
1
560
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
400
Lightning talk: Run Django tests with GitHub Actions
sabderemane
0
300
Tell your own story through comics
letsgokoyo
1
1.1k
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