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
11
3k
iOSの自動化と仕組み化 ~コードと設計に集中する~
Mercari Meetup for Mobile App Engineer in Fukuoka
https://mercari.connpass.com/event/83957/
Motoki Narita
May 01, 2018
Tweet
Share
More Decks by Motoki Narita
See All by Motoki Narita
Mercari 10years iOS Development
motokiee
5
4.3k
Alexa, Swiftで スマートスピーカーは実装できる?
motokiee
0
1.8k
入力を型で表現する
motokiee
2
3.9k
Move Fast iOS Development
motokiee
4
3.9k
結婚式を支えた技術 Firebaseを活用したサーバレスiOSアプリケーション開発
motokiee
33
26k
Vision Framework 入門
motokiee
2
1.9k
Lightweight Dependency Injection tips
motokiee
10
3.1k
Hello React Native
motokiee
8
620
RxSwift in Practice
motokiee
11
5.9k
Other Decks in Technology
See All in Technology
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
3
450
Digitization部 紹介資料
sansan33
PRO
1
5.8k
AIがコードを書いてくれるなら、新米エンジニアは何をする? / komekaigi2025
nkzn
25
17k
DSPy入門
tomehirata
6
880
マルチエージェントのチームビルディング_2025-10-25
shinoyamada
0
250
プロダクト開発と社内データ活用での、BI×AIの現在地 / Data_Findy
sansan_randd
1
800
OPENLOGI Company Profile for engineer
hr01
1
46k
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.6k
サブドメインテイクオーバー事例紹介と対策について
mikit
15
7k
LLM APIを2年間本番運用して苦労した話
ivry_presentationmaterials
9
6.8k
datadog-incident-management-intro
tetsuya28
0
120
[Journal club] Thinking in Space: How Multimodal Large Language Models See, Remember, and Recall Spaces
keio_smilab
PRO
0
110
Featured
See All Featured
Practical Orchestrator
shlominoach
190
11k
Testing 201, or: Great Expectations
jmmastey
46
7.7k
[RailsConf 2023] Rails as a piece of cake
palkan
57
6k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.3k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
23
1.5k
Agile that works and the tools we love
rasmusluckow
331
21k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
10
900
Building an army of robots
kneath
306
46k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.7k
Faster Mobile Websites
deanohume
310
31k
Done Done
chrislema
186
16k
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.ϦϦʔε͢Δͱ͖ ͚ͩʂ
େࣄͳϘλϯΛϙνΔ͜ͱ͚ͩ
·ͱΊ • ೋΔ͜ͱࣗಈԽɺΈԽ͢Δ • ίʔυͷ࣭Λ্͛ΔͨΊʹɺίʔυઃܭʹूத͢ΔͨΊʹ༨ ܭͳ͜ͱΛߟ͑ͳ͍Α͏ʹࣗಈԽɾΈԽ͢Δ