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

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

Matsui Mai
September 06, 2019

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

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

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

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

Matsui Mai

September 06, 2019
Tweet

Other Decks in Technology

Transcript

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

    View Slide

  2. !2
    ొ৔ਓ෺

    View Slide

  3. !3

    • দډ ຑҥ @Ni5_21maimai
    • χϑςΟϥΠϑελΠϧגࣜձࣾ
    • ։ൃྺʹࣾձਓྺ
    • ςετ͸ۀ຿Ͱ1ճ΋ॻ͍ͨ͜ͱͳ͠
    ʢ1೥લ·Ͱʣ
    ొ৔ਓ෺ - จܥଔͷঁࢠΤϯδχΞ

    View Slide

  4. !4
    ΞϓϦ
    • χϑςΟෆಈ࢈
    • 2013೥ϦϦʔεͷෆಈ࢈ԣஅݕࡧΞϓϦ
    • γϦʔζྦྷܭ500ສDLୡ੒ʂʢؔ࿈ΞϓϦؚΉʣ
    • ςετίʔυ͸0ߦ
    ʢ1೥લ·Ͱʣ
    ొ৔ਓ෺ - 5೥΋ͷͷiOSΞϓϦ

    View Slide

  5. !5
    2018೥9݄

    View Slide

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

    ͔͠͠ɾɾɾ
    ॳiOSDCʂ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  20. !20
    ॻ͍ͯΈΑ͏ʂ

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  25. !25
    • ΦϨϯδϘλϯ͸σϑΥϧτͰग़͢
    Ϙλϯग़͠෼͚ͷ৚݅
    ৭Ͱදݱ͠·͢

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

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

    View Slide

  32. !32
    ·ͱΊ

    View Slide

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

    View Slide

  34. !34
    ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ

    View Slide

  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
    ςετॳ৺ऀʹͱͬͯษڧʹͳͬͨࢿྉɾॻ੶

    View Slide

  36. ʘ ΞϓϦΤϯδχΞืूத ʗ

    View Slide