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

ちょうぜつ改め21世紀ふつうのソフトウェア設計

 ちょうぜつ改め21世紀ふつうのソフトウェア設計

Forkwell Library #14 2023.1.25 のスライドです。
https://forkwell.connpass.com/event/271212/

Hisateru Tanaka

January 25, 2023
Tweet

More Decks by Hisateru Tanaka

Other Decks in Programming

Transcript

  1. ͪΐ͏ͥͭվΊੈل;ͭ ͏ͷιϑτ΢ΣΞઃܭೖ໳

  2. w ओʹ1)1Λ࢖͓ͬͯ࢓ࣄͯ͠·͢ w ͪΐ͏ͥͭΤϯδχΞΊ΋Γʔͪ ΌΜ w ೥ͷ೥຤ʹຊ͕ग़·ͨ͠ ాதͻͯ͞Δ

  3. ੈلͷίϯϐϡʔλʔ Մಈ෦඼ͳ͠ܭࢉػͷ஀ੜ &/*"$ ೥୅

  4. ੈلͷίϯϐϡʔλʔ τϥϯδελूੵԽˠιϑτ΢ΣΞͷෳࡶԽ 4ZTUFN ೥୅

  5. w ޙʹ΢ΥʔλʔϑΥʔϧͱ ݺ͹ΕΔΑ͏ʹͳͬͨ΋ͷ w ࢖͏ਓ͸ݶΒΕΔˠ΍Γͨ ͍͜ͱ͸͔͕ͨ஌Ε͍ͯΔ w ओ໰୊͸ߴՁ͗͢Δϋʔυ ΢ΣΞΛແବͳ͘࢖͑Δ͔ w

    ઃܭ͸༧ଌՄೳɻϓϩάϥ ϛϯάҎલʹਓ͕ؒۤ࿑͢ Δํ͕Α͍݁ՌΛੜΉ ౰࣌ͷ;ͭ͏ ΍ΉΛ͑ͣ IUUQXXXTDGVTDFEVdDTDJMFDUVSFT-FDUVSFSPZDFQEG
  6. w ࣮͸4ZTUFNͷ։ൃޙه ग़൛  w ϒϧοΫεͷ๏ଇʮޙ޻ఔ΁ͷ૿ һ͸ੜ࢈ੑΛԼ͛Δʯ w ιϑτ΢ΣΞʹରͯ͠ʮΞʔΩς Ϋνϟʯͱ͍͏ݴ༿ΛॳΊͯ࢖༻

    w ʮ֎Պखज़νʔϜʯͷൺᄻ w ͳͥ͜͏ͳΒͳ͔ͬͨͷ͔ ਓ݄ͷਆ࿩ ;ͭ͏ʹͳΔ΂͖ͩͬͨ͜ͱ
  7. w ͲΕ͚ͩେ͖ͯ͘ڧ͍΋ͷΛ࡞ΕΔ͔ w ࡞ΔͨΊͷ૊৫ΛͲΕ͚ͩେ͖͘Ͱ͖Δ͔ w ૊৫ϐϥϛου֊૚ʹΑΔେن໛Խ w ্૚ͷΠϯςϦ͸গ਺ͰࡁΉ w Լ૚͸ຌ༱ͳ࿑ಇऀΛޏ͏΂͖

    w ࿑ಇऀ͸ϚχϡΞϧ௨Γਖ਼֬ʹಈ͘ػց 
 Μ ͳʹ͔ົͩͧʜ ੈل·Ͱʹൃୡͨ͠ࢥ૝
  8. ੈلͷίϯϐϡʔλʔ ύʔιφϧίϯϐϡʔλʔͷ͸͡·Γ "QQMF* ೥୅

  9. ੈلͷίϯϐϡʔλʔ શਓྨن໛ͷύʔιφϧίϯϐϡʔλʔීٴ΁ /&4 ೥୅

  10. ϜʔΞͷ๏ଇ͸࢝·͍ͬͯͨ ܭࢉػͷूੵ౓͸೥ͰഒҎ্ʹ

  11. ;ͭ͏ͷײ͕֮มΘͬͨ ശϞϊ੡଄ͱίϯϐϡʔλʔͷҧ͍ ࢢൢιϑτ΢ΣΞ

  12. w ߴߍੜͷύιίϯগ೥ w ి࿩λμ͕͚ϋοΧʔ w ΦϯϥΠϯͷύιίϯήʔϜͩͱ ࢥ͍ͬͯͨ΋ͷ͕/03"% ๺Ξ ϝϦΧߤۭӉ஦๷Ӵ࢘ྩ෦ ͷγ

    εςϜͩͬͨ w "QQMF*͔Β೥ͱܦͨͣʹɺ ͜Μͳөը͕ʮΘ͔Δʙʯͱ΢ έΔ࣌୅ʹ 8BS(BNFT  ύιίϯগ೥WT֩؅ཧγεςϜ
  13. ੈلͷίϯϐϡʔλʔ ύιίϯͱຊ֨తͳίϯϐϡʔλʔͷڥ໨͕ͳ͘ͳΔ 8JOEPXT ೥୅

  14. w 8JOEPXTରԠɺ1$"5ޓ׵ͷσό Πεɻ෺ཧ͕ΞʔΩςΫνϟʹґଘ w ػցͷݴޠͰϓϩάϥϛϯά͠ͳ͘ ͯ΋ΤΫηϧͰ౳Ձͳܭࢉ͕Ͱ͖Δ w ΤϯυϢʔβʔίϯϐϡʔςΟϯ ά8:4*8:(1MVH1MBZ w

    ιϑτ΢ΣΞ͸ϋʔυ΢ΣΞʹର͠ ͯΧϦΧϦʹ࠷దԽ͢ΔΑΓɺແବ ͕͋ͬͯ΋ਓ͕ؒ࢖͍΍͘͢ ೥୅͸΋ͬͱ΋ΤΩαΠςΟϯάͳ࣌୅ ੈք͸ιϑτ΢ΣΞͷ࣌୅΁
  15. ͱ͜Ζ͕ιϑτ΢ΣΞ։ൃ͸ʜ ॏްͳϓϩδΣΫτ؅ཧɾϛυϧ΢ΣΞͷංେԽ ʮιϑτ΢ΣΞͷ࣌୅΁ʯͬͯͦ͏͍͏͜ͱͳΜʜ

  16. w ਓͷࢥߟ͸ͭͶʹݱ࣮͔ΒԿ ೥͔஗ΕΔ w ถ܉΋͜Ε͕͍͍ͱݴͬͯͨ ͡Όͳ͍͔ w ύιίϯ΍ήʔϜػͳΜͯຊ ෺ͷίϯϐϡʔλʔ͡Όͳ͍ ΋Μ

    w େاۀϚωʔ͕ܦࡁ্ࢧ഑త ͳͷ͸ݱ࣮Ͱ͸͋ͬͨΑͶʜ લ࣌୅తͳࢥ͍ࠐΈ͕࢒ͨ͠ʮ͋ͬͯ΄͍͠ܗʯ ͍·ͩ౎߹ͷྑ͔ͬͨϞσϧ ͑Β͍ ୭Ͱ΋Ͱ͖Δ ͸ͣͳΜͩ ͜ͱʹͳͬͯΔ
  17. w σβΠϯύλʔϯΦϒδΣΫτࢦ޲΁ͷ࠶஫໨ w &OUFSQSJTF+BWB#FBOTˠܰշͳ+BWB 10+0  w Φʔϓϯιʔε-".1 -JOVY"QBDIF.Z42-1)1 

    w ϙʔϧɾάϨΞϜʮϋοΧʔͱըՈʯz#FBUJOH5IF"WFSBHFTz w 91ΤΫετϦʔϜɾϓϩάϥϛϯά 5%%൓෮গ਺ਫ਼Ӷ  w ΞδϟΠϧιϑτ΢ΣΞ։ൃએݴ ैདྷܕιϑτ΢ΣΞ։ൃ΁ͷΞϯνςʔθ ੈل͔Βੈل΁
  18. ੈلͷίϯϐϡʔλʔ ୺຤͸਎ମͷҰ෦΁ɾຊ࣭͸Ϋϥ΢υαʔϏε΁

  19. ιϑτ΢ΣΞ։ൃͷൺॏ ʮϞϊͷѻ͍ʯ͕εΩϧɻ ͲΕ͚ͩଟ͘ͷఆܕతͳ ૢ࡞͕಄ʹೖ͍ͬͯΔ͔ɻ ʮͲΜͳαʔϏε͕ศར͔ʯ ͱ͍͏౴͑ͷͳ͍໰୊͕ ιϑτ΢ΣΞ։ൃͷओ୊ʹɻ ίϯϐϡʔλʔ͸ݸਓͰ࢖͏ಓ۩ ઐ໳ΦϖϨʔλʔ͕ඞཁ ੈل

    ੈل
  20. ͚ΕͲٕज़͸೉͘͠ͳ͍ͬͯΔͷͰ͸ ΑΓෳࡶͰେ͖ͳߏ଄෺ΛͲ͏΍ͬͯ࡞Δͷ͔

  21. ͦ΋ͦ΋ڊେϞϊϦε͕ ΋͏๞࿨͓ͯ͠Δͷ͡Ό

  22. w ʮΦϯαΠτސ٬ʯͱʮϖΞϓϩάϥϛϯάʯͷ௚݁ w ςετۦಈ։ൃ͕ݪଇ 91͸ϚωδϝϯτͰ͸ͳ͍  w 5%%͸҉ʹʮ୯ମςετՄೳͳཻ౓΁ͷ໰୊෼ղ͕લఏʯΛҙ ຯ͍ͯ͠Δˠ࠷ॳʹ࡞ΒΕͨͷ͸46OJU 4NBMMUBML༻

    ͩΑ w ΦϒδΣΫτࢦ޲͸΋ͱ΋ͱʮখ͞ͳܭࢉػ͕ϝοηʔδΛհ͠ ͯωοτϫʔΫΛ੒ͨ͠࠶ؼతߏ଄ʯΈ͍ͨͳҙຯͩͬͨ w ࠓͰݴ͏ϚΠΫϩαʔϏε ଏʹݴ͏ϞδϡϥϞϊϦε΋ 91 ݩ૆ΞδϟΠϧ
  23. ΞδϟΠϧ͸খن໛ϓϩδΣΫ τ༻ͷํ๏࿦ͱݴΘΕ͕ͨʜ

  24. ෼ׂɾ൓෮ɾ෦෼ςετɾࣗݾ׬݁ ΑΓεέʔϦϯά༨஍͕͋Δͷ͸ͲͪΒͰ͠ΐ͏ ։ൃऀ͕ϢʔβʔͰ΋͋ΔΑ

  25. ઃܭ͸༧ଌՄೳͳػցͷ໰୊͔Β ༧ଌෆೳͳਓͷ໰୊ʹͳ͍ͬͯΔ ͪͳΈʹ͜Ε͸೥ͷϩΠε࿦จͷ݁࿦ͷਤͰ͢ IUUQXXXTDGVTDFEVdDTDJMFDUVSFT-FDUVSFSPZDFQEG

  26. ϢʔβʔχʔζͷॊೈੑΛࢧ͑Δ ͔ͬ͠Γͨ͠ΞʔΩςΫνϟ

  27. ιϑτ΢ΣΞઃܭ͸ࣗసंͷ྆ྠ ͲͪΒ͕͚ܽͯ΋͏·͘૸Βͳ͍ υϝΠϯϞσϧ গͮͭ͠޲͖Λม͑ΒΕΔ ΞʔΩςΫνϟ ࣗసं͸લʹਐΉ͔Β౗Εͳ͍ ΠςϨʔγϣϯ υϝΠϯ ސ٬͕ຊ౰ʹཉ͔ͬͨ͠΋ͷ 🤔

  28. ֤ιϑτ΢ΣΞʹݻ༗ͷ໰୊ ॏཁ͕ͩڞ௨ͨ͠ҰൠԽ͸Ͱ͖ͳ͍ Ͳ͏΍ͬͯεΩϧΛ্ୡͤ͞Ε͹ʜ ˠ൓෮܇࿅͔͠ͳ͍ ཁ݅ఆٛʹ͸ख़࿅͕ඞཁ ϓϩδΣΫτͷதͰ൓෮Ͱ͢Α

  29. ڞ௨ͨ͠جຊݪଇ͕͋ΔྖҬ ൓෮తͳ։ൃͷۦಈޮ཰ΛߴΊΔํ๏ ूத͢΂͖໰୊Λখ͘͞ด͡ΒΕΔ࡞Γ ߴ଎ʹςετۦಈΛճͤΔ ˠྑ͍ઃܭͷൃݟνϟϯεΛ૿΍ͯ͠ҭͯΔ

  30. ઃܭೖ໳͗͜ग़ͤΓΌͳΜͱ͔ͳΔ ৄ͍ٕ͠๏͸ຊͷதͰʜ

  31. ʮ·ͣΦϒδΣΫτࢦ޲ ΛཧղͤΑʯ͸/( ਖ਼͍͠ํ๏͑͋͞Ε͹ԋ៷తʹਖ਼͍͠࢓ࣄʹͳΔͷ͸ݬ૝ ॊೈੑΛࢧ͑Δݸʑͷ޻෉Λ௨ͯ͡ઌਓͷҙਤΛೝࣝ͢΂͠ ʮΦϒδΣΫτࢦ޲ͷ׆༻ʯͬͯʜ ͲΜͳ͜ͱ͕ॻ͍ͯ͋Δຊͳͷʁ

  32. w ೥͝ΖΞϥϯɾέΠ͕ݴ͍ग़ͨ͠Β͍͠ w 4JNVMBΛ࢖͍ͳ͕Βࢥ͍͍ͭͯɺ4NBMMUBML  ͰΞΠ σΞΛܗʹ͍ͯͬͨ͠ w ൴Ͱ͢ΒखΛಈ͔͠ͳ͕Β௫Μͩײ֮Λɺઆ໌͚ͩͰΘ͔ͬͨΑ͏ ͳؾʹͳΕΔͷͩΖ͏͔

    ͦͷޙΑΓෳࡶͳࣄ৘Λ๊͑ͨͷʹ  w ؆୯ͳݴ༿ σʔλܕʹϝιου͕ੜ͍͑ͯΔͱศར ͰΘ͔ͬͨ ؾʹͤ͞ΔݴઆΛ৴͡ΒΕΔͩΖ͏͔ w ೥୅ ʮਓ݄ͷਆ࿩ʯୈ̎൛ʙ ʹຊ֨తʹ࠶஫໨͞ Εɺ౫ଡ͞Εͣੈلʹੜ͖࢒ͬͨϓϥΫςΟεͷ࣮ફ͕ઌ ΦϒδΣΫτࢦ޲͚ͩΘ͔Δ͸ͳ͍
  33. τϨϯυٕज़㱠࿑ಇࢿ֨ ΦϒδΣΫτࢦ޲Ͱ͖·͢ ࢓ࣄΛ΋Β͑Δ

  34. ࿑ಇࢿ֨ͱରՁˠਓʹಧ͚ͨՁ஋ ੈل ੈل 💰 💰 = ϓϩάϥϛϯάݴޠ ϑϨʔϜϫʔΫ"1* ͔͍͍ͬ͜ίʔσΟϯά ౴͕ܾ͑·͍ͬͯΔ͜ͱ

    ౴͑ͷͳ͍໰୊ ݱ࣮తͳ੒Ռ ίί΍Ͱ
  35. w 7JBXFC #"4&Έ͍ͨͳͷ Λ-JTQ Ͱॻ͍ͨϙʔϧɾάϨΞϜͷຊ w ·ͩ8FC͕ϒϧʔΦʔγϟϯͩͬ ͨ࣌୅ɺͣ͹ൈ͚ٕͨज़͕Ξυόϯ ςʔδʹͳͬͯڝ߹Λग़͠ൈ͚ͨ w

    ੈք͸࠷৽ٕज़ͱ༏लͳΤϯδχΞ Λͧͬͯ͜ٻΊΔΑ͏ʹͳͬͨ w ຊ࣭తʹ͸͍͍͜ͱॻ͍ͯ͋Δ͚ Ͳɺ۩ମ࿦΋͏೥લͷՁ஋؍ ੈل͔Βੈل΁ͷγϑτظ
  36. w (PݴޠͷίʔυͰ͢ w ͜Μͳίʔυهड़͕Ͱ͖Δ͜ͱΛ͝ଘ஌Ͱ͔ͨ͠ʁ w ͜ͷߦ͸͍͍ͬͨԿΛ͍ͯ͠ΔͰ͠ΐ͏͔  w ࢲ͸Ͳ͏΍ͬͯ͜ͷίʔυΛॻ͍ͨͰ͠ΐ͏͔ ಥવͰ͕͢ΫΠζͰ͢

  37. ͨ͑͜"*ʹ഑ྻΛٯʹ͢Δํ๏Λฉ͍ͨ ط஌ͷΞΠσΞͳΒจ๏Τϥʔͷͳ͍ίʔυΛ͙͢ग़ͤΔ

  38. ΋ͬͱߴ౓ͳ͜ͱ΋ฉ͍ͯΈͨ ʮ%PDLFSͰ8PSE1SFTT΍Γ͍ͨʯ

  39. ͕͢͞ʹ͜Ε͸஌Βͳ͍ͩΖʜ 1ZUIPOͷϨτϩήʔϜΤϯδϯͩͥ ͍͍ͦͦ݁͜͜Ռग़ͯ͘͠Δ͡ΌͶʔ͔ʜ

  40. ΋͏͙͢͜Ε͕ʮී௨ͷ ΍ͭΒʯʹͳΔΜͰ͠ΐ ୭ΑΓ΋ૣ͘࠷৽ٕज़ͷ࢖͍ํΛϚελʔ͢Δ͚ͩͰ͸ɺ ΋͸΍͜Ε·ͰͷΞυόϯςʔδʹͳΒͳ͍ʜ ϋοΧʔͱըՈͷʮී௨ͷ্ʯ͸ผͷͱ͜Ζʹγϑτͨ͠

  41. ϋοΧʔ΋ըՈ΋ʜ ಉ͡౔ඨͰڝ͍߹͏૬ख͡Όͳ͍Α͜Μͳͷ IUUQTXXXDIJDIJQVJDPN

  42. ԼखͰ΋͍ͭ͜Β͕࡞Εͳ͍ ϢχʔΫͳՁ஋Λ࡞ΕΔ͔͕ উෛͳͷͰ͢ ݴ͍༁

  43. ࠶ ࿑ಇࢿ֨ͱରՁˠਓʹಧ͚ͨՁ஋ ී௨ ҎԼͷੈلత࿑ಇ WTී௨ ੈلͷৗࣝײ

  44. ඞਢεΩϧ+BWB։ൃܦݧ ʢ೥Ҏ্ʣ🤔 ͜͏͍͏ͷͬͯɺٕज़ͷ࢖͍ํΛٻΊΒΕ͍ͯΔͷͰ͸ Ͱ΋ʜ

  45. ސ٬͕ຊ౰ʹཉ͔ͬͨ͠ਓࡐ

  46. w ڞ௨ͷޠኮ͕ͳ͍ͷͰܦݧԿ೥ͱ ͍͏ݴ͍ํʹͳͬͯ͠·͏ w ʮ೥ͷܦݧʯͱݴͬͨͱ͖ຊ౰ ʹٻΊΒΕ͍ͯΔ΋ͷ͸਺ࣈͦͷ ΋ͷͰ͸ͳ͍ w ʮจ๏΍"1*ͷ஌ࣝྔʯͰ͸ͳ ͘ɺͦΕΛ࢖ͬͨʮ໰୊ղܾͷۤ

    ࿑΍੒ޭମݧʯͷ΄͏͕ཉ͍͠ ސ٬ͷઆ໌ͨ͠εΩϧཁ݅
  47. w ΋ͱ͸ʮӦۀͷઆ໌ʯͷֆ w ݴΘΕͨ͜ͱΑΓ΋ʮ͍͢͝ʯΛ ग़͢ͷ͕ചΓࠐΈͩͱࢥ͍ͬͯΔ w ͚͢͝Ε͹͍͢͝΄Ͳɺ͓ۚΛͨ ͘͞Μ΋Β͑Δʹ͕͍ͪͳ͍ͱ͍ ͬͨࡨ֮ w

    ૬खͷؾ࣋ͪΛߟ͑ͯΈ ௞͕ۚཉ͍͠ΤϯδχΞͷࣗݾΞϐʔϧ
  48. w ຊ౰͸ૉ๿ʹ͜ΕΛࢥ͍෇͚Δਓ͕ ٻΊ͍ͯΔͷͩͱͨ͠Βʜ w ͢Ͱʹ૊৫͸ʮͪΐ͏Ͳ͍͍ιϑτ ΢ΣΞʯΛΘ͔͍ͬͯΔ w ແବʹΦʔόʔεϖοΫ͞ΛΞϐͬ ͯ΋ͦΜͳਓࡐ͸Ϛον͠ͳ͍ w

    ʮ ݱ୅ͷ ;ͭ͏ʯΛͪΌΜͱͰ͖ Δਓࡐ͕͍͍ w ͜͏͍͏࠾༻͢ΔͳΒɺձࣾͱͯ͠ ͷͷͼ͠Ζ΋͋Γͦ͏ˠ༗๬ ސ٬͕ຊ౰ʹཉ͔ͬͨ͠ਓࡐ
  49. ੈلͷ;ͭ͏ະຬ ·ͩ͜ͷײ֮ ੈلͷ;ͭ͏Ҏ্ ͬͪ͜ʹͳͬͯΔ ஫௿ϨΠϠʔߴϨΠϠʔͱ͍͏࿩Ͱ͸ͳ͍Ͱ͢ɻʮۂܳͦΕࣗମ͕Ձ஋Ͱ͸ͳ͍ʯͷҙຯͰ͢

  50. w ΋͠ϗϯτʹʮͰ͖Δਓ͕ଞʹ୭΋͍ͳ ͍͔Βʯͱ͍͏ཧ༝ͰɺݴΘΕͨͱ͓Γ ͷ࡞ۀΛͤ͞ΒΕΔ࢓ࣄͩͬͨΒͲ͏͔  w ͍͘ΒεΩϧ͕͋ͬͯ΋͋·Γ׆͔ͤ ͣɺεϖοΫͷແବ w ༨࣮ͬͨྗ͸ཧղධՁ͞Εͣɺ଴۰͸ਾ

    ͑ஔ͖ɻΘ͔ͬͯ΋Β͑ͳ͍ݽಠײ w ͜ͷ࣌୅ͦΜͳΜ͡Όɺ͍͍঎඼͕࡞Ε ΔΘ͚ͳ͍ͷͰձࣾͷকདྷੑͳ͠ w ແ஌ͳਓΛ૬खʹ஌ࣝ֨ࠩΛചΔ࢓ࣄʹ ͳͬͯ͠·͏ˠ"*ʹک͑ଓ͚Δ ΋͜͠ΜͳձࣾͩͬͨΒʜຊ౰ʹೖΓ͍ͨ
  51. ੈلͷιϑτ΢ΣΞΤϯδχΞͱͯ͠ྑ͍ΩϟϦΞΛ ఏڙ