サーバーレス時代にこそ
身につけたいTDD入門

 サーバーレス時代にこそ
身につけたいTDD入門

.NET Conf 2018 Kansai での発表資料です。

Transcript

  1. αʔόʔϨε࣌୅ʹͦ͜
 ਎ʹ͚͍ͭͨTDDೖ໳ ΪϧυϫʔΫεגࣜձࣾ લ઒ തࢤ

  2. ͸͡Ίʹ

  3. ΪϧυϫʔΫεʹ͍ͭͯ

  4. None
  5. None
  6. None
  7. None
  8. None
  9. None
  10. None
  11. αʔόʔϨε࣌୅ʹͦ͜
 ਎ʹ͚͍ͭͨTDDೖ໳ ΪϧυϫʔΫεגࣜձࣾ લ઒ തࢤ

  12. ࣗݾ঺հ • ΪϧυϫʔΫεגࣜձࣾ ALMΤϯδχΞ • Application Lifecycle Management • ಘҙٕ

    • ։ൃ • αʔόʔαΠυɿ Java • "OESPJE+BWB→,PUPMJO • iOS: Swift • Webϑϩϯτɿ Vuejs, Angular/Ionic • ͦͷଞɿ C# ͕Ұ൪޷͖͚ͩͲ࠷ۙॻ͍͍ͯͳ͍… • CI / CDͷ੔උ • ࠷ۙ͸΋ͬͺΒCircleCI
  13. ͯ͞ɺຊ୊ɻ

  14. None
  15. ͦ͏Ͱ΋ͳ͍ ʢͱࢥͬͯ·͢ʣ

  16. ͦ΋ͦ΋αʔόʔϨεͬͯʁ • ໌ࣔతͳʮϚγϯʯΛҙࣝͤͣɺSaaSαʔϏεͷ ૊Έ߹ΘͤʹΑͬͯػೳΛ࣮ݱ͢Δ • Πϯϑϥͷίετ͕ܶతʹԼ͕Δࣄ͕ଟ͍ • ·ͨɺSLA΋جຊ͸Ϋϥ΢υϕϯμʔ೚ͤʹͰ ͖ɺগͳ͘ͳΔʢNoOps ͱ΋͍ΘΕΔʣ

    • …ྫ͑͹ɺ͜Μͳߏ੒ɻ
  17. AWS ʹΑΔ αʔόʔϨεߏ੒ CloudFront Cognito ϓϨθϯςʔγϣϯ ΞϓϦέʔγϣϯ σʔλετΞ ઀ଓ ೝূαʔϏε

    ήʔτ΢ΣΠ
  18. ̩ ̥ ̤ ʂ

  19. Azure ʹΑΔαʔόʔϨεߏ੒ ϓϨθϯςʔγϣϯ ΞϓϦέʔγϣϯ σʔλετΞ ઀ଓ "[VSF"DUJWF%JSFDUPSZ "1*.BOBHFNFOU "[VSF4UPSBHF "[VSF$%/

    "[VSF'VODUJPOT "[VSF$PTNPT%#
  20. αʔόʔϨεͰࠔΔͱ͜Ζ • ։ൃ؀ڥͲ͏͢Δ͔໰୊ • ͦ΋ͦ΋Ϋϥ΢υαʔϏεʹϕολϦͳͷͰɺ
 ʮϩʔΧϧ؀ڥʯͱ͍͏֓೦͕ଘࡏ͠ͳ͍ • ٖࣅతʹϩʔΧϧʹ؀ڥΛ੔͑Δ࢓૊Έ͸ଘࡏ͢Δ͕… • ಈ࡞֬ೝΛ͢ΔͨΊʹɺαʔόʔʹΞοϓϩʔυ

    ͢Δɺͱ͍͏࢒೦ͳ݁Ռʹ…
  21. Function as a Service ʹର͢Δςετ ΞϓϦέʔγϣϯ σʔλετΞ ઀ଓ "[VSF"DUJWF%JSFDUPSZ "1*.BOBHFNFOU

    "[VSF'VODUJPOT "[VSF$PTNPT%# Ҿ਺͑͞ἧ͑ΒΕΕ͹γϛϡϨʔτՄೳ .PDLͰஔ͖׵͑Λߦ͏ ΠϯϓοτΞ΢τϓοτΛఆٛͯ͠ ։ൃ͢Δ㱺5%%
  22. TDD:ςετۦಈ։ൃ ͱ͸

  23. ςετۦಈ։ൃ • ᶃ ࠷ॳʹςετΛॻ͘ • ᶄ ςετΛ࣮ߦ͠ɺࣦഊͤ͞Δ • ᶅ ςετ͕੒ޭ͢ΔΑ͏ʹίʔυΛमਖ਼͢Δ

    • ᶆ ςετ͕௨ͬͨঢ়ଶΛอͪͳ͕ΒɺίʔυΛΑ Γݟ΍͘͢ɺϝϯςφϯε͠΍͘͢࡞Γม͑Δ • ᶃ ʙ ᶆΛ܁Γฦ͠ɺখ͞ͳεςοϓͰ
 ιϑτ΢ΣΞΛ࡞Γ্͍͛ͯ͘
  24. TDDͷԫۚࡾ֯ܗ https://www.slideshare.net/t_wada/the-spirit-of-tdd

  25. TDDʹ͋Γ͕ͪͳޡղ • TDDͬͯɺΊͬͪΌͰ͖ΔϓϩάϥϚʔ͕΍Δ
 ಛघٕೳͰ͠ΐʁ • ҧ͍·͢ɻΊͬͪΌͰ͖ΔϓϩάϥϚʔ͸
 TDD͠·ͤΜɻͰ͖ͳ͍ϓϩάϥϚʔͷͨΊͷ
 ϝιουͳͷͰ͢ɻ

  26. TDDʹ͋Γ͕ͪͳޡղ • ͳΜͰΘ͟Θ͟ςετίʔυͳΜͯແବͳ΋ͷ
 ॻ͘ͷʁ͔͔࣌ؒΔ͚ͩ͡Όͳ͍ʁ • ͋ͳ͕ͨಈ࡞֬ೝͳ͠ͰɺҰൃͰਖ਼͍͠ίʔυ͕ ॻ͚ΔਓͳΒෆཁ͔΋͠Ε·ͤΜɻ
 ͦ͏Ͱͳ͍ͳΒɺςετίʔυ͸࠷খͷಈ࡞֬ೝ ؀ڥΛ࡞͍ͬͯΔΜͰ͢ɻແବ͡Όͳ͍Ͱ͢ɻ

  27. TDDʹ͋Γ͕ͪͳޡղ • TDDͰ։ൃͨ͠ΒςετཁΒͳ͍ΜͩΑͶʂʂ • ཁΓ·͢ɻ
 ʮ։ൃͷͨΊͷςετʯ͚ͩͰ͸඼࣭อূͱͯ͠ ͸ෆे෼Ͱ͢ɻಛʹɺʮਖ਼͍͠΋ͷ͔ʯͱ͍͏ Validation ؍఺͸ܾఆతʹෆ଍͠·͢ɻ

  28. TDDʹ͋Γ͕ͪͳޡղ • ܾ·ͬͨ΍Γํͱ͔ͳ͍ΜͩΑͶʁ • ʮܕʯΛ΍Γ·͠ΐ͏

  29. ܕ - Kata - ʮܕʯͱ͸ɺϓϩάϥϚʔ͕࣮ફͱ൓෮Λ௨ͯ͠
 ٕज़Λຏͨ͘Ίͷख๏Ͱ͋Δɻ

  30. Bowling Game Kata • Programming Kata ͷҰͭ • ΈΜͳେ޷͖ ɺϘϒ͓͡͞Μ͜ͱBob

    Martin͕ ࡞͍ͬͯ·͢
  31. Bowling Game Kata http://butunclebob.com/ ArticleS.UncleBob.TheBowlingGameKata

  32. ۩ମతʹ͸ͲΜͳ΋ͷʁ

  33. ࣮ࡍʹ΍ͬͯΈΔ

  34. ·ͱΊ • αʔόʔϨεͷ࣌୅͔ͩΒͦ͜ɺ࡞Δखஈͱͯ͠ TDD͸཈͓͍͑ͯͨ΄͏͕͍͍ • TDD ͷ΍Γํ͸ɺ͋Δఔ౓ମͰ֮͑Δඞཁ͕͋ ΔɻͳͷͰɺʮܕʯΛ΍Ζ͏ • Bowling

    Game Kata ͸Θ͔Γ΍͘͢Φεεϝ
  35. ͞Βʹษڧ͍ͨ͠ਓͷͨΊʹ • ͦ΋ͦ΋ͲΜͳίʔυ͕͍͍ͱ͔Α͘Θ͔Βͳ͍Μ͚ͩͲ
 㱺 Refactoring ୈೋ൛͕ग़Δ͔Β଴ͨΕΑʢӳޠ൛Ͱ΋͍͍͔Βങ͓͏ʣ • ͦ΋ͦ΋ίʔυ͕;Δͯͭ͘Β͍
 㱺 ʮϨΨγʔίʔυվળΨΠυʯಡΈ·͠ΐ͏

    • UIपΓͷςετ͸ʁ
 㱺 Selenium, Puppeteer, Katalon Studio ͋ͨΓΛνΣοΫ͢΂͠ • ଞͷܕͳ͍ͷʁ
 㱺 ϥΠϑήʔϜʢGame of Lifeʣ͸Φεεϝ