Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
生成 AI 時代のスナップショットテストってやつを見せてあげますよ(α版)
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
ojun
March 18, 2026
Programming
460
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
94
アセットのコンパイルについて
ojun9
0
300
Exit 8 for SwiftUI
ojun9
1
320
Swift Evolution かるた
ojun9
2
150
Xcode 16のPreviewModifierと@Previewableを活用した効率的なプレビュー方法の考察
ojun9
4
1.2k
Catch Up with Swift 5.10
ojun9
2
940
Overview: Swift OpenAPI Generator
ojun9
3
2.7k
if 式と switch 式による SwiftUI のプレビューエラー対策
ojun9
1
2.3k
楽しい夏休み!String Catalogs で新しい発見
ojun9
0
2.6k
Other Decks in Programming
See All in Programming
Verilogで学ぶCPU自作入門
uyuki234
8
4.2k
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
510
JIS keyboard support in Omarchy
lef237
0
140
Vue Fes Japan の “作る側”に関わってみて
naokihaba
0
160
APNsからLive Activityを開始する話
yumnumm
0
170
ハーネス設計入門 〜 基礎知識の整理から実務へのステップアップ 〜
kinopeee
28
33k
AmebaブログはKMPから卒業します
kmars0605
0
210
AIに “答え“を書かせるのを やめてみた
___akari11
0
120
Next.js: The final boss of Web Performance
guaca
0
290
FactoryBotをやめればRSpecは速くなるのか?
yuta_onishi_97
0
800
contenteditable と日本語入力に向き合う
colorful12
0
200
Railsのためのパスキー実践入門 〜マルチテナントSaaSでの意思決定〜
utakaha
3
780
Featured
See All Featured
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
590
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
33
5.3k
Embracing the Ebb and Flow
colly
88
5.2k
Un-Boring Meetings
codingconduct
0
460
30 Presentation Tips
portentint
PRO
1
430
The browser strikes back
jonoalderson
0
1.8k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
[RailsConf 2023] Rails as a piece of cake
palkan
59
7.1k
How to make the Groovebox
asonas
2
2.5k
Building Better People: How to give real-time feedback that sticks.
wjessup
371
20k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
600
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 ʹ͓͚Δը໘ͷࠩΛೝ͠ Ϛʔδ·ͰͷϦʔυλΠϜΛݮΒ͢͜ͱ͕Ͱ͖Δ
͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