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

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

mather
October 11, 2016

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

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

mather

October 11, 2016
Tweet

More Decks by mather

Other Decks in Technology

Transcript

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

    View Slide

  2. ࣗݾ঺հ
    • גࣜձࣾΞϥλφ
    • 2೥લ·Ͱ౦ژͷձࣾͰۈ຿
    • ݩ਺ֶઐ߈ʢ੔਺࿦ʣ
    • ޷͖ͳݴޠɿHaskellͱ͔Scalaͱ͔
    • झຯɿεΩϡʔόμΠϏϯάɺΧϝϥ

    View Slide

  3. μΠόʔ஥ؒɹืूதʂ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  7. എܠ
    ͱ͋Δձࣾ
    ϚʔέςΟϯάπʔϧ
    (ASP)

    View Slide

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

    View Slide

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

    View Slide

  10. എܠ
    2ձࣾ͸΋ͬͱ੒௕͍ͨ͠ɻ

    ɹιϑτ΢ΣΞ։ൃ͸ࠓޙͲ͏͢Ε͹Α͍͔ʁ
    ᶃগͣͭ͠ϦϑΝΫλϦϯά͢Δɻ
    ᶄ࣍ظόʔδϣϯͷ։ൃɾҠߦΛݕ౼͢Δɻ
    ᶅͲ͏ʹ΋ͳΒͳ͍ɻݱ࣮͸ඇ৘Ͱ͋Δɻ

    View Slide

  11. എܠ
    ᶃճؼςετ͕ͳ͘ɺ࢓༷ʹ͍ͭͯ೺ѲͰ͖ͯ
    ͍Δਓ͕͍ͳ͍ͨΊɺϦϑΝΫλϦϯάͷਖ਼͠
    ͞Λ୲อͰ͖ͳ͍ɻ
    ᶄಉ͘͡ϝϯόʔ͕࢓༷ʹ͍ͭͯ໌Δ͘ͳ͍ɻ

    ߋʹɺઐ༻γεςϜ΍ΧελϚΠζΛՃ͍͑ͯ
    Δސ٬΋ଘࡏ͢ΔͨΊɺҠߦ͕Ͱ͖ͳ͍Մೳੑ
    ͕ߴ͍ɻ

    View Slide

  12. ౴͑ᶅ
    ౴͑ᶅ
    ౴͑ᶅ

    View Slide

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

    View Slide

  14. ͜͜Ͱ੨ఱͷᯡᯧ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  21. ཁ͢Δʹ

    View Slide

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

    View Slide

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

    View Slide

  24. Կ͕ى͔ͬͨ͜ʁ
    • ΩοΫΦϑ&։ൃ߹॓
    • ཁ݅Λूதతʹٞ࿦ʢͨͭ͠΋Γʣ
    • ཉ͍͠ػೳɾ࢒͢ػೳɾফ͢΂͖ػೳΛ

    ։ൃऀࢹ఺Ͱग़͚ͨͩͩͬͨ͠
    • େ෩࿊ෑΛ޿͕͛ͨ̎ϲ݄ޙʹ͸ফ͑ͨ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  38. υϝΠϯۦಈઃܭ΁ͷಓ
    • ސ٬ͷۀ຿Λ஌ΔਓΛҾ͖ࠐΉ

    ʢυϝΠϯΤΩεύʔτʣ
    • ۀ຿ͷ֓೦Λద੾ʹදݱ͢Δݴ༿Λߏங͢Δ

    ʢϢϏΩλεݴޠʣ
    • ϓϩμΫτͷଟ༷ԽͱίϯςΩετ΁ͷ෼ղ

    View Slide

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

    View Slide

  40. ·ͱΊ

    View Slide

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

    View Slide

  42. ࠓҰ౓
    ໰͍௚ͦ͏

    View Slide

  43. View Slide