Slide 1

Slide 1 text

Shinichiro υϝΠϯɾϑΝʔετͰߟ͑Δ ໰୊ղܾʹ໾ཱͭϞσϧઃܭ Object-Oriented Conference 2024 #ooc_2024

Slide 2

Slide 2 text

👨💻 whoami Intro • Shinichiro Mikami • ϕʔεϑʔυגࣜձࣾ 🍞 • γχΞιϑτ΢ΣΞΤϯδχΞ • ܦྺɿSIer -> ࣄۀձࣾ ਺ࣾ • Gopher ʕ◔ϖ◔ʔ 2 mikami.bsky.social suzushin54

Slide 3

Slide 3 text

🗣 ࠓճͷτʔΫʹ͍ͭͯ Intro • γεςϜ։ൃͷݱ৔ʹ͓͍ͯɺ“Ϟσϧ” ͕ᐆດʹѻΘΕ͍ͯΔͱײ͡Δ • ϞσϧΛద੾ʹઃܭɾ࣮૷͢Δ͜ͱ͸ɺڝ૪ྗͷݯઘͱͳΔ • ༗໊ͳઃܭݪଇ΍։ൃख๏ɺΑ͘ݟฉ͖͢ΔɻԿ΍Β͍͍΋ͷΒ͍͠ • ຊ౰ʹͦ͏ͳͷ͔ʁΈΜͳෲམͪͯ͠࢖͍ͬͯΔͷͩΖ͏͔ʁ • ͦ͜Ͱ͜Ε·Ͱʹ௚໘ͨ͠Ϟσϧʹؔ͢Δ՝୊΍ΞϯνύλʔϯΛ֬ೝ • ໰୊ղܾʹ໾ཱͭϞσϧͱ͸ɺͲͷΑ͏ͳ΋ͷ͔ʁΛߟ࡯ • ࣄ৅ͷઆ໌΍ίʔυͷஅยͷ঺հʹཹΊΔ͜ͱͳ͘ɺ
 ͳͥෳࡶ͕ͭ͘͞ΒΕͯ͠·͏ͷ͔ɺܦҢ΍ྲྀΕͱڞʹݟ͍ͯ͘ 3

Slide 4

Slide 4 text

🙊 ຊ೔ͷ಺༰ʹ͍ͭͯ Intro • ్தల։͢Δ EC αΠτͷྫ͸Սۭͷ࿩Ͱ͋Γɺॴଐ͢Δاۀͷࣄۀ΍ ίʔυϕʔεͱ͸Ұ੾ؔ܎͋Γ·ͤΜ • ݶΒΕͨ࣌ؒͳͷͰɺؔ࿈͢ΔίϯηϓτΛ໢ཏతʹΧόʔ͢Δ͜ͱ͸ Ͱ͖·ͤΜʢগ਺೿ɺྫ֎తͳέʔεͳͲ΋৮Ε͍ͯ·ͤΜʣ • ݸผͷϓϥΫςΟεͷྑ͠ѱ͠Λ࿦ͨ͡Γ൷ධ͢Δ΋ͷͰ͸͋Γ·ͤΜ 4

Slide 5

Slide 5 text

Agenda • Ϟσϧͱ͸Կ͔ʁ • ιϑτ΢ΣΞ։ൃͰѻΘΕΔϞσϧ • EC αΠτͷ۩ମྫ • ઓज़తϓϩάϥϛϯά • ઓུతϓϩάϥϛϯά • ·ͱΊ 5 🔖 ຊ೔ͷ಺༰ʹ͍ͭͯ

Slide 6

Slide 6 text

Ϟσϧͱ͸Կ͔ʁ

Slide 7

Slide 7 text

📝 Ϟσϧͱ͸ʁ 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ʱ

Slide 8

Slide 8 text

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 ͦΕͧΕͷ໨తͷͨΊʹɺ ಛఆͷଆ໘Λڧௐͨ͠Γɺແࢹ͍ͯ͠Δ 🗾 యܕతͳϞσϧͷྫ͸஍ਤ

Slide 9

Slide 9 text

