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

開発者だけでソフトウェア設計をしてはいけない理由

3204f6241aaca4a1082bfe1202e60d69?s=47 mather
October 11, 2016

 開発者だけでソフトウェア設計をしてはいけない理由

過去の設計・開発を振り返りながらソフトウェア設計を開発者だけで行ってはいけない理由を説明します。

3204f6241aaca4a1082bfe1202e60d69?s=128

mather

October 11, 2016
Tweet

Transcript

  1. ։ൃऀ͚ͩͰ ιϑτ΢ΣΞઃܭΛ ͯ͠͸͍͚ͳ͍ ཧ༝ ೆ۝भιϑτ΢ΣΞઃܭLabo vol.1 #ddd_labo ܂ാӳࢿ

  2. ࣗݾ঺հ • גࣜձࣾΞϥλφ • 2೥લ·Ͱ౦ژͷձࣾͰۈ຿ • ݩ਺ֶઐ߈ʢ੔਺࿦ʣ • ޷͖ͳݴޠɿHaskellͱ͔Scalaͱ͔ •

    झຯɿεΩϡʔόμΠϏϯάɺΧϝϥ
  3. μΠόʔ஥ؒɹืूதʂ

  4. ͓͜ͱΘΓ • աڈͷιϑτ΢ΣΞઃܭɾ։ൃͷܦݧஊ • ࣦഊͷࣄྫ͔Βֶͼ͍ͨ • ※͋͘·Ͱ΋ݸਓͷײ૝Ͱ͢

  5. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  6. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  7. എܠ ͱ͋Δձࣾ ϚʔέςΟϯάπʔϧ (ASP)

  8. ϚʔέςΟϯάπʔϧʁ

  9. طଘϓϩμΫτͷঢ়ଶ • ౓ॏͳΔཁٻΛগͣͭ͠௥Ճ࣮૷ͯ͠ϦϦʔε • طଘػೳͷվम͸σάϨ͕ාͯ͘Ͱ͖ͳ͍ • ΄΅ಉ͡ػೳΛίϐϖͯᷖ͠ճίʔυͷྔ࢈ • εύήςΟίʔυ ƅшƅ)řŵŖ

    • ֦ுੑͷݶք͕དྷ͍ͯΔ…ʂ
  10. എܠ 2ձࣾ͸΋ͬͱ੒௕͍ͨ͠ɻ
 ɹιϑτ΢ΣΞ։ൃ͸ࠓޙͲ͏͢Ε͹Α͍͔ʁ ᶃগͣͭ͠ϦϑΝΫλϦϯά͢Δɻ ᶄ࣍ظόʔδϣϯͷ։ൃɾҠߦΛݕ౼͢Δɻ ᶅͲ͏ʹ΋ͳΒͳ͍ɻݱ࣮͸ඇ৘Ͱ͋Δɻ

  11. എܠ ᶃճؼςετ͕ͳ͘ɺ࢓༷ʹ͍ͭͯ೺ѲͰ͖ͯ ͍Δਓ͕͍ͳ͍ͨΊɺϦϑΝΫλϦϯάͷਖ਼͠ ͞Λ୲อͰ͖ͳ͍ɻ ᶄಉ͘͡ϝϯόʔ͕࢓༷ʹ͍ͭͯ໌Δ͘ͳ͍ɻ
 ߋʹɺઐ༻γεςϜ΍ΧελϚΠζΛՃ͍͑ͯ Δސ٬΋ଘࡏ͢ΔͨΊɺҠߦ͕Ͱ͖ͳ͍Մೳੑ ͕ߴ͍ɻ

  12. ౴͑ᶅ ౴͑ᶅ ౴͑ᶅ

  13. δϦශϓϩμΫτ ͋Δ͋Δ

  14. ͜͜Ͱ੨ఱͷᯡᯧ

  15. ΍ͬͺΓ ࣍ظόʔδϣϯΛ࡞ͬͯ Ṣճ͢Δͧʂʂʂ by Ғ͍ਓ at ࣾһ૯ձ

  16. ࣍ظόʔδϣϯͷ։ൃ͸ ͦΜͳ͜ΜͳͰ ϓϩδΣΫτԽ͞Εͨ ಥવ

  17. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  18. ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ ཁ݅ఆ͔ٛΒड͚ೖΕςετ·Ͱ։ൃͰߦ͏׳ྫ վળཁ๬ όάใࠂ ཁ݅ఆٛ ઃܭ ࣮૷ ςετ ӡ༻

  19. ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ ಺෦ߏ଄΍໰୊఺͸։ൃऀ͔͠ཧղͰ͖ͳ͍(?)

  20. ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ ৽͍ٕ͠ज़΍࠷৽൛ͷػೳΛऔΓೖΕ͍ͨ 7 or 8 (6͸EOL)

  21. ཁ͢Δʹ

  22. ։ൃ෦໳͚ͩͰ ։ൃ͍ͯ͠Δͱ͍͏ ࣗෛ

  23. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  24. Կ͕ى͔ͬͨ͜ʁ • ΩοΫΦϑ&։ൃ߹॓ • ཁ݅Λूதతʹٞ࿦ʢͨͭ͠΋Γʣ • ཉ͍͠ػೳɾ࢒͢ػೳɾফ͢΂͖ػೳΛ
 ։ൃऀࢹ఺Ͱग़͚ͨͩͩͬͨ͠ • େ෩࿊ෑΛ޿͕͛ͨ̎ϲ݄ޙʹ͸ফ͑ͨ

  25. Կ͕ى͔ͬͨ͜ʁ • ͍͟։ൃελʔτͨ͠΋ͷͷ… • ·ͣಈ͘΋ͷΛ࡞ͬͯ։ൃͯ͠·͢Ξϐʔϧ • Ͱ΋ɺ୭ʹݟͤΕ͹͍͍ʁ • ͲΜͳػೳ͕ඞཁ͔͸୭͕ܾΊΔʁ •

    ϓϩμΫτΦʔφʔͷ࣮࣭తෆࡏ
  26. Կ͕ى͔ͬͨ͜ʁ • ୭΋࢖ͬͯ͘Εͳ͍ͷͰখن໛Ҋ݅ʹ౤ೖ(!) • ϕʔλ൛ͷ͸ͣͩͬͨͷʹ̍೥ܖ໿ • ͳ่͠͠తʹػೳ֬ఆ͠ɺϦϑΝΫλෆೳʹ • ύονΞοϓσʔτͷ࢝·Γ •

    ڧ྽ͳطࢹײ
  27. Կ͕ى͔ͬͨ͜ʁ • ӦۀʮͰɺطଘͷػೳA͸࢖͑·͔͢ʁʯ • ൚༻ੑΛҙࣝͯ͠εϦϜʹ෼ղ͍ͯͨ͠ • ૊Έ߹ΘͤΕ͹ಉ͜͡ͱ΋࣮ݱͰ͖Δ͸ͣʁ • Ӧۀʮ෼͔Βͳ͍ʯʮސ٬ʹઆ໌Ͱ͖ͳ͍ʯ •

    Ӧۀ޲͚આ໌ॻΛ࡞Δඞཁ͋Γʁ
  28. Կ͕ى͔ͬͨ͜ʁ • چόʔδϣϯ͔Βͷސ٬ͷҠߦ͸Մೳ͔ʁ • ։ൃऀʮچver.ͷσʔλߏ଄ͷ໰୊఺Λղܾ ͢Δ΋ͷͰ͋ΔͨΊҠߦ͸ۃΊͯࠔ೉ʯ • ӦۀʮεϜʔζʹҠߦͰ͖ͳ͍ͱചΕͳ͍ʯ • Ғ͍ਓʮҠߦ͸ඞਢɻͳΜͱ͔ͤΑɻʯ

  29. Ͳ͏ͯ͜͠͏ͳͬͨʁʁʁ

  30. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  31. ސ٬ͷۀ຿Ͱ࢖͏ͨΊͷπʔϧ։ൃ ͳͷʹ ސ٬ۀ຿Λ஌͍ͬͯΔϝϯόʔ͕͍ͳ͍··ઃܭ ར༻ঢ়گΛ͖ͪΜͱ೺Ѳ͠ ࣮ࡍͷސ٬ۀ຿Λ஌Δϝϯόʔͱ ϢʔεέʔεΛ࡞Δ΂͖

  32. ސ٬ۀ຿͸ଟذʹΘͨΔ੡඼ͷͨΊ ࢥ͍ͭ͘৭ʑͳύλʔϯʹରԠͰ͖ΔΑ͏ʹ ֦ுੑͱ൚༻ੑΛॏࢹͯ͠͠·ͬͨ Ϣʔεέʔεʹݟ߹͏࠷খͷߏ੒͔Β࢝ΊΔ΂͖ ͍͔ͭ͘ͷέʔεʹର͢Δ࣮૷Λ ͋ͱͰϦϑΝΫλ͢Ε͹ྑ͍

  33. ࠷খߏ੒ͷཁ͕݅Θ͔Βͳ͍ ෆཁͳ΋ͷΛ૊ΈࠐΜͰͳ͍͔൑ఆͰ͖ͳ͍ ۀ຿Λཧղ͍ͯ͠Δ εςʔΫϗϧμʔΛཱͯΔ΂͖

  34. چver.ͷػೳ໊΍ϫʔΫϑϩʔΛ ҙࣝͯ͠͠·͏͜ͱͰ ಉ͡ػೳΛম͖௚͠Ͱ࡞ͬͯ͠·͏ چver.ͷ׳शతͳࣾ಺༻ޠΛ੔ཧ ຊདྷͷۀ຿ʹඞཁͳ༻ޠΛ࢖͏

  35. ࣍ظόʔδϣϯͱฉ͍ͯಥͬ૸ΔΞϗʢࣗ෼ʣ ̍ਓͰScala, AkkaͰ෦෼తͳػೳΛ࣮૷ ؔ਺ܕ΍ActorϞσϧͷฒߦੑʹϋϚΔ ͱΓ͋͑ͣམͪண͚ ࣗ෼Ҏ֎Ͱ΋อकՄೳͳݴޠΛબͿ΂͖ ʢͱ͸͍͑ݸਓతʹ͸ྑ͍ܦݧʣ

  36. Agenda • എܠ • ͳͥ։ൃऀ͚ͩͰઃܭͨ͠ͷ͔ʁ • Կ͕ى͔ͬͨ͜ʁ • ໰୊఺͸Կ͔ʁͲ͏͢Ε͹վળͰ͖ͨͩΖ͏͔ʁ •

    υϝΠϯۦಈઃܭ΁ͷಓ
  37. ๻ͷυϝΠϯۦಈઃܭ΁ͷಓ • ʮ༻ޠ੔ཧʯΛ͍ͨ͠ɺͱ͍͏ཉٻ͔Β • ΩʔϫʔυʮϢϏΩλεݴޠʯ͔ΒDDD΁ • ۀ຿ʹԊͬͯιϑτ΢ΣΞΛ։ൃ͢Δ֓೦ʹ ಉҙ • ݱࡏͷ։ൃͷ໰୊఺͕ஈʑݟ͑ͯ͘Δ

  38. υϝΠϯۦಈઃܭ΁ͷಓ • ސ٬ͷۀ຿Λ஌ΔਓΛҾ͖ࠐΉ
 ʢυϝΠϯΤΩεύʔτʣ • ۀ຿ͷ֓೦Λద੾ʹදݱ͢Δݴ༿Λߏங͢Δ
 ʢϢϏΩλεݴޠʣ • ϓϩμΫτͷଟ༷ԽͱίϯςΩετ΁ͷ෼ղ

  39. ํ๏࿦Ͱͳ͍υϝΠϯۦಈઃܭ • ։ൃͰؕΓ͕ͪͳ໰୊఺Λ໌֬ʹ͢ΔͨΊͷ ࢥߟํ๏ͷҰͭ • ໨ͷલͷ࣮૷΍ࣗ෼ͷ୲౰ྖҬ͚ͩʹಛԽ͠ ͨ࠷খྖҬͰकΓʹೖͬͯ͸͍͚ͳ͍ • ۀ຿ʹଈͨ͠ʮՁ஋ͷ͋ΔϓϩμΫτʯΛಧ ͚ΔͨΊͷ࠷దͳߏ੒Λߟ͑Δ΂͖

  40. ·ͱΊ

  41. ๻Β͸ ୭ͷՁ஋ͷͨΊʹ ιϑτ΢ΣΞΛઃܭ͠ ։ൃ͢Δͷ͔

  42. ࠓҰ౓ ໰͍௚ͦ͏

  43. None