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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
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.6k
Learning DDD輪読会#9 / Learning DDD Book Club #9
suzushin54
0
380
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
Apple Intelligenceとオンデバイス時代の到来
yahir0
0
190
AI時代のFlutter品質設計 — アプリ品質を守るQuality Layers
omatty198
0
330
複雑なUIコンポーネントとの ⻑い付き合い⽅:波及するバグからテスト戦略を経て、安全な再設計へ
mixplace
0
500
PumaからFalconに移行したRailsアプリケーションでの実践
falcon8823
0
320
エージェントを使い続けるためのメタワーク / Meta-work for keeping using the agent
rkaga
6
2.1k
SODA - FACT BOOK(JP)
sodainc
1
40k
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
2.3k
ChromeでローカルLLM
ryu1013
0
190
Web Framework Benchmark Battle 2026, Any%
a_matsuda
3
3.1k
Lambda durable functionsでHuman in the Loopを楽に…楽に……
har1101
2
240
最近”作らせてる” ローカルAIアプリの話
akit37
0
530
月間100万人のサービス刷新で、 技術選定をHonoに振り切った話
yutobara
8
7.1k
Featured
See All Featured
How to train your dragon (web standard)
notwaldorf
96
6.9k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.6k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
1k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.4k
The agentic SEO stack - context over prompts
schlessera
0
990
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
450
GraphQLとの向き合い方2022年版
quramy
50
15k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Tell your own story through comics
letsgokoyo
1
1.1k
Marketing to machines
jonoalderson
1
6k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
203
77k
Docker and Python
trallard
47
4.2k
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