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

テスト駆動開発 輪読会 Vol.4

K
August 05, 2020

テスト駆動開発 輪読会 Vol.4

This is a deck for Test-Driven Development reading session

K

August 05, 2020
Tweet

More Decks by K

Other Decks in Programming

Transcript

  1. ςετۦಈ։ൃྠಡձ7PM ষʙষ ೥݄೔#Zೆ݈ଠ࿠

  2. લճ·Ͱͷ͓͞Β͍ɻ

  3. લճ·Ͱͷ͓͞Β͍ɻ ɾઃܭ্ෳ਺ͷ௨՟Λѻ͍ͬͯΔͱ͍͏͜ͱΛ ҙࣝ͠ͳ͍ͰࡁΉΑ͏ʹ͍ͨ͠ɻ ɾ࣮૷ʹۙͮͨ͘Ίʹɺ࣌ʹ͸௕͘࢖͏͔Θ͔Βͳ͍ςετΛ ॻ͘͜ͱ΋ඞཁɻ ɾςετͷதʹ͸ɺ૝ఆ͍ͯ͠Δಈ͖Λͯ͘͠ΕΔ͔Λ֬ೝ͢Δςετ ֶश༻ςετ ΍࣮૷ͷࡍʹߟྀ͞Ε͍ͯͳ͔ͬͨςετʢճؼςετʣ ͳͲ͕͋Δɻ

  4. લճ·Ͱͷ͓͞Β͍ɻ ɾςετΛॻ͍͍ͯΔͱςετͷந৅౓Λམͱͯ͠ɺ۩ମతͳςετΛॻ͖ ண࣮ʹਐΉ࣌ͱɺίϯύΠϧΤϥʔΛ50%0Ϧετ୅ΘΓʹ࣮૷͢Δ͕࣌͋ Δɻ ɾςετΛॻ࣌͘͸ɺςετΛಡΉଆʹςετΛॻ͍ͨਓͷҙਤ͕఻ΘΔΑ ͏ʹ͢Δ޻෉͕ඞཁɻ ɾ5%%͸ʮύϑΥʔϚϯεςετʯɺʮෛՙςετʯɺʮϢʔβϏϦςΟς ετʯͷ୅ସʹ͸ͳΒͳ͍ɻ

  5. ୈষ Y6OJU΁޲͔͏খ͞ͳҰา

  6. ୈষͷओͳ಺༰ ςετέʔεΛॻͨ͘Ίʹ࢖͏ϑϨʔϜϫʔΫΛ࡞Γɻ ࡞ͬͨϑϨʔϜϫʔΫͷςετέʔεΛ࡞Δɻ ୈ̍̔ষͰ͸ɺςετ͕࣮ߦ͞Ε͔ͨͲ͏͔ͷϝιουΛ࡞Γɺ ࡞ͬͨϝιουͷςετέʔεΛॻ͘ͱ͍͏΋ͷɻ

  7. ୈষͰग़͖ͯͨ༻ޠ ɾY6OJU ɾࣗݾݴٴϓϩάϥϛϯά ɾςετϝιου ɾϝιουͷநग़ ɾ1MVHHBCMF4FMFDUPSύλʔϯ

  8. Y6OJUʹ͍ͭͯ ίϯϐϡʔλʔϓϩάϥϜͷ୯ମςετ Λߦ͏ͨΊͷςεςΟϯάϑϨʔϜϫʔΫͷ૯শɻ

  9. ࣗݾݴٴϓϩάϥϛϯάʹ͍ͭͯ ࣗݾݴٴ͸ࣗવݴޠ΍ܗࣜݴޠͰจ΍͕ࣜ ͦΕࣗ਎ʹݴٴ͢Δ͜ͱ

  10. ςετϝιουʹ͍ͭͯ ςετέʔε͕ఆٛ͞Εͨɺ UFTU͔Β࢝·Δϝιουͷ͜ͱɻ

  11. ϝιουͷநग़ʹ͍ͭͯ ௕͍ϝιουͷҰ෦෼Λผͷϝιουʹ෼཭ͯ͠ɺ ͦͷϝιουΛݺͼग़͢Α͏ʹ͢Δํ๏ɻ

  12. 1MVHHBCMF4FMFDUPSύλʔϯ Πϯελϯε͝ͱʹҟͳΔৼΔ෣͍Λͤ͞ΔͨΊʹɺ ϝιου໊Λ֨ೲ͠ɺͦͷϝιουΛಈతʹىಈ͢Δ σβΠϯύλʔϯɻ

  13. ୈষ લ४උ

  14. ୈষͷओͳ಺༰ ςετΛॻ࣌͘͸ɺ"ͱݺ͹ΕΔجຊύλʔϯ͕͋Δɻ ςετΛ࡞੒͍ͯ͠Δ࣌͸ʮύϑΥʔϚϯεʯͱʮಠཱੑʯͷ ͭͷ੍໿͕ݱΕΔɻ

  15. ୈষͰग़͖ͯͨ༻ޠ ɾ" ɾύϑΥʔϚϯεͱಠཱੑ ɾϑΟΫενϟʔ

  16. "ʹ͍ͭͯ ४උ "SSBOHF ΦϒδΣΫτΛ࡞Δɻ ࣮ߦ "DU ͦͷΦϒδΣΫτʹରͯ͠ૢ࡞Λߦ͏ɻ Ξαʔτ "TTFSU ݁ՌͷݕূΛߦ͏ɻ

  17. ύϑΥʔϚϯεͱಠཱੑʹ͍ͭͯ ύϑΥʔϚϯεςετ͸ՄೳͳݶΓૣ͘ಈ࡞ͯ͠΄͍͠ɻ ྫੜ੒ͨ͠ΦϒδΣΫτΛ࢖͍·Θ͍ͨ͠ɻ ಠཱੑςετͷ੒ޭࣦഊ͸ ଞͷςετͷ݁ՌʹӨڹͨ͠Γ͞ΕͨΓͯ͠΄͘͠ͳ͍ɻ ྫ࢖͍·Θͨ͠ΦϒδΣΫτ͕มߋ͞ΕͨΒɺ ςετ݁Ռʹҧ͍͕ͰΔͳͲɻ

  18. ςετ͸ઈରʹґଘؔ܎Λ࡞ͬͯ͸ͳΒͳ͍ɻ ςετ͕ࣦͭഊͨ࣌͠ʹ໰୊͕ͭͭ΋͋Δͱɺ मਖ਼͕ࠔ೉ʹͳΔͨΊɻ

  19. ϑΟΫενϟʔ ςετΛߦ͏࣌ʹ࢖༻͢ΔΦϒδΣΫτͷݕূΛߦ͏ࡍʹɺ ΦϒδΣΫτͷݕূίʔυΑΓ΋ɺςετΛߦ͏ͨΊͷࣄલ ४උͷίʔυͷํ͕௕͘ͳΓɺॏෳͯ͠͠·͏͜ͱɻ

  20. ϑΟΫενϟʔͷϝϦοτɾσϝϦοτ ϝϦοτɿ͢΂ͯͷςετ४උίʔυ͕ॻ͔Ε͍ͯΔ৔߹ɺ ςετΛ্͔ΒಡΊ͹ྑ͍ঢ়ଶʹͳΔɻ σϝϦοτɿॻ͘ͷʹ͕͔͔࣌ؒΓɺมߋ͕͋ͬͨ৔߹ෳ਺ ͷՕॴΛมߋ͢Δඞཁ͕͋Δɻ

  21. ϑΟΫενϟʔΛղܾ͢ΔͨΊʹɺڞ௨Խ͗͢͠Δͱɺ ςετΛߦ͍ͬͯΔ࣌ʹଞʹͲΜͳॲཧ͕ಈ͍͍ͯΔ͔ ೺Ѳ͢Δඞཁ͕͋ΔͨΊɺྑ͍ԘകΛݟ͚ͭΔඞཁ͕͋Δɻ

  22. ୈষ ޙย෇͚

  23. ୈষͷओͳ಺༰ ςετϝιουͰ͸ɺUFBS%PXOϝιουͱݺ͹ΕΔ΋ͷ͕͋Δɻ TFU6QͰςετʹඞཁͳ֎෦ϦιʔεΛ४උ͠ɺUFBS%PXOͰ༻ҙ͠ ͨ֎෦ιʔεΛ։์͢Δɻ

  24. ୈষͰग़͖ͯͨ༻ޠ ɾUFBS%PXOϝιου ɾ-PH4USJOHύλʔϯ ɾ໌നͳ࣮૷

  25. UFBS%PXOϝιουʹ͍ͭͯ TFU6QϝιουͰׂΓ౰ͯΒΕͨ֎෦Ϧιʔε ϑΝΠϧ΍ ιέοτͳͲ ৔߹ͷΈɺͦΕΒΛ։์͢Δ໾໨Λ΋ͭϝ ιουɻ

  26. -PH4USJOHύλʔϯʹ͍ͭͯ ਖ਼͍͠ॱ൪Ͱϝιου͕ݺ͹Ε͍ͯΔ͜ͱΛ ςετ͍ͨ͠৔߹ʹ࢖༻͢Δɻ

  27. ໌നͳ࣮૷ʹ͍ͭͯ ͲΜͳ࣮૷Λ͢Δ΂͖͔طʹ೺Ѳ͍ͯͯ͠ɺࡉ͔͍εςοϓ Ծ࣮૷ͳͲ Λ౿·ͣʹ࣮૷͢Δ͜ͱɻ

  28. ୈষ ਺্͑͛ɻ

  29. ୈষͷओͳ಺༰ ςετΛಈ͔ͨ࣌͠ʹɺʮSVO GBJMFEΤϥʔ಺༰dʯͱ͍͏Α͏ ʹදࣔ͞ΕΔͨΊʹɺ·ͣ͸͍ͭ͘ςετ͕૸͔ͬͨΛࣔ͢ϩάΛग़ ྗ͢ΔॲཧΛ࡞੒ɻ

  30. ୈষ ࣦഊͷѻ͍ɻ

  31. ୈষͷओͳ಺༰ ୈষͰߦͬͨॲཧͷଓ͖ɻ ষͰ͸Τϥʔͷྫ֎ΛΩϟον͢Δ࢓૊Έ͸ͳ͔͕ͬͨɺςετͷ தͰࣦഊϝιουͷݺͼग़͠ɺྫ֎ͷॱʹςετΛࡉ͔͘ߦ͍ςετ ʹࣦഊͨ͠৔߹͸ʮSVO GBJMFEʯͱ͍ͬͨܗͰදࣔ͞ΕΔΑ͏ʹ ࣮૷ɻ

  32. ୈষ εΠʔτʹ·ͱΊΔɻ

  33. ୈষͷओͳ಺༰ ࠓ·Ͱߦ͖ͬͯͨςετΛ૸ΒͤΔͨΊʹॻ͍ͨॲཧΛ 5FTU4VJUFʹ·ͱΊΔͱ͍͏΋ͷɻ

  34. #FGPSF ষऴྃ࣌఺ͷίʔυɻ

  35. "GUFS ষऴྃ࣌఺ͷίʔυɻ

  36. ୈষͰग़͖ͯͨ༻ޠ ɾ5FTU4VJUF ɾ$PNQPTJUFύλʔϯ ɾ$PMMFDUJOH1BSBNFUFSύλʔϯ

  37. 5FTU4VJUFʹ͍ͭͯ ͋ΔϓϩάϥϜ͕΋ͭɺಛఆͷৼΔ෣͍Λ·ͱΊͨ ςετέʔεͷմͷ͜ͱɻ

  38. $PNQPTJUFύλʔϯʹ͍ͭͯ ೖΕ෺ͱத਎ͷ΋ͷΛಉҰͷ΋ͷͱଊ͑ͯɺ࠶ؼతͳߏ ଄ͰॲཧΛ؆୯ʹ͢Δ͜ͱ͕Ͱ͖ΔσβΠϯύλʔϯɻ

  39. ࣮ࡍͷྫͱͯ͠ࢀߟʹͳΓͦ͏ͳ΋ͷɻ IUUQTXXXSJUPMBCDPNFOUSZ

  40. ֓ཁ $PNQPTJUFύλʔϯΛ༻͍ͯɺσΟϨΫτϦͷ৔߹͸ σΟϨΫτϦͱͦΕʹ࿈ͳΔϑΝΠϧ΋දࣔɻ ϑΝΠϧͷΈͷ৔߹͸ɺϑΝΠϧͷΈͷදࣔΛग़͠෼͚ ͍ͯΔॲཧ͕ྫͱͯ͠ॻ͍ͯ͋Δɻ

  41. $PMMFDUJOH1BSBNFUFSύλʔϯʹ͍ͭͯ ϝιουͷ໭Γ஋ΛϕʔεʹσʔλΛ࡞੒͢ΔͷͰ͸ͳ ͘ɺҾ਺ʹ౉ͨ͠ΦϒδΣΫτʹσʔλΛ஝ੵ͍ͯ͘͠ σβΠϯύλʔϯɻ

  42. #FGPSF $PMMFDUJOH1BSBNFUFSύλʔϯલͷίʔυɻ

  43. "GUFS $PMMFDUJOH1BSBNFUFSύλʔϯޙͷίʔυɻ

  44. ୈষ Y6OJUͷશମ;Γ͔͑Γ

  45. ୈষͷओͳ಺༰ Y6OJUΛ࣮૷͢Δͭͷҙ͕ٛ͋Δɻ ̍ͭ͸ɺࣗ෼ࣗ਎Ͱ࣮૷͢Δ͜ͱʹΑͬͯɺࣗ෼͕Ұ൪Α͍ͬͯ͘͠ Δಓ۩͕खʹೖΔͱ͍͏͜ͱɻ ख़ୡ  ΋͏̍ͭ͸ɺY6OJUͷ࣮૷Λ௨ͯ͡৽͍͠ϓϩάϥϛϯάݴޠͰඞཁ ͳػೳΛ໢ཏ͢Δ͜ͱ͕Ͱ͖Δɻ

  46. ·ͱΊٴͼײ૝ Y6OJUͬͯཪͰ͸͜͏͍͏෩ʹͳ͍ͬͯΔͷ͔ͱ͍ͬͨยྡྷΛ஌Δ͜ͱ ͕Ͱ͖ͨɻ ·ͨɺ్தͷνϟϓλʔͰ΋͕͋ͬͨɺΑΓྑ͍ςετΛॻͨ͘Ίʹ ͸ɺͱʹ͔͘ςετΛॻ͍ͯܦݧ஋Λ஝ੵ͍ͯ͘͠ඞཁ͕͋Δͱ͍͏ ͜ͱΛ࣮ײͨ͠ɻ