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
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
Search
Atsuya Sato
September 30, 2025
Programming
2
550
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
2025/10/1に開催された extension DC 2025 Day1@DeNA で発表した「Pull-Requestの内容を1クリックで動作確認可能にするワークフロー」の資料です
Atsuya Sato
September 30, 2025
Tweet
Share
More Decks by Atsuya Sato
See All by Atsuya Sato
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
850
Pastelaのアプリ内課金開発の裏側 / pixiv-app-night-202502-pastela-iap
natmark
2
140
詳解UIWindow
natmark
3
4.7k
画面最前面に表示されるデバッグツールを作る
natmark
2
270
最低サポートOSバージョンをあげた時のストア表示について / potatotips81-store-page-apperance-with-deployment-target-updated
natmark
2
710
施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜
natmark
9
8.3k
チームでSwiftUIを書くために / After Party iOSDC Japan 2021 SwiftUI
natmark
3
1.1k
iOSDC_SwiftUI_Text
natmark
4
5.7k
Service development lecture in Cookpad Online Summer Internship 2020
natmark
1
8k
Other Decks in Programming
See All in Programming
ネストしたdata classの面倒な更新にさようなら!Lensを作って理解するArrowのOpticsの世界
shiita0903
1
290
Webサーバーサイド言語としてのRustについて
kouyuume
1
5.1k
KoogではじめるAIエージェント開発
hiroaki404
1
400
TransformerからMCPまで(現代AIを理解するための羅針盤)
mickey_kubo
7
6.1k
エンジニアに事業やプロダクトを理解してもらうためにやってること
murabayashi
0
140
Designing Repeatable Edits: The Architecture of . in Vim
satorunooshie
0
250
CSC305 Lecture 14
javiergs
PRO
0
250
自動テストのアーキテクチャとその理由ー大規模ゲーム開発の場合ー
segadevtech
2
750
開発組織の戦略的な役割と 設計スキル向上の効果
masuda220
PRO
10
2.1k
組織もソフトウェアも難しく考えない、もっとシンプルな考え方で設計する #phpconfuk
o0h
PRO
10
3.4k
Pythonに漸進的に型をつける
nealle
1
160
What's New in Web AI?
christianliebel
PRO
0
120
Featured
See All Featured
A designer walks into a library…
pauljervisheath
210
24k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1k
Balancing Empowerment & Direction
lara
5
730
How To Stay Up To Date on Web Technology
chriscoyier
791
250k
How to Ace a Technical Interview
jacobian
280
24k
Why Our Code Smells
bkeepers
PRO
340
57k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
Documentation Writing (for coders)
carmenintech
76
5.1k
Visualization
eitanlees
150
16k
The Cult of Friendly URLs
andyhume
79
6.7k
The Cost Of JavaScript in 2023
addyosmani
55
9.1k
Transcript
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO 2025/10/1 extensionDC 2025 Day1@DeNA Pull-Requestͷ༰Λ1ΫϦοΫͰ ಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔ atsuyan
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO 𝕏 !O@BUNBSL atsuyan 1BTUFMBʛJ04ΤϯδχΞ • iPad͚ϖΠϯτπʔϧ Pastelaͷ։ൃΛ୲ •
ϘϧμϦϯά͕झຯ🧗
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO Pull-Requestͷಈ࡞֬ೝͬͯ Ͳ͏ͯ͠·͔͢ʁ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO Pull-Requestͷಈ࡞֬ೝʹ͑ͦ͏ͳํ๏ • ରϒϥϯνΛpullͯ͠खݩͰϏϧυ • AdHocϏϧυΛ༻ҙͯ͠ • TestFlightΛར༻ͯ͠ • (TestFlightΛ࡞)
• e.g. ΫοΫύουࣾͷhaneda (https://speakerdeck.com/slightair/iosdc-2018) • ͜ΕADEP(Apple Developer Enterprise Program)͕ඞཁͳͷͰɺ୭ͰͰ͖Δ ํ๏Ͱͳ͍…
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ରϒϥϯνΛpullͯ͠खݩͰϏϧυ Pros • XcodeͰϏϧυ͢ΔͨΊɺσόοΨ͕ར༻Ͱ͖Δ • LLDB • Debug Memory
Graph / Debug View Hierarchy Cons • खݩͰͷϏϧυʹ͕͔͔࣌ؒΔ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO AdHocϏϧυΛ༻ҙͯ͠ Pros • Appleͷ৹͕ࠪෆཁ • όΠφϦΛApp Store ConnectʹΞοϓϩʔυ͢Δඞཁ͕ͳ͍ Cons
• σόΠεཧ͕ඞཁ • ར༻͍ͨ͠σόΠεͷUUIDΛProvisioning Pro fi leʹؚΊͳ͍ͱ ͍͚ͳ͍
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO TestFlightΛར༻ͯ͠ Pros • σόΠεཧ͕ෆཁ (Test fl ihtͷট͚ͩͰOK) Cons •
ϨʔτϦϛοτ͕ଘࡏ͢Δ (ITMS-90383) • https://docs.fastlane.tools/actions/deliver/ ʹΑΔͱ150/dayΒ͍͠ • TestFlightͰՄೳʹͳΔ·Ͱʹॲཧ͕͔͔࣌ؒΔ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO खݩͰϏϧυ TestFlight AdHoc ϨϏϡϫʔͷ × (Ϗϧυ͕ඞཁ) ̋ ̋
ݕূͷཧίετ - ̋ × (UUID͕ඞཁ) ৴Մೳճ - × (ϨʔτϦϛοτ༗Γ) ̋ σόοά͢͠͞ ˕ (σόοΨ͕ར༻Մ) ̋ ̋ ΞϓϦͷ࣮ߦ γϛϡϨʔλʔ্ or ࣮ػ ࣮ػ ࣮ػ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO खݩͰϏϧυ TestFlight AdHoc ϨϏϡϫʔͷ × (Ϗϧυ͕ඞཁ) ̋ ̋
ݕূͷཧίετ - ̋ × (UUID͕ඞཁ) ৴Մೳճ - × (ϨʔτϦϛοτ༗Γ) ̋ σόοά͢͠͞ ˕ (σόοΨ͕ར༻Մ) ̋ ̋ ΞϓϦͷ࣮ߦ γϛϡϨʔλʔ্ or ࣮ػ ࣮ػ ࣮ػ ৽نػೳͷ࣮ɺ͋Δఔن ͕େ͖͍มߋͷ߹ʹɺ σόοΨΛ׆༻ͯ͠ϝϞϦ༻ྔ ΛνΣοΫͨ͠Γɺ ϒϨʔΫϙΠϯτΛஔ͖ͳ͕Βॲ ཧ͕ݺΕ͍ͯΔ͔֬ೝ͠ͳ͕ Βɺಈ࡞֬ೝ͢Δࡍʹ༗ޮͦ͏
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO खݩͰϏϧυ TestFlight AdHoc ϨϏϡϫʔͷ × (Ϗϧυ͕ඞཁ) ̋ ̋
ݕূͷཧίετ - ̋ × (UUID͕ඞཁ) ৴Մೳճ - × (ϨʔτϦϛοτ༗Γ) ̋ σόοά͢͠͞ ˕ (σόοΨ͕ར༻Մ) ̋ ̋ ΞϓϦͷ࣮ߦ γϛϡϨʔλʔ্ or ࣮ػ ࣮ػ ࣮ػ ։ൃऀҎ֎ͷεςʔΫϗϧμʔ ʹಈ࡞Λݟͯཉ͍͠߹ɺ ͋Δఔ͕ߴ͍ঢ়ଶͰ ͍ͨ͠߹ʹ༗ޮͦ͏
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO खݩͰϏϧυ TestFlight AdHoc ϨϏϡϫʔͷ × (Ϗϧυ͕ඞཁ) ̋ ̋
ݕূͷཧίετ - ̋ × (UUID͕ඞཁ) ৴Մೳճ - × (ϨʔτϦϛοτ༗Γ) ̋ σόοά͢͠͞ ˕ (σόοΨ͕ར༻Մ) ̋ ̋ ΞϓϦͷ࣮ߦ γϛϡϨʔλʔ্ or ࣮ػ ࣮ػ ࣮ػ ཧ͞Εͨͷར༻ऀʹݶఆ͞ ΕΔ͕ɺPRʹίϛοτΛੵΉ ʹ৴͢ΔΑ͏ͳӡ༻ʹ༗ޮͦ͏
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ͜͜ͰϫΨϚϚͳatsuyan͞Μݴ͍·ͨ͠
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO • ܰඍͳมߋͷಈ࡞֬ೝΛखݩͷϏϧυແ͠Ͱ ֬ೝ͍ͨ͠ʂ • Ͱ৴ରͷσόΠεཧͨ͘͠ແ͍ʂ • TestflightͷϨʔτϦϛοτؾʹͨ͘͠ແ͍ʂ (γϛϡϨʔλʔ্Ͱͷಈ࡞֬ೝͰ͍͍Α)
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ͭ·Γʁ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ? ϨϏϡϫʔͷ ̋ (खݩϏϧυͨ͘͠ͳ͍) ݕূͷཧίετ ̋ (ཧͨ͘͠ͳ͍) ৴Մೳճ
̋ (ϨʔτϦϛοτΛؾʹͨ͘͠ͳ͍) σόοά͢͠͞ ̋ ΞϓϦͷ࣮ߦ γϛϡϨʔλͰΑ͍ K ͜Ε͕ཉ͍͠ʂ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ͱ͜ΖͰ… ࣮ػͰͷ࣮ߦͱγϛϡϨʔλʔͰͷ࣮ߦͬͯԿ͕ҧ͏ͷʁ • ࣮ػʹΠϯετʔϧ͞ΕΔΞϓϦ .ipa (iOS Package Archive) ͱ͍͏ϑΝΠϧܗࣜ
<App>.ipa/Payload/<App>.app/embedded.mobileprovision ʹϓϩϏδϣχϯάϓϩϑΝΠϧ͕ଘࡏ͢Δ • γϛϡϨʔλͰ࣮ߦ͞ΕΔΞϓϦ .app ͱ͍͏ܗࣜ (ͨͩͷϑΥϧμܗࣜ) .ipa ʹؚ·ΕΔ Payload/<App>.app ͱܗࣜಉ͕ͩ͡ɺγϛϡϨʔλ࣮ߦ͚ ʹ࡞͞Εͨ .app όϯυϧʹ embedded.mobileprovision ଘࡏ͠ͳ͍
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ͭ·Γʁ γϛϡϨʔλͰ࣮ߦՄೳͳΞϓϦͷܗࣜͰ͋ΕɺϓϩϏδϣχϯ άϓϩϑΝΠϧແ͠Ͱ࣮ߦͰ͖Δ • ͷཧ͕ෆཁ • .app όϯυϧΛCIͰ࡞ͯ͠Artifactͱͯ͠อଘ͓͚ͯ͠ɺ։ ൃऀͷखݩͰϏϧυ͍Βͣ
• Test fl ightͷΞοϓϩʔυ͍Βͣ
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ࣗͷνʔϜͰӡ༻͍ͯ͠ΔϫʔΫϑϩʔ 1. CIͰγϛϡϨʔλ͚ͷΞʔςΟϑΝΫτΛ࡞Δ 1. 2. ΫϥυετϨʔδʹ࡞ͨ͠γϛϡϨʔλ͚ͷΞʔςΟϑΝΫτΛอଘ͢Δ 3. CIͰϏϧυ͕ऴΘͬͨΒPull-RequestʹΞʔςΟϑΝΫτ͕อଘ͞ΕͨURL͕ࣗ ಈͰίϝϯτ͞ΕΔΑ͏ʹ͢Δ
4. ։ൃऀ͕URLΛΫϦοΫ͢ΔͱɺࣗಈͰΞʔςΟϑΝΫτͷμϯϩʔυ & γ ϛϡϨʔλͷىಈΛߦ͍ɺγϛϡϨʔλʹΞϓϦͷΠϯετʔϧ͕͞ΕΔ $ xcodebuild archive -destination “generic/platform=iOSSimulator” …
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO ࣗͷνʔϜͰӡ༻͍ͯ͠ΔϫʔΫϑϩʔ 1. CIͰγϛϡϨʔλ͚ͷΞʔςΟϑΝΫτΛ࡞Δ 1. 2. ΫϥυετϨʔδʹ࡞ͨ͠γϛϡϨʔλ͚ͷΞʔςΟϑΝΫτΛอଘ͢Δ 3. CIͰϏϧυ͕ऴΘͬͨΒPull-RequestʹΞʔςΟϑΝΫτ͕อଘ͞ΕͨURL͕ࣗ ಈͰίϝϯτ͞ΕΔΑ͏ʹ͢Δ
4. ։ൃऀ͕URLΛΫϦοΫ͢ΔͱɺࣗಈͰΞʔςΟϑΝΫτͷμϯϩʔυ & γ ϛϡϨʔλͷىಈΛߦ͍ɺγϛϡϨʔλʹΞϓϦͷΠϯετʔϧ͕͞ΕΔ $ xcodebuild archive -destination “generic/platform=iOSSimulator” …
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO IUUQTHJUIVCDPN4IPQJGZUPQIBU
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO TophatΛར༻ͨ͠ϫʔΫϑϩʔͷհಈը ※LTͷईʹऩΊΔͨΊʹഒ & ϩʔσΟϯάՕॴΛΧοτͯ͠·͢ (ΞϓϦͷόΠφϦαΠζʹґΓ·͕࣮͢ࡍʹϦϯΫΫϦοΫͯ͠1͘Β͍͔͔Γ·͢)
1VMM3FRVFTUͷ༰ΛΫϦοΫͰಈ࡞֬ೝՄೳʹ͢ΔϫʔΫϑϩʔʛBUTVZBO TophatΛ׆༻͢Δ • ෳσόΠεΛબͯ͠ಉ࣌ʹΠϯετʔϧͰ͖ΔͷͰɺαΠζ ҧ͍ͷͷݟͨΛνΣοΫͨ͠Γ͢Δͷʹศར • AdHocϏϧυͨ͠ .ipa Λ༻ҙ͢Ε࣮ػ͚ͷΠϯετʔϧ ಉ͡Α͏ʹ1ΫϦοΫͰՄೳ
• Tophat v2ͰArtifact ProviderͷΈ͕Ͱ͖ͨ • Bitrise Extensionsͷαϙʔτ͕ެࣜͰ͞Ε͍ͯΔ BitriseΛCIʹͬͯΔ߹BitriseͷPATΛTophatʹ ೖΕΔ͚ͩͰಋೖͰ͖Δʂ 🎩 K Tophatͱͯศར