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

もし文系卒の女子エンジニアが 5年もののiOSアプリにユニットテストを導入しようとしたら / moshitest

59fb47c608f04df701644a0cbdf3f340?s=47 Matsui Mai
September 06, 2019

もし文系卒の女子エンジニアが 5年もののiOSアプリにユニットテストを導入しようとしたら / moshitest

登場人物
文系卒の女子エンジニア
・エンジニア歴=社会人歴のiOSエンジニア
・一部機能追加くらいはSwiftで開発できるようになった
・テストは業務で全く書いたこと無し

5年もののiOSアプリ
・2013年リリースで、リリース当時のコードも現役でバリバリ稼働中
・リリース当時はフルObjective-C、現在は一部Swift化
・テストコードは1行も無し

テストを書いたことないエンジニアが、年季の入ったアプリにユニットテストを導入するまでの格闘をテスト初心者視点から語ります

59fb47c608f04df701644a0cbdf3f340?s=128

Matsui Mai

September 06, 2019
Tweet

Transcript

  1. ΋͠จܥଔͷঁࢠΤϯδχΞ͕ 5೥΋ͷͷiOSΞϓϦʹ ϢχοτςετΛಋೖ͠Α͏ͱͨ͠Β χϑςΟϥΠϑελΠϧגࣜձࣾ দډ ຑҥ ུͯ͠ ʮ΋͠ςεʯ

  2. !2 ొ৔ਓ෺

  3. !3 ࢲ • দډ ຑҥ @Ni5_21maimai • χϑςΟϥΠϑελΠϧגࣜձࣾ • ։ൃྺʹࣾձਓྺ

    • ςετ͸ۀ຿Ͱ1ճ΋ॻ͍ͨ͜ͱͳ͠ ʢ1೥લ·Ͱʣ ొ৔ਓ෺ - จܥଔͷঁࢠΤϯδχΞ
  4. !4 ΞϓϦ • χϑςΟෆಈ࢈ • 2013೥ϦϦʔεͷෆಈ࢈ԣஅݕࡧΞϓϦ • γϦʔζྦྷܭ500ສDLୡ੒ʂʢؔ࿈ΞϓϦؚΉʣ • ςετίʔυ͸0ߦ

    ʢ1೥લ·Ͱʣ ొ৔ਓ෺ - 5೥΋ͷͷiOSΞϓϦ
  5. !5 2018೥9݄

  6. !6 ॳΊͯࢀՃ͠·ͨ͠ʂ ษڧʹͳͬͨʂ
 ͔͠͠ɾɾɾ ॳiOSDCʂ

  7. !7 iOSDCͰΑ͘ฉ͍ͨݴ༿ • ແବͳ࡞ۀͷࣗಈԽ • ςετͷॻ͖΍͍͢ઃܭɺίʔυ • CI ֎ʹग़ͯॳΊͯΘ͔ͬͨ Ϣχοτςετ͕͋Δ͜ͱ͕લఏʂ

  8. !8 ͜Ε͸·͍ͣ ͏ͪͷΞϓϦʹ΋ςετॻ͔ͳ͖Όʂ Ͱ΋ɾɾɾɾɾ ଞͷձࣾͱશવҧ͏͡ΌΜ

  9. !9 ͏ͪͷΞϓϦʹ ςετɺॻ͚Δͷ͔ʁ

  10. !10 χϑςΟෆಈ࢈ͷ͓͞Β͍

  11. !11 • ςετํ๏ΛExcelͰ1͔Βશͯจষʹ͢Δ • ߲໨௨ΓʹεϚϗΛϙνϙνɾɾɾ • मਖ਼͕͋ΔͱσάϨ͕͋Δ͔΋͠Εͳ͍ͷͰ ɹ·ͨ1͔ΒςετΛ΍Γ௚͢ɾɾɾɾɾɾ ࢲ͕ػೳ։ൃͨ͠ͱ͖

  12. !12 ਏ͗͢ʂ ΍ͬͯΒΜͳ͍Αʂ

  13. !13 ͦ΋ͦ΋ ςετಋೖ͢ΔΑΓ΋ ΍ͬͨํ͕ྑ͍͜ͱ͋ΔͷͰ͸ʁ ϦϑΝΫλϦϯάͱ͔ɾɾɾ ·ͩObjective-C΋ଟ͍ͷͰ Objective-C→SwiftҠߦͱ͔ɾɾɾ ʢେମ͜͏͍͏ͷ͸ยखؒͰ͸Ͱ͖ͳ͍ɺ΍Βͳ͍ʣ

  14. !14 ग़యɿ ϒϥοΫϘοΫεͳίʔυʹରͯ͠ গͣͭ͠ςετΛॻ͍͍ͯͨ͘ΊͷςΫχοΫ iOSDCޙͷʮԶίϯʯͰɾɾɾ

  15. !15 ·ͣɺ୭͔͕ॻ͔ͳ͍ͱ Կ΋࢝·Βͳ͍ʂ ςετɺॻ͍ͯΈΑ͏ʂ

  16. !16 ςετΛಋೖ͢Δʹ͋ͨͬͯ ܾΊͨ͜ͱ

  17. !17 طଘͷػೳʹ͸ςετΛॻ͔ͳ͍ ࠓ·ͰͷίʔυʹςετΛॻ͘ͷ͸ ͔ͳΓͷ࿑ྗͱ޻਺͕͔͔Δ͜ͱ͸໌Β͔ ͦͷ୅ΘΓɺ৽ͨʹ࣮૷͢Δػೳʹ͸ ςετΛॻ͘͜ͱΛపఈ͢Δ͜ͱʹͨ͠ ܾΊͨ͜ͱᶃ

  18. !18 ઃܭࢥ૝ͱͯ͠VIPERΛಋೖ ಉ͡ฐࣾͷΞϓϦͰಋೖ͍ͯͨ͠ ςετΛॻ͖΍͍͢ VIPERΞʔΩςΫνϟΛऔΓೖΕΔ ʢͦ΋ͦ΋ܾ·ͬͨઃܭͰॻ͔Ε͍ͯͳ͔ͬͨʣ ܾΊͨ͜ͱᶄ νʔϜͷઌഐ @hicka04ʹ ͨ͘͞ΜڭΘΓ·ͨ͠ʂ

  19. !19 ͱʹ͔͘ઈରʹςετΛ1ͭͰ΋ॻ͘ ·ͣ͸1ͭͰ΋ςετΛॻ͍ͨͱ͍͏࣮੷ ୭͔1ਓ͕ॻ͖࢝ΊͨΒ ςετΛॻ͜͏ͱ͍͏श׳͕਎ʹ෇͘ ܾΊͨ͜ͱᶅ

  20. !20 ॻ͍ͯΈΑ͏ʂ

  21. !21 ͦ΋ͦ΋ ͳΜͷςετͨ͠Β͍͍ͷʁ ॳ৺ऀ͋Δ͋Δ

  22. !22 खಈͰςετ͢Δ࣌ʹ ೦ೖΓʹ΍Γͦ͏ͳͱ͜Ζ͔Β ॻ͍ͯΈͨ ॳ৺ऀ͋Δ͋Δ

  23. !23 ͜ͷը໘ͷςετΛॻ͍ͯΈͨ ͜ΜͳςετΛॻ͖·ͨ͠

  24. !24 ͜ͷը໘ͷςετΛॻ͍ͯΈͨ ͜ΜͳςετΛॻ͖·ͨ͠ • ॅΈ͍ͨ৔ॴΛ୳͢ը໘ • બΜͩ౎ಓ෎ݝʹΑͬͯ ɹ୳͠ํͷબ୒ࢶ͕ҟͳΔ ʢྫʣ ؔ౦Ͱ͸࿏ઢਤ΍ࠞࡶ౓͔Β

    ୳ͤΔΑ͏ʹͳ͍ͬͯΔ
  25. !25 • ΦϨϯδϘλϯ͸σϑΥϧτͰग़͢ Ϙλϯग़͠෼͚ͷ৚݅ ৭Ͱදݱ͠·͢

  26. !26 • ΦϨϯδϘλϯ͸σϑΥϧτͰग़͢ • ৚݅1Λຬͨ͢ͱਫ৭ͷϘλϯ Ϙλϯग़͠෼͚ͷ৚݅ ৭Ͱදݱ͠·͢

  27. !27 • ΦϨϯδϘλϯ͸σϑΥϧτͰग़͢ • ৚݅1Λຬͨ͢ͱਫ৭ͷϘλϯ • ৚݅2Λຬͨ͢ͱϐϯΫͷϘλϯΛ ɹ௥ՃͰग़͢ Ϙλϯग़͠෼͚ͷ৚݅ ৭Ͱදݱ͠·͢

  28. !28 ͜ΜͳίʔυΛॻ͍ͨ ͜ΜͳςετΛॻ͖·ͨ͠

  29. !29 ͜ΜͳίʔυΛॻ͍ͨ ͜ΜͳςετΛॻ͖·ͨ͠ खಈςετͳΒɺ ͜͜Λॏ఺తʹ΍Γͦ͏ʂ

  30. !30 ςετίʔυ ͜ΜͳςετΛॻ͖·ͨ͠

  31. !31 ςετίʔυ ͜ΜͳςετΛॻ͖·ͨ͠ ϩδοΫ෦෼ͷ ςετ͕ॻ͚ͨʂ

  32. !32 ·ͱΊ

  33. !33 • ٕज़ྗ͕ͳͯ͘΋ɺΞϓϦ͕ෳࡶͰ΋ ɹϢχοτςετΛ࢝ΊΔ͜ͱ͸Ͱ͖Δʂ • ͙͢ʹ͸ཧ૝ͷ؀ڥʹ͸ͳΕͳ͍ͷͰ ɹࣗ෼Ͱ΋Ͱ͖Δͱ͜Ζ͔Βগͣͭ͠վળʂ • ϢχοτςετΛಋೖ͠Α͏ͱࢥ͑ͨiOSDC ͱνʔϜͷօ͞Μʹѹ౗తײँ

    ͜ͷLTͰ఻͔͑ͨͬͨ͜ͱ
  34. !34 ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

  35. !35 • iOSΞϓϦ։ൃࣗಈςετͷڭՊॻ
 ʙXCTestʹΑΔ୯ମςετɾUIςετ͔ΒɺCI/CDɺσόοάٕज़·Ͱ • iOSΞϓϦઃܭύλʔϯೖ໳ • VIPERΞʔΩςΫνϟ ·ͱΊ ɹhttps://qiita.com/hicka04/items/09534b5daffec33b2bec

    • iOS ΞϓϦͷ։ൃ଎౓Λ170%ߴ଎Խͨ͠ ɹσόοάϊ΢ϋ΢ ɹhttps://speakerdeck.com/orgachem/debugging-knowhow-that- improved-our-development-velocity-to-170-percent ςετॳ৺ऀʹͱͬͯษڧʹͳͬͨࢿྉɾॻ੶
  36. ʘ ΞϓϦΤϯδχΞืूத ʗ