✅ Ϟσϧ͸ݱ࣮ੈքͷ෺ࣄ΍ࣄ৅ͷίϐʔͰ͸ͳ͍ Intro • ͢΂ͯͷϞσϧʹ͸ʮ໨తʯ͕͋Γɺͦͷୡ੒ʹඞཁͳ৘ใͷΈΛؚΉ • ຊ࣭తʹɺϞσϧԽ͸ந৅ԽͰ͋Δ • ෆඞཁͳࡉ෦͸লུͯ͠ɺ໰୊ղܾʹඞཁͳ΋ͷ͚ͩΛ࢒͢ • ʢOOP ͷΫϥεͷઆ໌ʹʮࣸ૾ʯͱ͍͏ݴ༿͕࢖ΘΕΔ͜ͱ͕͋Γɺ
 ɹ͜Ε͸ޡղΛট͘දݱͰ΋͋Δͱߟ͍͑ͯ·͢ʣ • ந৅Խͷ໨త͸ɺᐆດʹ͢Δ͜ͱͰ͸ͳ͍ • ͋Δ࣮ମΛ؆ུԽͯ͠ɺॏཁͰͳ͍ৄࡉΛলུͨ͠΋ͷ • ෳࡶͳ΋ͷʹ͍ͭͯߟ͑ͨΓૢ࡞ͨ͠Γ͢ΔͷΛ༰қʹ͢Δ 9

Slide 10

Slide 10 text

ιϑτ΢ΣΞ։ൃͰ ѻΘΕΔϞσϧ

Slide 11

Slide 11 text

σʔλϞσϧ Ϟσϧʹ͍ͭͯ • σʔλͷߏ଄ɺؔ܎ੑɺ͓ΑͼϧʔϧΛମܥతʹఆٛͨ͠࿮૊Έ • ≒ ER ਤ ͱͯ͠ೝࣝ͞Ε͍ͯΔ 11 ࢀߟ:ʰγεςϜ։ൃɾ࡮৽ͷͨΊͷσʔλϞσϧେશ ʱ ୈ1ষ

Slide 12

Slide 12 text

υϝΠϯϞσϧ Ϟσϧʹ͍ͭͯ • ۀ຿υϝΠϯʹಛԽͨ͠ιϑτ΢ΣΞϞσϧͷ͜ͱ • ΦϒδΣΫτϞσϧͱ࣮ͯ͠૷͞ΕΔ͜ͱ͕ଟ͘ɺ
 ѻ͏σʔλ΍ৼΔ෣͍Λɺۀ຿తʹਖ਼֬ͳҙຯ߹͍Ͱอ࣋͢Δ 12 ࢀߟ:ʰ࣮ફυϝΠϯۦಈઃܭʱ - υϝΠϯϞσϧͱ͸ 👉 σʔλͷߏ଄΍ؔ܎ੑʹ஫໨ͨ͠σʔλϞσϧͱ͸ҟͳΓɺ
 γεςϜ͕ର৅ͱ͢Δ໰୊ྖҬͷ৘ใʹϑΥʔΧε͍ͯ͠Δ ந৅Խ͞ΕͨϞσϧ͕࣮૷͞Εͯ
 υϝΠϯΦϒδΣΫτͱͳΔ

Slide 13

Slide 13 text

υϝΠϯΦϒδΣΫτ Ϟσϧʹ͍ͭͯ • όʔτϥϯυɾϝΠϠʔ͸ΦϒδΣΫτͷݪଇͱͯ͠ɺ
 ʮ͢΂ͯͷΦϒδΣΫτ͸ԿΒ͔ͷΫϥεͷΠϯελϯεͰ͋Δɻʯͱ ఆ͍ٛͯ͠Δ ※ Go ݴޠͳͲ͸Ϋϥεߏ଄Λ࣋ͨͳ͍͕ɺҟͳΔํ๏Ͱ OOP Λ࣮ݱ͍ͯ͠ΔͨΊɺ͜͜Ͱ͸࿦͡ͳ͍ • DTO ͷΑ͏ʹ୯ʹσʔλΛอ࣋͢Δ͚ͩͰͳ͘ɺͦͷσʔλʹؔ࿈͢ ΔৼΔ෣͍ʢϝιουɾؔ਺ʣ΋߹Θͤͯ࣋ͭʢந৅σʔλܕʣ 13 ࢀߟ:ʰΦϒδΣΫτࢦ޲ೖ໳ ୈ2൛ ݪଇɾίϯηϓτʱ 👉 ΦϒδΣΫτࢦ޲ϓϩάϥϛϯάͷಛੑΛ׆͔ͨ͠ϓϥΫςΟε
 ͔͠͠ɺ։ൃͷݱ৔ʹ͓͍ͯ͸ᐆດʹଊ͑ΒΕΔ͜ͱ΋ଟ͍

