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/

4239ea2bf38d7178476faa8787683105?s=128

Motoki Narita

May 01, 2018
Tweet

Transcript

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

    Fukuoka
  2. ࣗݾ঺հ • GitHub: motokiee • twitter: @motokiee • ι΢κ΢ →

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

    ϝϧΧϦ • iOSΤϯδχΞ • Ϗʔϧ͕޷͖ • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ
  4. ෭ୂ௕΍ͬͨΓɺΦʔϓχϯάϜʔϏʔ࡞ͬͨΓɺެࣜΞϓϦ࡞ͬͨΓɺϊϕϧςΟ࡞ͬͨΓɻ
 ࠷ߴͷΧϯϑΝϨϯεΛ࡞ΔͨΊʹελοϑͱҰॹʹؤு͍ͬͯ·͢ʂ

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

  6. ࣗݾ঺հ • GitHub: motokiee • twitter: @motokiee • ι΢κ΢ →

    ϝϧΧϦ • iOSΤϯδχΞ • Ϗʔϧ͕޷͖ • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ
  7. ͕޷͖ ࿡ຊ໦ͷBrewdogͱ͍͏ΫϥϑτϏΞ όʔʹि2͘Β͍Ͱߦͬͯ·͢ʢiOSDC ͰBrewdogʹग़ձ͍ࠍΕͨʣ 
 ౦ژʹདྷͨͱ͖͸ͥͻʂ

  8. ͖ΐ͏ͷ࿩

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

  10. Ͳ͏΍ͬͯʁ

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

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

  13. ίʔυΛॻ͘͜ͱʹूத͢Δํ๏ • ϛʔςΟϯάΛݮΒ͢
 → ϛʔςΟϯά͸ܾΊΔ৔ɻ͍ͨͣΒʹਓΛݺ͹ͳ͍ • ܦඅਃ੥ͱ͔׳Εͯͳͯ࣌ؒ͘ͷ͔͔Δ࡞ۀΛݮΒ͢
 → ࣾ৯ΞϓϦಋೖͳͲ࠷খݶʹͳΔΑ͏഑ྀ͞Ε͍ͯΔ •

    ੩͔ͳ؀ڥͰूத͢Δ
 → ूதBOXϧʔϜ͕͋Δ • υϦϯΫങ͍ʹߦͬͨϦ͢ΔҠಈ࣌ؒΛݮΒ͢
 → υϦϯΫແྉ
  14. Ͱ͸ΤϯδχΞ͸ԿΛ͢Δ͔ʁ

  15. Automation, Karakuri

  16. ͢ͳΘͪ

  17. ࣗಈԽͱ࢓૊ΈԽ

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

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

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

  21. swiftlint autocorrect

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

  23. Danger

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

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

  27. Ϗϧυͷ഑෍

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

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

  30. όοΫΤϯυνʔϜͱͷ࿈ܞ
 ʮ͋ͷAPIͬͯ΋͏ݕূ։࢝Ͱ͖·͢ʁ 
 xx೔ϦϦʔεͳΜͰ͚͢Ͳʯ

  31. QAνʔϜ΁ͷ࿈བྷ

  32. CIͷઃఆ(Bitrise) • Unit Test͸push͝ͱʹ
 → յΕͨ৔߹ʹ͙͢ݕ஌ • masterϒϥϯνʹpush/mergeͰFabric΁Ξοϓϩʔυ
 → ଞͷ։ൃϝϯόʔ͕͙͢ʹ৽͍͠ػೳΛࢼ͢͜ͱ͕Ͱ͖Δ

    • release/* ΁ͷpush/mergeͰFabric΁ͷΞοϓϩʔυˍiTunes Connect΁ ͷΞοϓϩʔυ
 → ϦϦʔεީิ͸QAऴྃΛ଴ͨͣʹiTCʹΞοϓϩʔυ
  33. ϦϦʔεީิ͕Ξοϓϩʔυ͞Εͨ͜ͱΛSlackͰ௨஌ɺQAνʔϜ͸ ϏϧυΛ͙͢ʹ৮ΕΔˍ։ൃϝϯόʔ͸αϒϛοτ͕͍͍ۙͮͯΔ͜ ͱ͕෼͔Δ

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

    ΤϯδχΞɺQAΤϯδχΞͱ΋ʹଟ͘ͷ࣌ؒΛແବʹ͍ͯͨ͠ʢ͸ͣʣ
  35. ϦϦʔεؔ࿈࡞ۀ

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

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

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

  39. iTunesConnectͷ εςʔλε؂ࢹ

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

    ؾʹ͸ͳΔΜ͚ͩͲɺiOSΤϯδχΞҎ֎͸ͦ͜·Ͱதࢭͯ͠ͳ͍
  41. ͜Μͳײ͡ͷը૾ΛSlackʹషͬͯप஌͍ͯͨ͠

  42. ΊͪΌͪ͘Ό໘౗

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

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

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

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

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

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

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