Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOSの自動化と仕組み化 ~コードと設計に集中する~
Search
Motoki Narita
May 01, 2018
Technology
3.1k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSの自動化と仕組み化 ~コードと設計に集中する~
Mercari Meetup for Mobile App Engineer in Fukuoka
https://mercari.connpass.com/event/83957/
Motoki Narita
May 01, 2018
More Decks by Motoki Narita
See All by Motoki Narita
Mercari 10years iOS Development
motokiee
5
4.8k
Alexa, Swiftで スマートスピーカーは実装できる?
motokiee
0
2k
入力を型で表現する
motokiee
2
4k
Move Fast iOS Development
motokiee
4
4k
結婚式を支えた技術 Firebaseを活用したサーバレスiOSアプリケーション開発
motokiee
33
26k
Vision Framework 入門
motokiee
2
2k
Lightweight Dependency Injection tips
motokiee
10
3.3k
Hello React Native
motokiee
8
640
RxSwift in Practice
motokiee
11
6.1k
Other Decks in Technology
See All in Technology
徹底討論!ECS vs EKS!
daitak
3
1.8k
AWS PrivateLink × SCIM で実現する セキュアで運⽤負荷の低い Databricks 基盤の構築
tsuda7
0
110
そこにあるから地図ができる~位置を示す"モノ"を愉しむ~ - Interface 2026年6月号GPS特集オフ会 / interface_202606_GPS_offline
sakaik
1
130
「ビジネスがわかるエンジニア」とは何か?
ryooob
0
400
PostgreSQL 19 新機能概要 OSC Hokkaido 2026
nori_shinoda
0
260
初めてのDatabricks勉強会
taka_aki
2
200
『AIに負けない』より『AIと遊ぶ』」〜ワクワクが最強のテスト・QA学習戦略_公開用
odan611
1
110
MySQL & MySQL HeatWave Report - June 2026
freshdaz
0
210
Hatena Engineer Seminar 37 jj1uzh
jj1uzh
0
210
AWS Summit 2026で見えたSIerにとっての Amazon Quickの位置づけ
maf_0521
0
120
Comment regagner la souveraineté de vos données tout en étant payé grâce à Nostr !
rlifchitz
0
230
スタートアップにAmazon EKSは早すぎる? マルチプロダクト戦略を加速する Platform Engineeringの実践 / Is Amazon EKS Too Soon for Startups? Practical Platform Engineering to Accelerate a Multi-Product Strategy
elmodev09
1
1.9k
Featured
See All Featured
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
Abbi's Birthday
coloredviolet
3
8.3k
We Are The Robots
honzajavorek
0
260
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
400
So, you think you're a good person
axbom
PRO
2
2.1k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Embracing the Ebb and Flow
colly
88
5.1k
Effective software design: The role of men in debugging patriarchy in IT @ Voxxed Days AMS
baasie
0
440
A better future with KSS
kneath
240
18k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.9k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
220
Transcript
iOSͷࣗಈԽͱΈԽ ~ίʔυͱઃܭʹूத͢Δ~ Mercari Drink Meetup for Mobile App Engineer in
Fukuoka
ࣗݾհ • GitHub: motokiee • twitter: @motokiee • ικ →
ϝϧΧϦ • iOSΤϯδχΞ • Ϗʔϧ͕͖ • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ
ࣗݾհ • GitHub: motokiee • twitter: @motokiee • ικ →
ϝϧΧϦ • iOSΤϯδχΞ • Ϗʔϧ͕͖ • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ
෭ୂͬͨΓɺΦʔϓχϯάϜʔϏʔ࡞ͬͨΓɺެࣜΞϓϦ࡞ͬͨΓɺϊϕϧςΟ࡞ͬͨΓɻ ࠷ߴͷΧϯϑΝϨϯεΛ࡞ΔͨΊʹελοϑͱҰॹʹؤு͍ͬͯ·͢ʂ
iOSDC Japan 2018 ࢝ಈ͠·ͨ͠! ͪΖΜϝϧΧϦεϙϯαʔΓ·͢!! ୈҰճ͔Β3࿈ଓ!!
ࣗݾհ • GitHub: motokiee • twitter: @motokiee • ικ →
ϝϧΧϦ • iOSΤϯδχΞ • Ϗʔϧ͕͖ • iOSDC Japan 2016 / 2017 / 2018 ίΞελοϑ
͕͖ ຊͷBrewdogͱ͍͏ΫϥϑτϏΞ όʔʹि2͘Β͍Ͱߦͬͯ·͢ʢiOSDC ͰBrewdogʹग़ձ͍ࠍΕͨʣ ౦ژʹདྷͨͱ͖ͥͻʂ
͖ΐ͏ͷ
ίʔυΛॻ͘͜ͱʹूத͢Δ
Ͳ͏ͬͯʁ
ίʔυΛॻ͘͜ͱʹूத͢Δํ๏ • ϛʔςΟϯάΛݮΒ͢ • ܦඅਃͱ͔׳Εͯͳͯ࣌ؒ͘ͷ͔͔Δ࡞ۀΛݮΒ͢ • ੩͔ͳڥͰूத͢Δ • υϦϯΫങ͍ʹߦͬͨϦ͢ΔҠಈ࣌ؒΛݮΒ͢
ϝϧΧϦͩͱ ͍͍ͩͨڥ͍ͬͯΔ
ίʔυΛॻ͘͜ͱʹूத͢Δํ๏ • ϛʔςΟϯάΛݮΒ͢ → ϛʔςΟϯάܾΊΔɻ͍ͨͣΒʹਓΛݺͳ͍ • ܦඅਃͱ͔׳Εͯͳͯ࣌ؒ͘ͷ͔͔Δ࡞ۀΛݮΒ͢ → ࣾ৯ΞϓϦಋೖͳͲ࠷খݶʹͳΔΑ͏ྀ͞Ε͍ͯΔ •
੩͔ͳڥͰूத͢Δ → ूதBOXϧʔϜ͕͋Δ • υϦϯΫങ͍ʹߦͬͨϦ͢ΔҠಈ࣌ؒΛݮΒ͢ → υϦϯΫແྉ
ͰΤϯδχΞԿΛ͢Δ͔ʁ
Automation, Karakuri
͢ͳΘͪ
ࣗಈԽͱΈԽ
ίʔυΛॻ͘Ҏ֎ͷ͜ͱΛͳΔࣗ͘ಈԽ • Ϗϧυͷ • ϦϦʔε࡞ۀ • αϒϛοτ • ϨϏϡʔ
※ ϝϧΧϦ ΧϧνʔϜͰͷऔΓΈʹ͍ͭͯઆ໌͍ͯ͠ ·͕͢ɺϝϧΧϦ΄΅ಉ͜͡ͱΛ͍ͯ͠·͢
ίʔσΟϯάͷޮͱΈԽ
swiftlint autocorrect
• ΤϥʔϫʔχϯάΛࣗಈͰमਖ਼͢ΔίϚϯυ • ίʔσΟϯάنࡉ͔ܾ͘ΊͣʹσϑΥϧτઃఆ ◦ ͔ͳΓࡉ͔ܾ͘Ίͨ͜ͱ͕͋ͬͨσϑΥϧτͰ େ͖ͳ͕ى͖ͨ͜ͱͳ͍
Danger
• ίʔυϨϏϡʔͷࣗಈԽπʔϧ • DangerfileͰઃఆΛهड़ • ϦϦʔεϊʔτͷߋ৽(ޙड़)Εɺιʔε ίʔυͷมߋͱυΩϡϝϯτԽ͕࿈ಈ͢Δ ͷɺTODO:FIXME:͕͍ͬͯͳ͍͔ࢹ
None
ϑΥʔϚοτɺίʔσΟϯά͔Βੜ͢Δ࡞ۀͳͲ Ε͕ͪͳ͜ͱΛޮԽ → ઃܭͱίʔυͷ࣭ʹूத
Ϗϧυͷ
αϒϛοτલQAظؒͰ Δ͜ͱҙ֎ͱଟ͍
σβΠφʔͷUIνΣοΫ ʮ͋ͷػೳͷσβΠϯͬͯ͏ݟΒΕΔʁʯ
όοΫΤϯυνʔϜͱͷ࿈ܞ ʮ͋ͷAPIͬͯ͏ݕূ։࢝Ͱ͖·͢ʁ xxϦϦʔεͳΜͰ͚͢Ͳʯ
QAνʔϜͷ࿈བྷ
CIͷઃఆ(Bitrise) • Unit Testpush͝ͱʹ → յΕͨ߹ʹ͙͢ݕ • masterϒϥϯνʹpush/mergeͰFabricΞοϓϩʔυ → ଞͷ։ൃϝϯόʔ͕͙͢ʹ৽͍͠ػೳΛࢼ͢͜ͱ͕Ͱ͖Δ
• release/* ͷpush/mergeͰFabricͷΞοϓϩʔυˍiTunes Connect ͷΞοϓϩʔυ → ϦϦʔεީิQAऴྃΛͨͣʹiTCʹΞοϓϩʔυ
ϦϦʔεީิ͕Ξοϓϩʔυ͞Εͨ͜ͱΛSlackͰ௨ɺQAνʔϜ ϏϧυΛ͙͢ʹ৮ΕΔˍ։ൃϝϯόʔαϒϛοτ͕͍͍ۙͮͯΔ͜ ͱ͕͔Δ
“ਖੵΕࢁͱͳΔ” • खಈͰ͑ͳ͍ͱ͍͚ͳ͍ͷͰϦϦʔε༻Ϗϧυ͕ऴΘ͔ͬͨͲ͏͔Λ ؾʹ͍ͯ͠ͳ͍ͱ͍͚ͳ͍ = ूதͰ͖ͳ͍ • ผͷ͜ͱʹूதͯ͠Ε͍ͯͨΓ͢ΔͱQAνʔϜ࿈བྷΛͭ͜ͱʹͳ Δ •
ΤϯδχΞɺQAΤϯδχΞͱʹଟ͘ͷ࣌ؒΛແବʹ͍ͯͨ͠ʢͣʣ
ϦϦʔεؔ࿈࡞ۀ
iTunes Connectؔ࿈ͷ࡞ۀ • ϦϦʔεϊʔτͳͲͷϝλσʔλߋ৽ • αϒϛοτ • ϦδΣΫτରԠ • ϦϦʔε࡞ۀ
iTunes Connectͷϝλσʔλཧ
Pull RequestϕʔεͰࠩཧ
iTunesConnectͷ εςʔλεࢹ
iTunesConnectͷεςʔλεࢹ • ੵΈॏͳΔͱෛ୲ʹͳΔ • αϒϛοτޙͷ৹ࠪঢ়گΤϯδχΞҎ֎ؾʹͳΔ • αϒϛοτޙΤϯδχΞ͕εςʔλεʹ͍ͭͯ࿈བྷ͢Δ • ʮreject͞Ε·ͨ͠ʯʮ৹ࠪ௨ͬͨͷͰϦϦʔε͠·͢ʯͳͲ •
ؾʹͳΔΜ͚ͩͲɺiOSΤϯδχΞҎ֎ͦ͜·Ͱதࢭͯ͠ͳ͍
͜Μͳײ͡ͷը૾ΛSlackʹషͬͯप͍ͯͨ͠
ΊͪΌͪ͘Ό໘
Google Apps ScriptͰiTunes ConnectͷϝʔϧνΣοΫ & Slackߘ
ਓؒͷΔ͜ͱͰͳ͔ͬͨ ※ϝϧνϟϦνʔϜಉ༷ͷεΫϦϓτͬͯ·͢
GASͰ͑ΔscriptΛgistͰެ։ͯ͠·͢ https://gist.github.com/motokiee/39a875e97349fe9325314bdae9d3af2a
࠷ऴతʹiTunes ConnectΛ։͘ͷ
1.৹ࠪʹఏग़͢Δͱ͖ a.ఏग़͢ΔϏϧυΛઃఆ͢Δͱ͖ 2.ϦϦʔε͢Δͱ͖ ͚ͩʂ
େࣄͳϘλϯΛϙνΔ͜ͱ͚ͩ
·ͱΊ • ೋΔ͜ͱࣗಈԽɺΈԽ͢Δ • ίʔυͷ࣭Λ্͛ΔͨΊʹɺίʔυઃܭʹूத͢ΔͨΊʹ༨ ܭͳ͜ͱΛߟ͑ͳ͍Α͏ʹࣗಈԽɾΈԽ͢Δ