Slide 14

Slide 14 text

σʔλϞσϧͱυϝΠϯϞσϧͷҧ͍͕ᐆດʹͳΔݪҼͷߟ࡯ Ϟσϧʹ͍ͭͯ 1. DB ઃܭ͔Β࢝ΊΔ։ൃΞϓϩʔν • DB ઃܭΛߦ͍ɺσʔλΛ֨ೲ͠ɺͦΕΛѻ͏࣮૷Λͯ͠͠·͏ 2. ORMͷར༻ʢ ※ Active Record ύλʔϯʣ • DB ͷϨίʔυΛϥοϓͨ͠ΦϒδΣΫτ͸DB ΞΫηεͱυϝΠϯϩδοΫΛ࣋ͭ 3. εΩʔϚۦಈ։ൃͷҰൠԽͷӨڹ • Ϧιʔεʹର͢ΔCRUD ૢ࡞͕ڧௐ͞ΕɺΑΓσʔλʹҙ͕ࣝҾ͖دͤΒΕΔ
 ʢϦιʔεࢤ޲Ͱ͋Δ REST API ͸ಛʹݦஶʣ 4. ։ൃऀͷυϝΠϯ஌ࣝෆ଍ • Ϗδωεϧʔϧ΍ۀ຿্ൃੜ͢ΔΠϕϯτΛ෼ੳͰ͖͍ͯͳ͍ͨΊɺ
 طʹݟ͍͑ͯΔϦιʔεҎ֎ͷϞσϧΛఆٛͰ͖ͳ͍ • ͜͜·ͰͰΠϯλʔϑΣΠε͕ݻ·͓ͬͯΓɺͦΕͰ΋࣮૷Ͱ͖ͯ͠·͏ 14 ※ https://www.martinfowler.com/eaaCatalog/activeRecord.html

Slide 15

Slide 15 text

υϝΠϯϞσϧͷॏཁੑ Ϟσϧʹ͍ͭͯ • ͦ΋ͦ΋ɺϏδωεϩδοΫ͸ຊ࣭తʹෳࡶͳ΋ͷ • ͦͷෳࡶ͞Λ؅ཧ͠ɺڞ௨ͷཧղΛଅਐ͢Δ • Ϗδωεϧʔϧͷ໌֬Խ • υϝΠϯϨΠϠʔͰҰݩ؅ཧ͢Δ͜ͱͰɺҰ؏ੑΛอূͰ͖Δ …etc 15 👉 Ϗδωεͷܧଓతͳվળͱ੒௕Λࢧԉ͢ΔͨΊʹॏཁ

Slide 16

Slide 16 text

EC αΠτͷ۩ମྫ

Slide 17

Slide 17 text

ECαΠτ: OOC Shop Online ͷ։ൃ EC αΠτͷ۩ମྫ • Սۭͷձࣾ OOC inc. Ͱ͸ɺECαΠτΛ։ઃ͢Δ͜ͱʹɻ • ωοτγϣοϓͷ࡞੒αʔϏεΛ࢖͏Ҋ΋͕͋ͬͨɺ
 ΧελϚΠζੑΛٻΊͯ಺੡։ൃΛܾஅ • PjM ͱϑϩϯτΤϯυΤϯδχΞ, 
 όοΫΤϯυΤϯδχΞͷ3ਓͰ։ൃΛ։࢝ 17

Slide 18

Slide 18 text

ٕज़ελοΫͱΞʔΩςΫνϟ EC αΠτͷ۩ମྫ • C#, ASP.NET • REST API • Layered Architecture • Repository pattern (DIP) • RDB 18 Controller ApplicationService Domain Infrastructure DB

Slide 19

Slide 19 text

ੜ੒ AI ΛશྗͰ׆༻ͨ͠։ൃ EC αΠτͷ۩ମྫ • ཁ݅ͱઃܭํ਑Λ AI ʹ఻͑ɺ ര଎Ͱ։ൃΛਐΊ͍ͯ͘ • ػೳཁ݅Λຬͨ͢γεςϜ͸ ͋ͬͱ͍͏ؒʹ׬੒✨ 19

