Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥
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
複数人でのCLI/Infrastructure as Codeの暮らしを良くする
shmokmt
5
2.3k
Deno Tunnel を使ってみた話
kamekyame
0
190
大規模Cloud Native環境におけるFalcoの運用
owlinux1000
0
170
公共交通オープンデータ × モバイルUX 複雑な運行情報を 『直感』に変換する技術
tinykitten
PRO
0
150
Flutter On-device AI로 완성하는 오프라인 앱, 박제창 @DevFest INCHEON 2025
itsmedreamwalker
1
140
LLM Çağında Backend Olmak: 10 Milyon Prompt'u Milisaniyede Sorgulamak
selcukusta
0
130
FluorTracer / RayTracingCamp11
kugimasa
0
240
手が足りない!兼業データエンジニアに必要だったアーキテクチャと立ち回り
zinkosuke
0
790
組み合わせ爆発にのまれない - 責務分割 x テスト
halhorn
1
160
Jetpack XR SDKから紐解くAndroid XR開発と技術選定のヒント / about-androidxr-and-jetpack-xr-sdk
drumath2237
1
160
Go コードベースの構成と AI コンテキスト定義
andpad
0
130
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.2k
Featured
See All Featured
Prompt Engineering for Job Search
mfonobong
0
120
A brief & incomplete history of UX Design for the World Wide Web: 1989–2019
jct
1
260
Tell your own story through comics
letsgokoyo
0
750
The Cost Of JavaScript in 2023
addyosmani
55
9.4k
Building the Perfect Custom Keyboard
takai
1
660
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
A designer walks into a library…
pauljervisheath
210
24k
Code Reviewing Like a Champion
maltzj
527
40k
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
510
BBQ
matthewcrist
89
9.9k
Google's AI Overviews - The New Search
badams
0
860
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
0
290
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ͱͯศར