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
660
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Pull-Requestの内容を1クリックで動作確認可能にするワークフロー
2025/10/1に開催された extension DC 2025 Day1@DeNA で発表した「Pull-Requestの内容を1クリックで動作確認可能にするワークフロー」の資料です
Atsuya Sato
September 30, 2025
More Decks by Atsuya Sato
See All by Atsuya Sato
アプリ内にテーマ機能を実装する / pixiv-app-talk-202604-theme-feature
natmark
0
48
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
1.5k
Pastelaのアプリ内課金開発の裏側 / pixiv-app-night-202502-pastela-iap
natmark
2
200
詳解UIWindow
natmark
3
5.5k
画面最前面に表示されるデバッグツールを作る
natmark
2
340
最低サポートOSバージョンをあげた時のストア表示について / potatotips81-store-page-apperance-with-deployment-target-updated
natmark
2
800
施策基盤としてのディープリンク〜なめらかにアプリが開く体験のために〜
natmark
9
9k
チームでSwiftUIを書くために / After Party iOSDC Japan 2021 SwiftUI
natmark
3
1.2k
iOSDC_SwiftUI_Text
natmark
4
5.9k
Other Decks in Programming
See All in Programming
VibeCodingからAgenticWorkflowへ
starfish719
0
330
壊れたパーサから始める関数型設計と構成的なパーサ #fp_matsuri
raiga0310
2
450
AI時代、エンジニアはどう育つのか -未経験エンジニアの成長を間近で見て考えたこと-
thasu0123
0
220
夏だ!祭りだ!祭りとはドメインモデリングでは?
ryugen04
0
190
言語を使う側から、作る側へ。 自作 Lisp で得た新たな気づき。
andpad
0
160
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
670
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
480
生成AIで帳票OCRが「簡単に」作れる時代になった?
kon_shou
0
630
メールのエイリアス機能を履き違えない
isshinfunada
0
230
Go 1.27 における memory allocation の高速化
andpad
0
110
Claude CodeとAgentCore Gatewayを繋ぐ際の認証認可 / Authentication and authorization when connecting Claude Code with AgentCore Gateway
har1101
1
260
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
540
Featured
See All Featured
Scaling GitHub
holman
464
140k
Technical Leadership for Architectural Decision Making
baasie
3
470
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
530
Skip the Path - Find Your Career Trail
mkilby
1
180
Building AI with AI
inesmontani
PRO
1
1.1k
30 Presentation Tips
portentint
PRO
1
360
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
200
Designing for humans not robots
tammielis
254
26k
My Coaching Mixtape
mlcsv
0
210
Money Talks: Using Revenue to Get Sh*t Done
nikkihalliwell
0
460
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
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ͱͯศར