Slide 20

Slide 20 text

1೥ޙ 1 year later

Slide 21

Slide 21 text

🎉 OOC Shop ͸ઈ޷ௐʂ EC αΠτͷ۩ମྫ • ૣΊͷϚʔέοτΠϯ͕ޭΛ૗͠ɺചΓ্͛޷ௐ • 1प೥ه೦Ωϟϯϖʔϯ΍ɺେޱސ٬޲͚ͷ։ൃҊ݅Ͱେ๩͠ • ΤϯδχΞ΋૿һͯ͠ɺଓʑͱ௥Ճ։ൃ͕ߦΘΕ͍ͯ͘ 21

Slide 22

Slide 22 text

3೥ޙ 3 year later

Slide 23

Slide 23 text

⚡ Ӣߦ͖͕ո͘͠ͳͬͯͨ EC αΠτͷ۩ମྫ • ECαΠτͷੑೳྼԽ͕ݦஶʹɻCore Web Vitals ͷείΞ΋௿ௐ • ػೳ௥Ճͷ଎౓΋མ͖ͪͯͯɺڝ߹ଞࣾͱൺ΂ͯ΋ػೳམ͕ͪ໨ཱͭ • ίʔυ΍ϩδοΫ͕ෳࡶԽ͠ɺΤϯδχΞ͔Β΋ٕज़తෛ࠴ͷ੠͕ • ͦΜͳ࣌ɺෆ۩߹͕ݪҼͱͳΓ SNS ͰԌ্͢Δࣄ͕݅ൃੜ 🔥 • νʔϜ͸Ұ౓ཱͪࢭ·Γɺઃܭ΍࣮૷Λݟ௚͢͜ͱʹͨ͠🕵 23

Slide 24

Slide 24 text

վળͷಓے

Slide 25

Slide 25 text

౰ॳͷυϝΠϯͱαϒυϝΠϯͷཧղ վળͷಓے 25 ঎඼Λ஫จ͍ͨ͠ • ͸͡Ί͸ʮ঎඼ΛചΔͨΊͷ EC αΠτʯΛ࡞Δ͜ͱ͚ͩΛߟ͍͑ͯͨ • ͦͷͨΊɺγεςϜͷ௚઀ͷར༻ऀ͚ͩʹ஫໨͍ͯͨ͠ EC system ஫จ 👤 👩🏭 ސ٬ ࡏݿ ঎඼Λݟ͍ͨ ࡏݿ؅ཧ ঎඼ൃૹ αϓϥΠ νΣʔϯ

Slide 26

Slide 26 text

αϒυϝΠϯͷൃݟͱཧղ վળͷಓے 26 Ϧʔυ֫ಘࢪࡦ EC system ஫จ ঎඼Χλϩά ίϯςϯπ؅ཧ ސ٬؅ཧ ࡏݿ؅ཧ 👨💻 👩💻 🧑💻 👩🏭 Ϛʔέ ஫จ 👤 ސ٬ ঎඼ݟΔ Ωϟϯϖʔϯ Ϋʔϙϯ ΤϯδχΞ ӡ༻อक ΧελϚʔ αϙʔτ αϓϥΠ νΣʔϯ ࡏݿ؅ཧ ঎඼ൃૹ αϙʔτ • γεςϜͰ͸ͳ͘ɺϏδωεͷ؍఺͔Β෼ੳ͠௚ͨ͠ • ௚઀ૢ࡞͢ΔҎ֎ʹ΋ɺ࣮ࡍʹ͸ଟ͘ͷࣄۀ׆ಈྖҬ͕ଘࡏ͢Δ͜ͱʹؾͮ͘ ϩόετωε෼ੳ,
 Πϕϯτετʔϛϯά …etc

Slide 27

Slide 27 text

