$30 off During Our Annual Pro Sale. View Details »
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
570
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
950
Pastelaのアプリ内課金開発の裏側 / pixiv-app-night-202502-pastela-iap
natmark
2
140
詳解UIWindow
natmark
3
4.8k
画面最前面に表示されるデバッグツールを作る
natmark
2
280
最低サポートOSバージョンをあげた時のストア表示について / potatotips81-store-page-apperance-with-deployment-target-updated
natmark
2
730
施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜
natmark
9
8.4k
チームで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
TUIライブラリつくってみた / i-just-make-TUI-library
kazto
1
410
Findy AI+の開発、運用におけるMCP活用事例
starfish719
0
1.6k
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
Navigating Dependency Injection with Metro
l2hyunwoo
1
160
AIエージェントを活かすPM術 AI駆動開発の現場から
gyuta
0
450
Claude Codeの「Compacting Conversation」を体感50%減! CLAUDE.md + 8 Skills で挑むコンテキスト管理術
kmurahama
1
590
宅宅自以為的浪漫:跟 AI 一起為自己辦的研討會寫一個售票系統
eddie
0
520
モデル駆動設計をやってみようワークショップ開催報告(Modeling Forum2025) / model driven design workshop report
haru860
0
280
実は歴史的なアップデートだと思う AWS Interconnect - multicloud
maroon1st
0
240
ゲームの物理 剛体編
fadis
0
360
認証・認可の基本を学ぼう後編
kouyuume
0
240
Deno Tunnel を使ってみた話
kamekyame
0
190
Featured
See All Featured
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
0
26
Building the Perfect Custom Keyboard
takai
1
660
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
Accessibility Awareness
sabderemane
0
18
Organizational Design Perspectives: An Ontology of Organizational Design Elements
kimpetersen
PRO
0
40
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Embracing the Ebb and Flow
colly
88
4.9k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
1.7k
Un-Boring Meetings
codingconduct
0
160
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
2
61
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
0
79
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
110
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ͱͯศར