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
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
Search
ojun
March 18, 2026
Programming
420
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
ojun
March 18, 2026
More Decks by ojun
See All by ojun
配列と所有権
ojun9
0
85
アセットのコンパイルについて
ojun9
0
280
Exit 8 for SwiftUI
ojun9
1
310
Swift Evolution かるた
ojun9
2
150
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
1.1k
Catch Up with Swift 5.10
ojun9
2
930
Overview: Swift OpenAPI Generator
ojun9
3
2.6k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.3k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.6k
Other Decks in Programming
See All in Programming
SlackアプリとLambdaの 連携を構築した話
pawn_4_s
1
120
Android CLI
fornewid
0
220
Built Our Own Background Agent at LayerX
layerx
PRO
10
5.7k
複数の Claude Code が"放置"されてしまう問題をCLI ダッシュボードを自作して解決した話
sumihiro3
1
700
メールのエイリアス機能を履き違えない
isshinfunada
0
240
5分で問診!Composer セキュリティ健康診断
codmoninc
0
1.1k
仕様書を書く前にハーネスを作る - Agent Native開発は「探索を速く、判定を固く」
gotalab555
4
1.7k
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
390
バグを直したら useEffect が消えた
colorful12
3
630
属人化した知識を、 AIが辿れる地図にする
pkshadeck
PRO
1
190
いまどきの Codex で開発する visionOS アプリの開発スタイルについて
karad
0
150
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
5
1.9k
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Embracing the Ebb and Flow
colly
88
5.1k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
260
SEO in 2025: How to Prepare for the Future of Search
ipullrank
3
3.8k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
870
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.1k
BBQ
matthewcrist
89
10k
Design in an AI World
tapps
1
280
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
410
The browser strikes back
jonoalderson
0
1.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
1
370
Transcript
2026/03/18 @גࣜձࣾελϝϯ ੜ AI ࣌ͷεφοϓγϣοτςετ ͬͯͭΛݟͤͯ͋͛·͢Αʢα൛ʣ ojun ू·ΕSwift͖ʂSwiftѪձ vol.98
ࣗݾհ • Name: ojun • X: @ojun_9 • Company: DeNA
• Role: iOS ΞϓϦΤϯδχΞ
એ
Sakura.swift ΛΓ·͢ʂ try! Swift ͷલʹ Sakura.swift ΛΓ·͢ ͓ன͔ΒՖݟΛͯ͠ɺʹ͓ళΛ ିͬͯ͠͝൧Λ৯ͳ͕ΒLTΛ ΈΔ༧ఆͰ͢
Sakura.swift ΛΓ·͢ʂ LT ֤ਓ͕ਓੜʹ͍ͭͯޠͬͯ͘ΕΔ༧ఆͰ͢ ັྗతͳਓ͕ू·͍ͬͯΔͷͰɺͥͻ ͝ࢀՃ͍ͩ͘͞ʂ ͋ͱ 3 ۭ͍ͯ·͢ʂʂ
ൃදͷMotivation
ൃදͷMotivation ੜ AI ͍͢͜͝ͱʹͳͬͯ·͢ΑͶ ੜ࢈ੑ্͕͕ͬͨɾίʔυ͏ॻ͍ͯͳ͍ɾetc etc AI ͕มߋͨ͠ίʔυ͕ UI ͱͯ͠ͲͷΑ͏ʹมΘ͍ͬͯΔ͔Λ
αΫοͱΓ͍ͨ
ൃදͷMotivation ੜ AI ͍͢͜͝ͱʹͳͬͯ·͢ΑͶ ੜ࢈ੑ্͕͕ͬͨɾίʔυ͏ॻ͍ͯͳ͍ɾetc etc AI ͕มߋͨ͠ίʔυ͕ UI ͱͯ͠ͲͷΑ͏ʹมΘ͍ͬͯΔ͔Λ
αΫοͱΓ͍ͨ → εφοϓγϣοτͰղܾ͢Δ
ࠓ͢͜ͱ
ࠓ͢͜ͱ 1. Γ͍ͨ͜ͱεφοϓγϣοτʮςετʯͰͳ͍ 2. εφοϓγϣοτςετʹ͍ͭͯ 3. Swift 6.2 ͷ৽ػೳʹΛ͚ͭΔ 4.
ணΛಘ࣮ͯ͢Δ
Γ͍ͨ͜ͱεφοϓγϣοτ ʮςετʯͰͳ͍
Γ͍ͨ͜ͱεφοϓγϣοτʮςετʯͰͳ͍ AI ͕มߋͨ͠ίʔυ͕ UI ͱͯ͠ͲͷΑ͏ʹมΘ͍ͬͯΔ͔Λ αΫοͱΓ͍ͨ PR Λ Approve ͯ͠Ϛʔδ͢ΔͨΊͷϦʔυλΠϜɺͳ͍͠ɺίετΛ
ݮΒ͍ͨ͠
Γ͍ͨ͜ͱεφοϓγϣοτʮςετʯͰͳ͍ AI ͕มߋͨ͠ίʔυ͕ UI ͱͯ͠ͲͷΑ͏ʹมΘ͍ͬͯΔ͔Λ αΫοͱΓ͍ͨ PR Λ Approve ͯ͠Ϛʔδ͢ΔͨΊͷϦʔυλΠϜɺͳ͍͠ɺίετΛ
ݮΒ͍ͨ͠ ↓ ը૾Λൺֱͯ͠ test Λམͱ͢ͱ͔Βͳ͍
εφοϓγϣοτςετʹ͍ͭͯ
εφοϓγϣοτςετʹ͍ͭͯ εφοϓγϣοτςετΛಋೖ͍ͯ͠ΔਓͲΕ͘Β͍͍·͔͢ʁ🙋
εφοϓγϣοτςετʹ͍ͭͯ εφοϓγϣοτςετΛಋೖ͍ͯ͠ΔਓͲΕ͘Β͍͍·͔͢ʁ🙋 ಋೖ͠Α͏ͱͨ͠ OR ڵຯ͕͋ΔਓͲΕ͘Β͍͍·͔͢ʁ🙋
εφοϓγϣοτςετͷ͠͞ ίϯϙʔωϯτ͕Ճɾআ͞ΕΔͨͼʹςετέʔεΛ मਖ਼͢Δඞཁ͕͋Δ
εφοϓγϣοτςετͷ͠͞ ίϯϙʔωϯτ͕Ճɾআ͞ΕΔͨͼʹςετέʔεΛ मਖ਼͢Δඞཁ͕͋Δ ↓ ͜Ε͕͔ͳΓͷᐫʹͳ͍ͬͯΔ
Swift 6.2 ͷ৽ػೳ
Swift 6.2 ͷ৽ػೳ Swift 6.2 ʢswift-testingଆʣʹ Attachment ͱ͍͏ػೳ͕Ճ͞Εͨ test ʹରͯ͠
String ͕ Image fi le ͳͲΛϨίʔυͰ͖Δ
Swift 6.2 ͷ৽ػೳ Swift 6.2 ʢswift-testingଆʣʹ Attachment ͱ͍͏ػೳ͕Ճ͞Εͨ
Swift 6.2 ͷ৽ػೳ Attachements ͱ͍͏υΩϡϝϯτ͕ Apple ͔Βग़ͯͯඇৗʹ༗༻
Swift 6.2 ͷ৽ػೳ ViewΛੜͯͦ͠ͷ݁ՌΛ record ͢Δ͜ͱ͕Մೳʹͳͬͨ
Preview ͱͷѱຐ߹ମ
Preview ͱͷѱຐ߹ମ ViewΛ݁ՌΛϨίʔυͰ͖ΔΑ͏ʹͳͬͨͱ͍͑ ίϯϙʔωϯτΛՃ͢Δͨͼʹɺςετέʔε͕ແݶʹ૿͑Δ
Preview ͱͷѱຐ߹ମ ͦͷ࣌ʹʹ͍ͭͨͷ͕ɺPreview ϚΫϩ
Preview ͱͷѱຐ߹ମ
Preview ͱͷѱຐ߹ମ
Preview ͱͷѱຐ߹ମ
Preview ͱͷѱຐ߹ମ ͱ͍͏͜ͱɺΞϓϦதͷPreviewͷΛશͯूΊͯ Testଆʹͤ1ͭͷςετϝιου͚ͩͰϨίʔυ͕Ͱ͖ΔͷͰ💡
Preview ͱͷѱຐ߹ମ SwiftSyntax Λؤுͬͯॻ͍ͯ Preview ͷதΛࣗಈͰऩू ͢Δ࣮ΛՃ
Preview ͱͷѱຐ߹ମ CILͱ࣮ͯ͠ߦ͢Δ͜ͱͰ ςετ࣌ʹ Preview ͔ΒूΊͨ શͯͷ View ΛࣗಈͰੜ͢Δ Ͱ͖ͨ
Preview ͱͷѱຐ߹ମ ͋ͱ test ϝιουͷதͰ for ͰϨίʔυॲཧΛճͯ͠ ্͛Εશͯͷ View ͷ
ϨίʔυΛอଘͰ͖Δ
CI Λۦͯࠩ͠ΛPRʹషΔ
CI Λۦͯࠩ͠ΛPRʹషΔ Base Branch ͱ Target Branch ͷ྆ํͰςετΛ·Θ͢ ↓ ͦΕͧΕͰը૾͕औಘͰ͖ΔͷͰɺը૾ͷൺֱΛߦ͏
↓ ͕ࠩ͋Εɺͦͷ݁ՌΛ PR ʹίϝϯτͰషΓ͚Δ
ςετΛ·Θ͢ ୯७ʹςετΛ·Θ͢ͱɺϨίʔυ༻ͷςετҎ֎ͷςετ ճͬͯ͠·͍ޮ͕ѱ͍
ςετΛ·Θ͢ ୯७ʹςετΛ·Θ͢ͱɺϨίʔυ༻ͷςετҎ֎ͷςετ ճͬͯ͠·͍ޮ͕ѱ͍ ͦ͜ͰҎԼͷίϚϯυΛར༻ͯ͠ɺಛఆͷςετϝιου͚ͩΛ࣮ߦ͢Δ
ςετΛ·Θ͢ ͪͳΈʹϨίʔυ࠷ऴతʹੜ͞ΕΔ xcresult ͷԞఈʹຒଂ͞ΕΔ
ςετΛ·Θ͢ ͪͳΈʹϨίʔυ࠷ऴతʹੜ͞ΕΔ xcresult ͷԞఈʹຒଂ͞ΕΔ ͳͷͰҎԼͷΑ͏ʹͯ͠Ϩίʔυͨ͠ใΛ۷Γग़͢ඞཁ͕͋Δ
ςετΛ·Θ͢ ͜ΕʹΑͬͯ baseBranch ͱ targetBranch ͦΕͧΕͰϨίʔυͨ͠ View ͷը૾͕खʹೖΔ
ςετΛ·Θ͢ .xcresult ͷΞΠίϯՄѪ͍ ͜ͷϑΝΠϧ Xcode Ͱ։͚Δ͕ ݟΕΔใ͕গͳ͍ͷ͕ Ͱ͖ΕࣗͰܗͯ͋͛͠Δͷ͕ ྑͦ͞͏
ը૾Λൺֱ͢Δ ͋ͱը૾Λൺֱ͢ΕOK
ը૾Λൺֱ͢Δ ͋ͱը૾Λൺֱ͢ΕOK ͪΖΜ Swift Ͱ࣮
ը૾Λൺֱ͢Δ ൺֱͨ͠ը૾৽͘͠ϒϥϯνΛ࡞ͬͯͦ͜ʹରͯ͠Ξοϓ͢Δ ↓ ͦ͏͠ͳ͍ͱɺPR ্ͷίϝϯτͰϏδϡΞϧͰݟΕͳ͘ͳΔ
ը૾Λൺֱ͢Δ ࣮ߦ͢Δ͜ͱͰࠩΛPRʹ ରͯ͠షͬͯ͘ΕΔ
ը૾Λൺֱ͢Δ ࣮ߦ͢Δ͜ͱͰࠩΛPRʹ ରͯ͠షͬͯ͘ΕΔ ↓ ֬ೝ͕Ͱ͖ΔͷͰϚʔδ·Ͱͷ ϦʔυλΠϜ͕͘ͳΔ
·ͱΊ Swift 6.2 ͔Βར༻Ͱ͖Δ attachment ͷΈ & PreviewMacro & SwiftSnytax
Λ߹ମͤ͞Δ͜ͱͰશͯͷ View ͷը૾ΛऔΔ͜ͱ͕Ͱ͖Δ ͦΕΛ CI ͱΈ߹ΘͤΔ͜ͱʹΑΓɺPR ʹ͓͚Δը໘ͷࠩΛೝ͠ Ϛʔδ·ͰͷϦʔυλΠϜΛݮΒ͢͜ͱ͕Ͱ͖Δ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