αϒυϝΠϯʹରԠ͢Δڥք͚ͮΒΕͨίϯςΩετͷઃܭ վળͷಓے 27 Ϧʔυ֫ಘࢪࡦ EC system ஫จ ঎඼Χλϩά ίϯςϯπ؅ཧ ސ٬؅ཧ ࡏݿ؅ཧ 👨💻 👩💻 🧑💻 👩🏭 Ϛʔέ ஫จ 👤 ސ٬ ঎඼ݟΔ Ωϟϯϖʔϯ Ϋʔϙϯ ΤϯδχΞ ӡ༻อक ΧελϚʔ αϙʔτ αϓϥΠ νΣʔϯ ࡏݿ؅ཧ ঎඼ൃૹ αϙʔτ • ࣄۀ׆ಈྖҬʹରԠ͢ΔܗͰαϒγεςϜΛݕ౼ • ࠓճ͸׬શʹ 1:1 ͰରԠ͢ΔΑ͏ʹ Ordering context Catalog context Inventory context Support context CMS context

Slide 28

Slide 28 text

໾ׂ݉຿ͷ Product Ϟσϧ վળͷಓے • ࠶ઃܭޙʹվΊͯݟΔͱɺ
 จ຺ͷࠞࡏΛೝࣝͰ͖ͨ • ෳ਺ͷ੹຿Λ࣋ͬͨ͜ͱͰɺ
 Fat Model ʹͳͬͯ͠·͍ͬͯͨ 28 👈 Inventory EC system Product 👈 Catalog 👈 Ordering 😵💫

Slide 29

Slide 29 text

վળޙͷ Product Ϟσϧ վળͷಓے 29 EC system Ordering context Catalog context Inventory context Support context CMS context Product • Catalog context ͱͯ͠ඞཁͳ
 ଐੑɾৼΔ෣͍ʹݶఆ

Slide 30

Slide 30 text

Ordering context ઐ༻ͷϞσϧ վળͷಓے 30 EC system Ordering context Catalog context Inventory context Support context CMS context OrderProduct Product • αϓϥΠνΣʔϯͷ୲౰ऀ͸ʮ஫จ঎඼ʯͱݺΜͰ͍ͨ • OrderProduct ͱͯ͠ఆٛͨ͠ • ໾ׂ͕໌֬ʹ͢Δ͜ͱͰݟ௨͕͠
 ྑ͘ͳΓɺςετ༰қੑ΋޲্

Slide 31

Slide 31 text

վળલͷ 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 ͸શͯͷ߲໨Λฦ͍ͯͨ͠

Slide 32

Slide 32 text

ReadModel ͷಋೖʢCQRSʣ վળͷಓے 32 • ސ٬ͷϚΠϖʔδʹඞཁͳ৘ใͷΈ Λอ࣋ͨ͠ ReadModel Λઃܭͨ͠ • ϦʔυϞσϧͷ৚݅ • QueryMethodͷΈΛ࣋ͭ
 (ΠϛϡʔλϒϧͰ͋Δ) • ͋ΔϢʔεέʔεʹಛԽ͍ͯ͠Δ • ඞཁͳσʔλ͕ΦϒδΣΫτऔಘ࣌ ʹར༻ՄೳͰ͋Δ͜ͱ Controller Domain Infrastructure Customer ApplicationService Customer MyPage ࢀߟɿʰΦϒδΣΫτઃܭελΠϧΨΠυʱ

Slide 33

Slide 33 text

33 ReadModel ͷಋೖʢCQRSʣ վળͷಓے ϚΠϖʔδදࣔʹ ඞཁͳσʔλͷΈ Customer Ϟσϧ CustomerMyPage Ϟσϧ • දࣔͷͨΊ͚ͩͷଐੑ΍ৼΔ෣͍ΛυϝΠϯϞσϧ͔ΒऔΓআ͘͜ ͱ͕Ͱ͖ɺ͞Βʹݟ௨͕͠ྑ͘ͳͬͨ ૯஫จճ਺ͳͲಋग़͍ͯͨ͠ ৘ใ΋࠷ॳ͔Β࣋ͨͤΔ

Slide 34

Slide 34 text

ಉ͡աͪΛ܁Γฦ͞ͳ͍ͨΊʹ վળͷಓے • νʔϜ͸ۀ຿Λ෼ੳ͢Δ͜ͱͰ • ࣗ෼͕ͨͪ޲͖߹͍ͬͯͨࣄۀྖҬɺͦͷதͷ׆ಈྖҬΛཧղͨ͠ • ׆ಈྖҬʹରԠ͢ΔܗͰαϒγεςϜΛઃܭɺ
 ϦϑΝΫλϦϯάʹΑΓ៉ྷͳίʔυΛऔΓ໭ͨ͠ • ͔͠͠ɺίʔυϕʔε͕มΘ͚ͬͨͩͰ͸
 ͕࣌ؒܦͯ͹·ͨෳࡶੑʹ೰·͞Εͯ͠·͏ • ։ൃͷΞϓϩʔνΛม͑Δඞཁ͕͋ͬͨ 34

