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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Motoki Narita
May 01, 2018
Technology
3.1k
11
Share
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.7k
Alexa, Swiftで スマートスピーカーは実装できる?
motokiee
0
2k
入力を型で表現する
motokiee
2
3.9k
Move Fast iOS Development
motokiee
4
3.9k
結婚式を支えた技術 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
【技術書典20】OpenFOAM(自宅で深める流体解析)流れと熱移動(2)
kamakiri1225
0
360
独断と偏見で試してみる、 シングル or マルチエージェント どっちがいいの?
shichijoyuhi
1
240
サービスの信頼性を高めるため、形骸化した「プロダクションミーティング」を立て直すまでの取り組み
stefafafan
1
220
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
250
「誰一人取り残されない」 AIエージェント時代のプロダクト設計思想 Product Management Summit 2026
mizushimac
1
2.7k
Cortex Codeのコスト見積ヒントご紹介
yokatsuki
0
140
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
4
6.7k
Forget technical debt
ufried
0
160
音声言語モデル手法に関する発表の紹介
kzinmr
0
160
生成AIが変える SaaS の競争原理と弁護士ドットコムのプロダクト戦略
bengo4com
1
3.3k
エージェントスキルを作って自分のインプットに役立てよう
tsubakimoto_s
0
530
AI時代に越境し、 組織を変えるQAスキルの正体 / QA Skills for Transforming an Organization
mii3king
5
3.4k
Featured
See All Featured
Paper Plane
katiecoart
PRO
1
49k
Skip the Path - Find Your Career Trail
mkilby
1
110
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
1
240
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
360
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4k
Evolving SEO for Evolving Search Engines
ryanjones
0
180
Abbi's Birthday
coloredviolet
2
7.4k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.7k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
What does AI have to do with Human Rights?
axbom
PRO
1
2.1k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
55
3.3k
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.ϦϦʔε͢Δͱ͖ ͚ͩʂ
େࣄͳϘλϯΛϙνΔ͜ͱ͚ͩ
·ͱΊ • ೋΔ͜ͱࣗಈԽɺΈԽ͢Δ • ίʔυͷ࣭Λ্͛ΔͨΊʹɺίʔυઃܭʹूத͢ΔͨΊʹ༨ ܭͳ͜ͱΛߟ͑ͳ͍Α͏ʹࣗಈԽɾΈԽ͢Δ