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
iOSDC.pdf
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
ビスター(Vistar)
September 20, 2025
Programming
1.1k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOSDC.pdf
ビスター(Vistar)
September 20, 2025
Other Decks in Programming
See All in Programming
C#の現在地 進化の歴史と、AI時代の.NET Everywhere
neuecc
5
4.2k
Omarchy Tokyo やると聞いて UMPC 買ってセットアップしてきた
mtsmfm
0
180
[2026-09-26]空論ジェネリックプロセス~テスト資産とAIで紡ぐ、再現可能なパフォーマンスチューニングの話~
tosite
0
220
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
8.9k
世界の中心で、AI(App Intents)をさけぶ ー App Intents中心設計の実践ガイド
touyou
0
700
Intent as Code
shoppingjaws
6
1.1k
すこし踏み込む CancellationToken
htkym
2
1.3k
wkhtmltopdfの次どうするか問題2026
willnet
2
1.8k
Java 27新機能 / Java 27 new features
kishida
2
180
ソニーのクラウド共通基盤の変遷とAI時代の開発スタイルに合わせた進化 / The Journey of Sony’s Common Cloud Platform and Its Evolution for AI-Native Development
kenjiyoneyama
0
150
AI Agent時代のリアーキテクチャ戦略と実践
hokaccha
9
5.1k
AHC070解法紹介
eijirou
0
140
Featured
See All Featured
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
3.1k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
250
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
490
Into the Great Unknown - MozCon
thekraken
41
2.7k
How to make the Groovebox
asonas
2
2.5k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
1
610
ラッコキーワード サービス紹介資料
rakko
1
5M
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
AI Search: Implications for SEO and How to Move Forward - #ShenzhenSEOConference
aleyda
1
1.4k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
128
56k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
Transcript
4XJGU6*࣌ͷεΫγϣอޢ ʙηΩϡΞͳ7JFXͷ࡞Γํʙ #ZϏελʔ!-NTTZOD J04%$+BQBO݄ʢʣʙ 5SBDL %
"CPVU.F Ϗελʔ 7JTUBS • ݸਓ։ൃ • 41.ύοέʔδ։ൃ • 1SJWBUF"1*ݚڀ
ࠓεΫγϣอޢ͕͔ͬͨ • .JDSPTPGU 5FBNT ʮ1SFWFOU4DSFFO$BQUVSFʯػೳൃද • 9$IBU ʮ#MPDL TDSFFOTIPUTʯػೳެ։ •
J1IPOFͷϚΠφϯόʔΧʔυʢຊʣ ΥϨοτΞϓϦͰඪ४࣮ࡁΈ
͑Δ"1*ʁ
ը໘ऩؔ࿈ͷ"1* • @Environment(¥.isSceneCaptured) • UITraitCollection.sceneCaptureState • UIScreen.isCaptured Deprecated
εΫϦʔϯγϣοτؔ࿈ͷ"1* •UIApplication.userDidTakeScreenshotNot ification •UIApplication.UserDidTakeScreenshotMes sage ֤OS 26+ ͍ͣΕDidͳͷͰࣄલݕ͕ग़དྷͳ͍
εΫϦʔϯγϣοτؔ࿈ͷ"1* •func privacySensitive() -> some View •func contentCaptureProtected() -> some
CompositorContent macOS 26 & visionOS 26 Only
εΫϦʔϯγϣοτؔ࿈ͷ"1* •func contentCaptureProtected( _ isActive: Bool = true ) ->
some View visionOS 26.0+ only iOSʹల։͞Ε͍ͯͳ͍...
J04ͷతͳ"1*ͰεΫγϣ͔Β ҙͷ7JFXΛอޢ͢Δ͜ͱͰ͖ͳ͍
6*,JUͰͲ͏͢Δʁ
6*,JUͰͲ͏͢Δʁ •UITextFieldͷisSecureTextEntryΛར༻͢Δ •UITextFieldͷSubview • _UITouchPassthroughView • _UITextLayoutCanvasView อޢ͍ͨ͠7JFXΛαϒϏϡʔʹ͢Δ
4XJGU6*ͰͷϫʔΫΞϥϯυ CaptureProtectedViewController<Content: View> - containerView: UIView? _UITextLayoutCanvasViewΛऔΓग़͢ - isActive: Bool
- content: () -> Content + init(_: Bool, @ViewBuilder content: @escaping () -> Content) + viewDidLoad() UIHostingControllerΛར༻ͯ͠4XJGU6*ͷ7JFXΛ _UITextLayoutCanvasViewͷαϒϏϡʔʹ͢Δ
4XJGU6*ͰͷϫʔΫΞϥϯυ UIHostingController 4XJGU6*$POUFOU UIViewController Representable CaptureProtected ViewController 4XJGU6*ͷ7JFX
4XJGU6*ͰͷϫʔΫΞϥϯυ • .environment()ͷө ࢀߟ 88%$6*,*UτϨΠτγεςϜͷ׆༻ • ϨΠΞτͷ่Ε • *NBHF3FOEFSFS"1*ͷ੍ݶ
4XJGU6*ͰͷϫʔΫΞϥϯυ •UITextFieldͷisSecureTextEntryΛར༻͢Δ •UITextFieldͷSubview • _UITouchPassthroughView • _UITextLayoutCanvasView อޢ͍ͨ͠7JFXΛαϒϏϡʔʹ͢Δ
ͳͥ_UITextLayoutCanvasView εΫϦʔϯγϣοτʹөΒͳ͍ʁ
ΈΛௐΔ •-[UITextField setSecureTextEntry:]Λ 4ZNCPMJD#SFBLQPJOUͱͯ͠ηοτ ˠελοΫτϨʔεΛௐΔ
ΈΛௐΔ $"-BZFSΦϒδΣΫτʹରͯ͠ηϨΫλ TFU%JTBCMF6QEBUF.BTLͷϝιουΛݺͼग़͍ͯ͠Δ Y$"-BZFS YTFU%JTBCMF6QEBUF.BTL YYPSY 9DPEFͰͷελοΫτϨʔεͷදࣔ
࣮ݧ "QQ3FWJFX(VJEFMJOFT⚠ 4PGUXBSF3FRVJSFNFOUT"QQTNBZPOMZVTFQVCMJD"1*T IUUQTEFWFMPQFSBQQMFDPNBQQTUPSFSFWJFXHVJEFMJOFTTPGUXBSFSFRVJSFNFOUT
࣮ݧ 9DPEF--%#ίϚϯυʹΑΔ$"-BZFSͷશϝιουදࣔ
ΈΛௐΔ •0CKFDUJWF$༝དྷͷ,FZ7BMVF$PEJOHΛར༻ ࣮ݧ༻ͷ؆қίʔυ
࣮ݧ •EJTBCMF6QEBUF.BTL ʹΑ੍ͬͯޚ͞Ε͍ͯΔ →4QSJOH#PBSEʹΑΔࡱӨʹ ֘ϨΠϠʔؚ͕·Εͳ͍
4XJGU6*Ͱͷར༻ํ๏ͷఏҊ
4XJGU6*Ͱͷར༻ํ๏ •ϨΠϠʔͱؚͯ͠·Εແ͍͜ͱΛར༻͢Δ .mask(_:)
UIViewRepresentable _UITextLayoutCanvasView ͳͲ EJTBCMF6QEBUF.BTL͕ઃఆ͞Εͨ-BZFSΛ࣋ͭ6*7JFX backgroundColor = .black .mask { }
εΫγϣͷॠ͚ؒͩөΔ7JFXम০ࢠ
•func luminanceToAlpha() -> some View "EETBMVNJOBODFUPBMQIBF⒎FDUUPUIJTWJFX J04 J1BE04
.BD$BUBMZTU NBD04 UW04 WJTJPO04 XBUDI04 ࢀߟ EFWFMPQFSBQQMFDPN
.mask { } .background(.white) .compotisionGroup() .luminanceToAlpha()
ࢀߟ •AVSampleBufferDisplayLayer() .preventsCapture *OEJDBUFTUIBUJNBHFEBUBTIPVMECFQSPUFDUFE GSPNDBQUVSFࢀߟ EFWFMPQFSBQQMFDPN อޢର*04VSGBDFTͰͳ͍
ࢀߟ •'BJS1MBZ4USFBNJOH ಈըίϯςϯπ৴ͷ߹ʹར༻Մೳ ࢀߟ EFWFMPQFSBQQMFDPN
ҙ •ίϯςϯπͷෳࢭใ࿙Ӯࢭ •εΫγϣอޢ͞Ε͍ͯΔ͔ςετ •ར༻ऀʹεΫγϣอޢΛΒͤΔ ˠอޢΛ"MFSUͰ௨ɺεΫγϣʹอޢ͍ͯ͠ΔࢫΛهࡌ
None
࠷ޙʹ ίʔυྫ αϯϓϧύοέʔδ