Slide 35

Slide 35 text

ઓज़తϓϩάϥϛϯά Tactical Programming

Slide 36

Slide 36 text

ઓज़తϓϩάϥϛϯάͱ͸ͲͷΑ͏ͳ΋ͷ͔ ઓज़తϓϩάϥϛϯά • ػೳΛಈ࡞ͤ͞Δ͜ͱʹয఺Λ౰ͯͨϓϩάϥϛϯάͷ͜ͱ • ʮԿΛղܾ͍ͨ͠ͷ͔ʯͰ͸ͳ͘ɺ
 ʮͲ͏͢Ε͹࣮ݱͰ͖Δͷ͔ʯͱߟ͑ͯ͠·͏ • طʹ͋ΔϦιʔεΛݩʹԿͱ͔͠Α͏ͱ͢Δ܏޲ • ٕज़తͳղܾํ๏΁ͷؔ৺΋ҰҼ • ʮఆظόονͰಉظ͢Δඞཁ͕͋ΔͷͰ͸…ʯ🤔 36 ࢀߟ: ʰA Philosophy of Software Designʱ 👉 ઓज़తϓϩάϥϛϯάͷੵΈॏͶ͕ෳࡶ͞ΛੜΉ

Slide 37

Slide 37 text

ઓज़తϓϩάϥϛϯάͷྫ 1 - খن໛ͷվम ઓज़తϓϩάϥϛϯά • ཁ݅ɿ৽঎඼ΛఆՁͷ10%Ҿ͖Ͱൢച͠·͢ • ΤϯδχΞɿ • Product ʹ IsNewRelease ϑϥάΛ͚ͭͯɺtrue ͩͬͨΒׂҾ͠Α͏ • Products ςʔϒϧʹΧϥϜΛ௥Ճͯ͠ • Product Ϟσϧʹ΋ bool ͷϓϩύςΟΛ௥Ճ͢Ε͹ OK 37

Slide 38

Slide 38 text

ઓज़తϓϩάϥϛϯάͷྫ 2 - ػೳ௥Ճ ઓज़తϓϩάϥϛϯά • ཁ݅ɿ঎඼ͷϨϏϡʔػೳΛ௥Ճ͠·͢ • ΤϯδχΞɿ • ProductReviews ςʔϒϧΛ࡞Ζ͏ • ProductId Λ֎෦Ωʔͱͯ࣋ͬͯ͠ඥ͚ͮΔ • Product Ϟσϧʹ Reviews ഑ྻΛ௥Ճͯ࣋ͨͤ͠Ε͹͍͍ 38

Slide 39

Slide 39 text

ઓज़తϓϩάϥϛϯάΛՃ଎ͤ͞Δ AI ʹΑΔ։ൃ ઓज़తϓϩάϥϛϯά • ͜ͷ࣌ɺΤϯδχΞ͸
 ੜ੒ AI ʹؙ౤͓͛ͯ͠Γɺ
 ಛʹԿ΋ߟ͍͑ͯͳ͔ͬͨ 39 Generative AI

Slide 40

Slide 40 text

ઓज़తϓϩάϥϛϯάͷ݁Ռ ઓज़తϓϩάϥϛϯά • ͱ͸͍͑ɺͲͪΒ΋ͦͷ࣌͸໰୊͕͋ΔΑ͏ʹࢥ͑ͳ͍͔΋͠Εͳ͍ • ͦͯ͠ɺϦϦʔε͞ΕΔͱ࣮ࡍʹՁ஋΋ੜΈग़͢ • ͔͠͠ɺͦͷੵΈॏͶ͕ෳࡶ͞Λ࡞Γ্͍͛ͯ͘ • Ͱ͸ɺͲ͏͢Δ΂͖ͳͷ͔ʁ 40

Slide 41

Slide 41 text

ઓུతϓϩάϥϛϯά Strategic Programming

Slide 42

Slide 42 text

