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

iOSの自動化と仕組み化 ~コードと設計に集中する~

iOSの自動化と仕組み化 ~コードと設計に集中する~

Mercari Meetup for Mobile App Engineer in Fukuoka
https://mercari.connpass.com/event/83957/

Motoki Narita

May 01, 2018
Tweet

More Decks by Motoki Narita

Other Decks in Technology

Transcript

  1. iOSͷࣗಈԽͱ࢓૊ΈԽ
    ~ίʔυͱઃܭʹूத͢Δ~
    Mercari Drink Meetup for Mobile App Engineer in Fukuoka

    View Slide

  2. ࣗݾ঺հ
    • GitHub: motokiee
    • twitter: @motokiee
    • ι΢κ΢ → ϝϧΧϦ
    • iOSΤϯδχΞ
    • Ϗʔϧ͕޷͖
    • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ

    View Slide

  3. ࣗݾ঺հ
    • GitHub: motokiee
    • twitter: @motokiee
    • ι΢κ΢ → ϝϧΧϦ
    • iOSΤϯδχΞ
    • Ϗʔϧ͕޷͖
    • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ

    View Slide

  4. ෭ୂ௕΍ͬͨΓɺΦʔϓχϯάϜʔϏʔ࡞ͬͨΓɺެࣜΞϓϦ࡞ͬͨΓɺϊϕϧςΟ࡞ͬͨΓɻ

    ࠷ߴͷΧϯϑΝϨϯεΛ࡞ΔͨΊʹελοϑͱҰॹʹؤு͍ͬͯ·͢ʂ

    View Slide

  5. iOSDC Japan 2018 ࢝ಈ͠·ͨ͠!
    ΋ͪΖΜϝϧΧϦ΋εϙϯαʔ΍Γ·͢!!
    ୈҰճ͔Β3೥࿈ଓ!!

    View Slide

  6. ࣗݾ঺հ
    • GitHub: motokiee
    • twitter: @motokiee
    • ι΢κ΢ → ϝϧΧϦ
    • iOSΤϯδχΞ
    • Ϗʔϧ͕޷͖
    • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ

    View Slide

  7. ͕޷͖
    ࿡ຊ໦ͷBrewdogͱ͍͏ΫϥϑτϏΞ
    όʔʹि2͘Β͍Ͱߦͬͯ·͢ʢiOSDC
    ͰBrewdogʹग़ձ͍ࠍΕͨʣ

    ౦ژʹདྷͨͱ͖͸ͥͻʂ

    View Slide

  8. ͖ΐ͏ͷ࿩

    View Slide

  9. ίʔυΛॻ͘͜ͱʹूத͢Δ

    View Slide

  10. Ͳ͏΍ͬͯʁ

    View Slide

  11. ίʔυΛॻ͘͜ͱʹूத͢Δํ๏
    • ϛʔςΟϯάΛݮΒ͢
    • ܦඅਃ੥ͱ͔׳Εͯͳͯ࣌ؒ͘ͷ͔͔Δ࡞ۀΛݮΒ͢
    • ੩͔ͳ؀ڥͰूத͢Δ
    • υϦϯΫങ͍ʹߦͬͨϦ͢ΔҠಈ࣌ؒΛݮΒ͢

    View Slide

  12. ϝϧΧϦͩͱ
    ͍͍ͩͨ؀ڥ੔͍ͬͯΔ

    View Slide

  13. ίʔυΛॻ͘͜ͱʹूத͢Δํ๏
    • ϛʔςΟϯάΛݮΒ͢

    → ϛʔςΟϯά͸ܾΊΔ৔ɻ͍ͨͣΒʹਓΛݺ͹ͳ͍
    • ܦඅਃ੥ͱ͔׳Εͯͳͯ࣌ؒ͘ͷ͔͔Δ࡞ۀΛݮΒ͢

    → ࣾ৯ΞϓϦಋೖͳͲ࠷খݶʹͳΔΑ͏഑ྀ͞Ε͍ͯΔ
    • ੩͔ͳ؀ڥͰूத͢Δ

    → ूதBOXϧʔϜ͕͋Δ
    • υϦϯΫങ͍ʹߦͬͨϦ͢ΔҠಈ࣌ؒΛݮΒ͢

    → υϦϯΫແྉ

    View Slide

  14. Ͱ͸ΤϯδχΞ͸ԿΛ͢Δ͔ʁ

    View Slide

  15. Automation, Karakuri

    View Slide

  16. ͢ͳΘͪ

    View Slide

  17. ࣗಈԽͱ࢓૊ΈԽ

    View Slide

  18. ίʔυΛॻ͘Ҏ֎ͷ͜ͱΛͳΔ΂ࣗ͘ಈԽ
    • Ϗϧυͷ഑෍
    • ϦϦʔε࡞ۀ
    • αϒϛοτ
    • ϨϏϡʔ

    View Slide

  19. ※ ϝϧΧϦ Χ΢ϧνʔϜͰͷऔΓ૊Έʹ͍ͭͯઆ໌͍ͯ͠
    ·͕͢ɺϝϧΧϦ΋΄΅ಉ͜͡ͱΛ͍ͯ͠·͢

    View Slide

  20. ίʔσΟϯάͷޮ཰ͱ࢓૊ΈԽ

    View Slide

  21. swiftlint autocorrect

    View Slide

  22. • Τϥʔ΍ϫʔχϯάΛࣗಈͰमਖ਼͢ΔίϚϯυ
    • ίʔσΟϯάن໿͸ࡉ͔ܾ͘ΊͣʹσϑΥϧτઃఆ
    ○ ͔ͳΓࡉ͔ܾ͘Ίͨ͜ͱ΋͕͋ͬͨσϑΥϧτͰ
    େ͖ͳ໰୊͕ى͖ͨ͜ͱ͸ͳ͍

    View Slide

  23. Danger

    View Slide

  24. • ίʔυϨϏϡʔͷࣗಈԽπʔϧ
    • DangerfileͰઃఆΛهड़
    • ϦϦʔεϊʔτͷߋ৽(ޙड़)๨Ε΍ɺιʔε
    ίʔυͷมߋͱυΩϡϝϯτԽ͕࿈ಈ͢Δ΋
    ͷɺTODO:΍FIXME:͕࢒͍ͬͯͳ͍͔؂ࢹ

    View Slide

  25. View Slide

  26. ϑΥʔϚοτɺίʔσΟϯά͔Β೿ੜ͢Δ࡞ۀͳͲ
    ๨Ε͕ͪͳ͜ͱΛޮ཰Խ
    → ઃܭͱίʔυͷ඼࣭ʹूத

    View Slide

  27. Ϗϧυͷ഑෍

    View Slide

  28. αϒϛοτલ΍QAظؒͰ
    ΍Δ͜ͱ͸ҙ֎ͱଟ͍

    View Slide

  29. σβΠφʔͷUIνΣοΫ
    ʮ͋ͷػೳͷσβΠϯͬͯ΋͏ݟΒΕΔʁʯ

    View Slide

  30. όοΫΤϯυνʔϜͱͷ࿈ܞ

    ʮ͋ͷAPIͬͯ΋͏ݕূ։࢝Ͱ͖·͢ʁ 

    xx೔ϦϦʔεͳΜͰ͚͢Ͳʯ

    View Slide

  31. QAνʔϜ΁ͷ࿈བྷ

    View Slide

  32. CIͷઃఆ(Bitrise)
    • Unit Test͸push͝ͱʹ

    → յΕͨ৔߹ʹ͙͢ݕ஌
    • masterϒϥϯνʹpush/mergeͰFabric΁Ξοϓϩʔυ

    → ଞͷ։ൃϝϯόʔ͕͙͢ʹ৽͍͠ػೳΛࢼ͢͜ͱ͕Ͱ͖Δ
    • release/* ΁ͷpush/mergeͰFabric΁ͷΞοϓϩʔυˍiTunes Connect΁
    ͷΞοϓϩʔυ

    → ϦϦʔεީิ͸QAऴྃΛ଴ͨͣʹiTCʹΞοϓϩʔυ

    View Slide

  33. ϦϦʔεީิ͕Ξοϓϩʔυ͞Εͨ͜ͱΛSlackͰ௨஌ɺQAνʔϜ͸
    ϏϧυΛ͙͢ʹ৮ΕΔˍ։ൃϝϯόʔ͸αϒϛοτ͕͍͍ۙͮͯΔ͜
    ͱ͕෼͔Δ

    View Slide

  34. “ਖ΋ੵ΋Ε͹ࢁͱͳΔ”
    • खಈͰ఻͑ͳ͍ͱ͍͚ͳ͍ͷͰϦϦʔε༻Ϗϧυ͕ऴΘ͔ͬͨͲ͏͔Λ
    ؾʹ͍ͯ͠ͳ͍ͱ͍͚ͳ͍ = ूதͰ͖ͳ͍
    • ผͷ͜ͱʹूதͯ͠๨Ε͍ͯͨΓ͢ΔͱQAνʔϜ͸࿈བྷΛ଴ͭ͜ͱʹͳ
    Δ
    • ΤϯδχΞɺQAΤϯδχΞͱ΋ʹଟ͘ͷ࣌ؒΛແବʹ͍ͯͨ͠ʢ͸ͣʣ

    View Slide

  35. ϦϦʔεؔ࿈࡞ۀ

    View Slide

  36. iTunes Connectؔ࿈ͷ࡞ۀ
    • ϦϦʔεϊʔτͳͲͷϝλσʔλߋ৽
    • αϒϛοτ
    • ϦδΣΫτରԠ
    • ϦϦʔε࡞ۀ

    View Slide

  37. iTunes Connectͷϝλσʔλ؅ཧ

    View Slide

  38. Pull RequestϕʔεͰࠩ෼؅ཧ

    View Slide

  39. iTunesConnectͷ
    εςʔλε؂ࢹ

    View Slide

  40. iTunesConnectͷεςʔλε؂ࢹ
    • ੵΈॏͳΔͱෛ୲ʹͳΔ
    • αϒϛοτޙͷ৹ࠪঢ়گ͸ΤϯδχΞҎ֎΋ؾʹͳΔ
    • αϒϛοτޙ͸ΤϯδχΞ͕εςʔλεʹ͍ͭͯ࿈བྷ͢Δ
    • ʮreject͞Ε·ͨ͠ʯʮ৹ࠪ௨ͬͨͷͰϦϦʔε͠·͢ʯͳͲ
    • ؾʹ͸ͳΔΜ͚ͩͲɺiOSΤϯδχΞҎ֎͸ͦ͜·Ͱதࢭͯ͠ͳ͍

    View Slide

  41. ͜Μͳײ͡ͷը૾ΛSlackʹషͬͯप஌͍ͯͨ͠

    View Slide

  42. ΊͪΌͪ͘Ό໘౗

    View Slide

  43. Google Apps ScriptͰiTunes ConnectͷϝʔϧνΣοΫ
    &
    Slack౤ߘ

    View Slide

  44. ਓؒͷ΍Δ͜ͱͰ͸ͳ͔ͬͨ
    ※ϝϧνϟϦνʔϜ΋ಉ༷ͷεΫϦϓτ࢖ͬͯ·͢

    View Slide

  45. GASͰ࢖͑ΔscriptΛgistͰެ։ͯ͠·͢
    https://gist.github.com/motokiee/39a875e97349fe9325314bdae9d3af2a

    View Slide

  46. ࠷ऴతʹiTunes ConnectΛ։͘ͷ͸

    View Slide

  47. 1.৹ࠪʹఏग़͢Δͱ͖
    a.ఏग़͢ΔϏϧυΛઃఆ͢Δͱ͖
    2.ϦϦʔε͢Δͱ͖
    ͚ͩʂ

    View Slide

  48. େࣄͳϘλϯΛϙνΔ͜ͱ͚ͩ

    View Slide

  49. ·ͱΊ
    • ೋ౓΍Δ͜ͱ͸ࣗಈԽɺ࢓૊ΈԽ͢Δ
    • ίʔυͷ඼࣭Λ্͛ΔͨΊʹɺίʔυ΍ઃܭʹूத͢ΔͨΊʹ༨
    ܭͳ͜ͱΛߟ͑ͳ͍Α͏ʹࣗಈԽɾ࢓૊ΈԽ͢Δ

    View Slide