Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ソフトウェアアーキテクチャ入門

Avatar for Ogata Katsuya Ogata Katsuya
September 13, 2025
44

 ソフトウェアアーキテクチャ入門

Avatar for Ogata Katsuya

Ogata Katsuya

September 13, 2025
Tweet

Transcript

  1. ࣗݾ঺հ • ໊લ: ॹํ ࠀ࠸ (͓͕ͨ ͔ͭ΍) • ॴଐ: େࡕେֶ৘ใֶݚڀՊ

    • झຯ: ొࢁ/ਭ຾/৯ࣄ • ࠷ۙϋϚͬͯΔ͜ͱ: ࣗ୐αʔόʔ • X: @ogata_katsuya • ݸਓ: www.ogatakatsuya.com
  2. ωετΛਂ͘͠ͳ͍ Early returnͱcontinue/breakΛ׆༻͢Δ • ifจͷωετ͕ਂ͘ͳΔͷΛ๷͙ • 🙅 If A ->

    if B -> ॲཧ • 🙆 If !A return -> if !B return -> ॲཧ • forจதͷifจ΋continue/breakΛ༻͍͙ͯ͢ൈ͚Δ
  3. σʔλܕΛ׆༻͢Δ ؔ਺ͷ໭Γ஋ʹܕΛར༻͢Δ • ؔ਺ͷ໭Γ஋ʹϓϦϛςΟϒܕ(bool, int, fl oat, double, string)͔͠༻͍ͳ͍ •

    ϓϦϛςΟϒܕࣥண • ໭Γ஋ͷΞϊςʔγϣϯʹ΋σʔλܕΛ༻͍Δ͜ͱͰɺՄಡੑΛ޲্ͤ͞Δ • ΤϥʔͱҰॹʹ݁ՌΛฦ͢Resultܕͱ͍͏ͷ΋ଘࡏ͢Δ • TypeScript, Rust, Golang etc…
  4. ੹຿Λద੾ʹ෼཭͢Δ ୯Ұ੹೚ͷ๏ଇ / ؔ৺ͷ෼཭ • ͳΜͰ΋Ͱ͖ͪΌ͏Ϋϥε(ਆΫϥε)Λ࡞Βͳ͍ • ੹຿ʹԠͯ͡ద੾ʹ෼͚ͯ͋͛Δ • ςετ͕΍Γ΍͘͢ͳΔ

    • ϦϑΝΫλϦϯά͕͠΍͘͢ͳΔ • ֤ίϯϙʔωϯτΛૄ݁߹ʹอͭ͜ͱ͕ॏཁ • SOLIDݪଇΛࢀর͢Δͱྑ͍
  5. ΠϯλʔϑΣʔεͱϩδοΫΛ෼཭͢Δ ϩδοΫΛӅṭͯ͠ΠϯλʔϑΣʔε͚ͩΛެ։͢Δ • ϩδοΫ͕ີ݁߹ʹͳΒͳ͍ͨΊʹɺΠϯλʔϑΣʔεʹґଘͯ͠΋Β͏ • มߋ༰қੑ / Մಡੑ্͕͕Δ • νʔϜ։ൃ͕΍Γ΍͘͢ͳΔ

    • ܨ͗͜ΈͷࡍʹɺΠϯλʔϑΣʔε͚ͩΛҙࣝ͢Ε͹ྑ͍ • ࠓޙɺ͞Βʹ௥Ճ͞ΕΔՄೳੑ͕͋Δͳͱ͍͏࣌ʹ࢖͏ͱྑ͍ • ΠϯλʔϑΣʔεͷߟ͑ํΛ׆༻Ͱ͖ΔΑ͏ʹͳΔͱάοͱϨϕϧ্͕͕Δ
  6. ϨΠϠʔυΞʔΩςΫνϟͱ͸ ֤૚Ͱ੹຿Λ෼ׂɾӅṭ͢Δ ϨΠϠʔ ໾ׂ ۩ମྫ Presentation ϢʔβʔΠϯλʔϑΣʔε HTTP ϦΫΤετͷॲཧ REST/GraphQL

    Webϖʔδ Application Ϣʔεέʔεͷ࣮૷ υϝΠϯɾΠϯϑϥΛར༻ͨ͠ॲཧϑϩʔ Usecase૚ Domain ϏδωεϩδοΫ γεςϜͷ֩ͱͳΔ෦෼ UserΫϥε ProductΫϥε Infrustructure σʔλϕʔεΞΫηε ֎෦APIݺͼग़͠ Repository૚ Infrustructure૚
  7. (༨ஊ) ࣮૷ྫ • τϥϯεϙʔτ૚ • TCP / UDPͱ͍ͬͨϓϩτίϧΛѻ͏૚ • ओʹɺ௨৴ͷ৴པੑΛ޲্ɾ୲อ͢ΔͨΊͷ૚

    • ωοτϫʔΫٕज़ͷҧ͍Λٵऩͯ͠ΞϓϦέʔγϣϯ૚ʹωοτϫʔΫͷ ੾ΓޱΛݟͤͯ͋͛Δ • جຊతͳελϯεͱͯ͠͸ωοτϫʔΫΛ৴པ͍ͯ͠ͳ͍ • ͦͷͨΊʹɺ࠶ૹॲཧ౳Λߦ͏
  8. ΞʔΩςΫνϟͷҙࢥܾఆ ΞʔΩςΫνϟͷબఆ͸͞·͟·ͳཁૉΛؑΈܾͯఆ͢Δ • Ϗδωε • ͍ͭ·ͰʹϦϦʔε͍͔ͨ͠ • αʔϏεͷٻΊΔύϑΥʔϚϯεɾηΩϡϦςΟཁ݅ • ૊৫

    • ͲΜͳεΩϧηοτͷਓ͕͍ͯɺͲΕ͘Β͍ͷਓ਺Ͱ։ൃ͢Δ͔ • ٕज़ • ͲΜͳݴޠɾϑϨʔϜϫʔΫΛ༻͍ͯ։ൃΛߦ͏͔
  9. ࢀߟจݙ • ॻ੶ • ྑ͍ίʔυ/ѱ͍ίʔυͰֶͿઃܭೖ໳ • Good Code, Bad Code

    • ೴ʹऩ·Δίʔυͷॻ͖ํ • ΢Σϒϖʔδ • ͜Ε͔ΒֶͿਓͷͨΊͷιϑτ΢ΣΞΞʔΩςΫνϟೖ໳ • Software Architecture in an AI-Driven World • ιϑτ΢ΣΞΞʔΩςΫνϟݚमʲMIXI 25৽ଔٕज़ݚमʳ
  10. Q&A