ઓུతϓϩάϥϛϯάͱ͸ͲͷΑ͏ͳ΋ͷ͔ ઓུతϓϩάϥϛϯά • ػೳΛಈ࡞ͤ͞Δ͜ͱΛୈҰͷ໨ඪʹ͢ΔͷͰ͸ͳ͘ɺ
 ͍͔ͭ͘ͷઃܭΛࢼͯ͠࠷΋ΫϦʔϯͳ΋ͷΛબ୒͢Δ • কདྷͷγεςϜ֦ுΛ૝ఆͯ͠ɺ֦ு͕༰қͳ΋ͷΛબ୒͢Δ • γεςϜઃܭΛվળ͢ΔͨΊʹ࣌ؒΛ౤ࢿ͢Δ • ࠷଎Ͱ͸ͳ͘ɺ࠷ળΛ໨ࢦ͢Ξϓϩʔν 42 ࢀߟ: ʰA Philosophy of Software Designʱ

Slide 43

Slide 43 text

ઓུతϓϩάϥϛϯάͷྫ 1 - খن໛ͷվम ઓུతϓϩάϥϛϯά 43 • ཁ݅ɿ৽঎඼ΛఆՁͷ10%Ҿ͖Ͱൢച͠·͢ • ϚʔέςΟϯάνʔϜʹΑΔͱɺࠓޙ΋༷ʑͳΩϟϯϖʔϯΛల։͍ͨ͠Β͍͠ • ͢ͰʹܭըࡁΈͷ΋ͷ΍ɺۀքͰҰൠతͳΩϟϯϖʔϯʹ͍ͭͯݕ౼ͨ͠ • ஋ׂҾΛ؅ཧ͢Δ࢓૊ΈΛઃܭͯ͠ɺͦͷϩδοΫΛผ్࣮૷͢Δ • ஫จͷλΠϛϯάͰΩϟϯϖʔϯΛద༻ͯ͠ɺׂҾΛ࣮ݱ͢Δ • ͦͷޙɺΞ΢τϨοτ඼Λ30%Ҿ͖Ͱൢച͢Δࡍ΋গ͠ͷվमͰ࣮ݱͰ͖ͨ ੜ੒ AI Λ࢖͏৔߹΋
 ઃܭίϯηϓτΛ఻͑ͯนଧͪʹ

Slide 44

Slide 44 text

ઓུతϓϩάϥϛϯάͷྫ 2 - ػೳ௥Ճ ઓུతϓϩάϥϛϯά • ཁ݅ɿ঎඼ͷϨϏϡʔػೳΛ௥Ճ͠·͢ • Review ϞσϧΛఆٛͯ͠ɺѻ͏Α͏ʹͨ͠ • ਓؾ঎඼͸େྔͷϨϏϡʔ͕͋ͬͯ঎඼ද͕ࣔ஗͘ͳΔ͜ͱ͕
 ݒ೦͞Ε͕ͨɺಠཱͯ͠ѻ͑ͨͨΊ஗ԆಡΈࠐΈ͢Δ͜ͱ͕Ͱ͖ͨ • ݸʑͷϨϏϡʔʹରͯ͠΋ෆద੾ͳ಺༰ΛϑΟϧλϦϯά͢ΔͳͲɺ
 αϙʔτνʔϜ͔Βͷཁ๬ʹ΋ૉૣ͘Ԡ͑Δ͜ͱ͕Ͱ͖ͨ 44

Slide 45

Slide 45 text

ઓज़తϓϩάϥϛϯά͸ѱ͔ʁ ઓज़తϓϩάϥϛϯάͱઓུతϓϩάϥϛϯά ϦεΫड༰ͯ͠બ୒͢Δ৔߹΋͋ΔʢͦΕ͕ྑ͍ͱ͸ݴ͍ͬͯͳ͍ʣ 1. ڝ߹ΑΓ΋ઌʹࢢ৔΁αʔϏεΛ౤ೖ͍ͨ͠ 💨 2. PoC ͱͯ͠ͷ࣮૷Ͱ͋Γɺ࣮֬ʹ࢖͍ࣺͯͷίʔυͰ͋Δ • ʢԟʑʹͯͦ͠ͷ··ϩʔϯν͞ΕΔͱ͍͏࿩͸͋Δ🙉 ʣ 3. Hot fi x 🚑 45 ࢀߟ: ʰA Philosophy of Software Designʱ ͕࣌ؒܦͭʹͭΕɺઓུతΞϓϩʔνͷਐḿ͕ٯస͢Δ

