登場人物 文系卒の女子エンジニア ・エンジニア歴=社会人歴のiOSエンジニア ・一部機能追加くらいはSwiftで開発できるようになった ・テストは業務で全く書いたこと無し
5年もののiOSアプリ ・2013年リリースで、リリース当時のコードも現役でバリバリ稼働中 ・リリース当時はフルObjective-C、現在は一部Swift化 ・テストコードは1行も無し
テストを書いたことないエンジニアが、年季の入ったアプリにユニットテストを導入するまでの格闘をテスト初心者視点から語ります
͠จܥଔͷঁࢠΤϯδχΞ͕5ͷͷiOSΞϓϦʹϢχοτςετΛಋೖ͠Α͏ͱͨ͠ΒχϑςΟϥΠϑελΠϧגࣜձࣾদډ ຑҥུͯ͠ʮ͠ςεʯ
View Slide
!2ొਓ
!3ࢲ• দډ ຑҥ @Ni5_21maimai• χϑςΟϥΠϑελΠϧגࣜձࣾ• ։ൃྺʹࣾձਓྺ• ςετۀͰ1ճॻ͍ͨ͜ͱͳ͠ʢ1લ·Ͱʣొਓ - จܥଔͷঁࢠΤϯδχΞ
!4ΞϓϦ• χϑςΟෆಈ࢈• 2013ϦϦʔεͷෆಈ࢈ԣஅݕࡧΞϓϦ• γϦʔζྦྷܭ500ສDLୡʂʢؔ࿈ΞϓϦؚΉʣ• ςετίʔυ0ߦʢ1લ·Ͱʣొਓ - 5ͷͷiOSΞϓϦ
!520189݄
!6ॳΊͯࢀՃ͠·ͨ͠ʂษڧʹͳͬͨʂ ͔͠͠ɾɾɾॳiOSDCʂ
!7iOSDCͰΑ͘ฉ͍ͨݴ༿• ແବͳ࡞ۀͷࣗಈԽ• ςετͷॻ͖͍͢ઃܭɺίʔυ• CI֎ʹग़ͯॳΊͯΘ͔ͬͨϢχοτςετ͕͋Δ͜ͱ͕લఏʂ
!8͜Ε·͍ͣ͏ͪͷΞϓϦʹςετॻ͔ͳ͖ΌʂͰɾɾɾɾɾଞͷձࣾͱશવҧ͏͡ΌΜ
!9͏ͪͷΞϓϦʹςετɺॻ͚Δͷ͔ʁ
!10χϑςΟෆಈ࢈ͷ͓͞Β͍
!11• ςετํ๏ΛExcelͰ1͔Βશͯจষʹ͢Δ• ߲௨ΓʹεϚϗΛϙνϙνɾɾɾ• मਖ਼͕͋ΔͱσάϨ͕͋Δ͔͠Εͳ͍ͷͰɹ·ͨ1͔ΒςετΛΓ͢ɾɾɾɾɾɾࢲ͕ػೳ։ൃͨ͠ͱ͖
!12ਏ͗͢ʂͬͯΒΜͳ͍Αʂ
!13ͦͦςετಋೖ͢ΔΑΓͬͨํ͕ྑ͍͜ͱ͋ΔͷͰʁϦϑΝΫλϦϯάͱ͔ɾɾɾ·ͩObjective-Cଟ͍ͷͰObjective-C→SwiftҠߦͱ͔ɾɾɾʢେମ͜͏͍͏ͷยखؒͰͰ͖ͳ͍ɺΒͳ͍ʣ
!14ग़యɿϒϥοΫϘοΫεͳίʔυʹରͯ͠গͣͭ͠ςετΛॻ͍͍ͯͨ͘ΊͷςΫχοΫiOSDCޙͷʮԶίϯʯͰɾɾɾ
!15·ͣɺ୭͔͕ॻ͔ͳ͍ͱԿ࢝·Βͳ͍ʂςετɺॻ͍ͯΈΑ͏ʂ
!16ςετΛಋೖ͢Δʹܾ͋ͨͬͯΊͨ͜ͱ
!17طଘͷػೳʹςετΛॻ͔ͳ͍ࠓ·ͰͷίʔυʹςετΛॻ͘ͷ͔ͳΓͷ࿑ྗͱ͕͔͔Δ͜ͱ໌Β͔ͦͷΘΓɺ৽ͨʹ࣮͢ΔػೳʹςετΛॻ͘͜ͱΛపఈ͢Δ͜ͱʹܾͨ͠Ίͨ͜ͱᶃ
!18ઃܭࢥͱͯ͠VIPERΛಋೖಉ͡ฐࣾͷΞϓϦͰಋೖ͍ͯͨ͠ςετΛॻ͖͍͢VIPERΞʔΩςΫνϟΛऔΓೖΕΔʢܾͦͦ·ͬͨઃܭͰॻ͔Ε͍ͯͳ͔ͬͨʣܾΊͨ͜ͱᶄνʔϜͷઌഐ @hicka04ʹͨ͘͞ΜڭΘΓ·ͨ͠ʂ
!19ͱʹ͔͘ઈରʹςετΛ1ͭͰॻ͘·ͣ1ͭͰςετΛॻ͍ͨͱ͍͏࣮୭͔1ਓ͕ॻ͖࢝ΊͨΒςετΛॻ͜͏ͱ͍͏श׳͕ʹܾ͘Ίͨ͜ͱᶅ
!20ॻ͍ͯΈΑ͏ʂ
!21ͦͦͳΜͷςετͨ͠Β͍͍ͷʁॳ৺ऀ͋Δ͋Δ
!22खಈͰςετ͢Δ࣌ʹ೦ೖΓʹΓͦ͏ͳͱ͜Ζ͔Βॻ͍ͯΈͨॳ৺ऀ͋Δ͋Δ
!23͜ͷը໘ͷςετΛॻ͍ͯΈͨ͜ΜͳςετΛॻ͖·ͨ͠
!24͜ͷը໘ͷςετΛॻ͍ͯΈͨ͜ΜͳςετΛॻ͖·ͨ͠• ॅΈ͍ͨॴΛ୳͢ը໘• બΜͩಓݝʹΑͬͯɹ୳͠ํͷબࢶ͕ҟͳΔʢྫʣؔ౦Ͱ࿏ઢਤࠞࡶ͔Β୳ͤΔΑ͏ʹͳ͍ͬͯΔ
!25• ΦϨϯδϘλϯσϑΥϧτͰग़͢Ϙλϯग़͚͠ͷ݅৭Ͱදݱ͠·͢
!26• ΦϨϯδϘλϯσϑΥϧτͰग़͢• ݅1Λຬͨ͢ͱਫ৭ͷϘλϯϘλϯग़͚͠ͷ݅৭Ͱදݱ͠·͢
!27• ΦϨϯδϘλϯσϑΥϧτͰग़͢• ݅1Λຬͨ͢ͱਫ৭ͷϘλϯ• ݅2Λຬͨ͢ͱϐϯΫͷϘλϯΛɹՃͰग़͢Ϙλϯग़͚͠ͷ݅৭Ͱදݱ͠·͢
!28͜ΜͳίʔυΛॻ͍ͨ͜ΜͳςετΛॻ͖·ͨ͠
!29͜ΜͳίʔυΛॻ͍ͨ͜ΜͳςετΛॻ͖·ͨ͠खಈςετͳΒɺ͜͜ΛॏతʹΓͦ͏ʂ
!30ςετίʔυ͜ΜͳςετΛॻ͖·ͨ͠
!31ςετίʔυ͜ΜͳςετΛॻ͖·ͨ͠ϩδοΫ෦ͷςετ͕ॻ͚ͨʂ
!32·ͱΊ
!33• ٕज़ྗ͕ͳͯ͘ɺΞϓϦ͕ෳࡶͰɹϢχοτςετΛ࢝ΊΔ͜ͱͰ͖Δʂ• ͙͢ʹཧͷڥʹͳΕͳ͍ͷͰɹࣗͰͰ͖Δͱ͜Ζ͔Βগͣͭ͠վળʂ• ϢχοτςετΛಋೖ͠Α͏ͱࢥ͑ͨiOSDCͱνʔϜͷօ͞Μʹѹతײँ͜ͷLTͰ͔͑ͨͬͨ͜ͱ
!34͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ
!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ςετॳ৺ऀʹͱͬͯษڧʹͳͬͨࢿྉɾॻ੶
ʘ ΞϓϦΤϯδχΞืूத ʗ