Slide 46

Slide 46 text

46 ʰιϑτ΢ΣΞΞʔΩςΫνϟͷجૅʱ “ΞʔΩςΫνϟʹ͸ਖ਼ղ΋ؒҧ͍΋ͳ͍ɻ ͨͩτϨʔυΦϑ͕͋Δ͚ͩͩ.” - Neal Ford

Slide 47

Slide 47 text

·ͱΊ

Slide 48

Slide 48 text

ࠓճͷςʔϚͰ͋Δ“໰୊ղܾʹ໾ཱͭϞσϧ”ͱ͸ ·ͱΊ • ର৅υϝΠϯͷϏδωεϧʔϧ͕໌֬ʹ൓ө͞Ε͍ͯΔ • σʔλͱϩδοΫ͕·ͱΊΒΕɺந৅σʔλܕͱͯ͠ઃܭ͞Ε͍ͯΔ • ٸͳࢢ৔ͷมԽ΍ϏδωεཁٻʹରԠͰ͖Δॊೈ͞Λ࣋ͭ • ࠶ར༻ੑʹ༏ΕɺҙຯతͳίʔυͷॏෳΛ๷͙ 48

Slide 49

Slide 49 text

υϝΠϯϑΝʔετͱ͸ ·ͱΊ • ٕज़తͳ՝୊΍DBઃܭΑΓ΋ઌʹɺղܾ͍ͨ͠໰୊ྖҬʢυϝΠϯʣͱͦ ͷෳࡶੑʹֶ͍ͭͯͼɺͦͷ஌ࣝΛத৺ʹઃܭ͢ΔΞϓϩʔν • αϒυϝΠϯΛ෼ੳͯ͠ɺڥք෇͚ΒΕͨίϯςΩετΛઃܭ͢Δ • ͦͷதͰར༻͢ΔυϝΠϯϞσϧΛઃܭ͢Δ • ద੾ͳۀ຿ཧղͷޙʹɺΑΓྑ͍ઃܭ͕ՄೳʹͳΔʢ՝୊ͷղ૾౓Λ্͛Δʣ • શ͘ҟͳΔઃܭʹͳΔ͜ͱ͑͋͞Δ • DDD ͷઓज़తઃܭͷϓϥΫςΟεͷΈΛઌʹಋೖ͢Δέʔε͸… • ੔ཧ΍ந৅΁ͷґଘɺִ཭ͳͲɺݟ௨͠ΛΑ͘͢Δҙຯ͸͋Δ • ෆ۩߹ΛੜΈग़͢γεςϜɺϞσϧʹͳΔϦεΫΛΑΓଟ๊͑͘Δ 49

Slide 50

Slide 50 text

͍͞͝ʹ ·ͱΊ • AI͕ίʔυΛಡΜͰɺॻ͍ͯɺϨϏϡʔ·Ͱ͢Δ࣌୅ɻࢲ͕ͨͪશͯΛख ͰରԠ͢Δػձ͸ݮ͖ͬͯ·ͨ͠ɻ͜ͷઌ΋ͬͱݮΔͰ͠ΐ͏ɻ • ࠓճͷྫͷΑ͏ʹɺAI ʹطଘͷϦιʔεΛఏڙͯ͠ɺ͜͏͍ͬͨ໰୊Λ ղܾ͍ͨ͠ͱ఻͑Δͱɺଟ͘ͷ৔߹ʹઓज़తϓϩάϥϛϯάΛ࢝Ί·͢ • ࣮ࡍʹಈ࡞͢Δ΋ͷͷɺͬͪ͜ΛཱͯΔͱཱ͕͋ͬͪͨͣɺόάΛ௵ͯ͠ ΋·ͨผͷՕॴͰόάΔɺͱ͍ͬͨঢ়گʹͳΓ͕ͪͰ͢ɻݱ࣌఺Ͱ͸ɻ • ࢲ͕ͨͪυϝΠϯΛ෼ੳͯ͠ɺઃܭ͢Ε͹ɺ΋ͬͱ AI Λ׆༻Ͱ͖·͢ • AI ͱγεςϜΛ࡞Δ࣌ɺԿΛղܾ͍ͨ͠ͷ͔Λؾʹͯ͠Έ͍ͯͩ͘͞ 50