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
開発を加速する共有Swift Package実践
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
elmetal
PRO
August 29, 2024
Programming
0
1.3k
開発を加速する共有Swift Package実践
elmetal
PRO
August 29, 2024
Tweet
Share
More Decks by elmetal
See All by elmetal
The Integrity of Making: Extending Xcode Previews with MCP
elmetal
PRO
0
23
Generating DocC with AI
elmetal
PRO
0
58
A Swift Way to Blog
elmetal
PRO
0
150
Designing DocC for Clarity and Beauty
elmetal
PRO
0
110
SwiftUI Viewの責務分離
elmetal
PRO
2
480
サイボウズiOSアプリのマルチモジュール 2024
elmetal
PRO
0
120
Resolve Nested ObservableObject issues in Observation
elmetal
PRO
0
390
ObservationSallowDive
elmetal
PRO
1
370
「サイボウズ Office」 の iOSアプリをリニューアルした話 / Renewal "Cybozu Office" iOS App
elmetal
PRO
0
720
Other Decks in Programming
See All in Programming
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
980
SourceGeneratorのマーカー属性問題について
htkym
0
210
AI活用のコスパを最大化する方法
ochtum
0
320
KagglerがMixSeekを触ってみた
morim
0
260
PHPで TLSのプロトコルを実装してみる
higaki_program
0
430
今年もTECHSCOREブログを書き続けます!
hiraoku101
0
120
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
420
Nostalgia Meets Technology: Super Mario with TypeScript
manfredsteyer
PRO
0
110
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
Linux Kernelの1文字のミスで 権限昇格ができた話
rqda
0
2.1k
Everything Claude Code OSS詳細 — 5層構造の中身と導入方法
targe
0
150
Fundamentals of Software Engineering In the Age of AI
therealdanvega
2
290
Featured
See All Featured
WENDY [Excerpt]
tessaabrams
9
37k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
130
Speed Design
sergeychernyshev
33
1.6k
BBQ
matthewcrist
89
10k
Heart Work Chapter 1 - Part 1
lfama
PRO
5
35k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
150
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.8k
Why Our Code Smells
bkeepers
PRO
340
58k
A designer walks into a library…
pauljervisheath
210
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
Marketing Yourself as an Engineer | Alaka | Gurzu
gurzu
0
160
Context Engineering - Making Every Token Count
addyosmani
9
770
Transcript
։ൃΛՃ͢Δ ڞ༗4XJGU1BDLBHF࣮ફ J04%$+BQBOEBZ5SBDL% FMNFUBM$ZCP[V *OD JPTEDE
"CPVUNF J04"QQ %FWFMPQFS ڝഅ ରઓήʔϜ ҭࣇ ෳνʔϜͷ ٕज़ࢧԉ JPTEDE
!FM@NFUBM@
αΠϘζʹ͍ͭͯ JPTEDE
νʔϜϫʔΫ͋;ΕΔ ࣾձΛΔ JPTEDE
αΠϘζʹ͍ͭͯ J04ΞϓϦ (BSPPO αΠϘζ0 ff i DF LJOUPOF αΠϘζͰෳͷϓϩμΫτΛ։ൃ͍ͯ͠·͢
JPTEDE
ಋೖ JPTEDE
ڞ༗4XJGU1BDLBHF࣮ફ ಋೖ (BSPPO αΠϘζ0 ff i DF LJOUPOF
(BSPPO αΠϘζ0 ff i DF LJOUPOF ڞ༗1BDLBHF JPTEDE
ڞ༗4XJGU1BDLBHF࣮ફ τʔΫͷྲྀΕ ڞ༗1BDLBHF։ൃͷܦҢ ڞ༗1BDLBHF։ൃମ੍ɾϓϩηε ࣮Ͱେࣄʹͨ͠ϙΠϯτ ڞ༗1BDLBHFͷಋೖޮՌ JPTEDE
ڞ༗1BDLBHF։ൃͷܦҢ JPTEDE
(BSPPO ίϯςΩετ ։ൃ։࢝࣌ظ αΠϘζ0 ff i DF LJOUPOF
JPTEDE
(BSPPO ίϯςΩετ ڞ༗1BDLBHF։ൃ։࢝࣌Ͱͷར༻ٕज़ αΠϘζ0 ff i DF LJOUPOF 3Y4XJGU
6*,JU 4XJGU6* 4XJGU6* 5$" JPTEDE
(BSPPO ίϯςΩετ ར༻ٕज़։ൃ։࢝࣌ظͷࠩҟ͔Βڞ௨෦ͦΕͧΕͰ࠶࣮ αΠϘζ0 ff i DF LJOUPOF ڞ௨෦
࠶࣮ ࠶࣮ ࠶࣮ JPTEDE
(BSPPO ίϯςΩετ ࠶࣮ͷίετ αΠϘζ0 ff i DF LJOUPOF ࠶࣮ίετ
࠶࣮ίετ ࠶࣮ίετ JPTEDE
Ҏલͷ࣮Λࢀߟʹ࠶࣮ ࣮͕ࢄҳ αΠϘζ 0 ffi DF LJOUPOF ࣮L ࣮0
(BSPPO ࣮( JPTEDE
(BSPPO Ҏલͷ࣮Λࢀߟʹ࠶࣮ ෛ࠴͕֦ࢄ αΠϘζ 0 ffi DF LJOUPOF ෛ࠴
ෛ࠴ ෛ࠴ ࣮L ࣮0 ࣮( JPTEDE
Ҏલͷ࣮Λࢀߟʹ࠶࣮ ٕज़ελοΫͷΞϯϚον αΠϘζ 0 ffi DF LJOUPOF 3Y4XJGU 6*,JU
4XJGU6* 4XJGU6* 5$" (BSPPO JPTEDE
ෳछྨͷෛ࠴ ίʔυཧղΛ્ αΠϘζ 0 ffi DF LJOUPOF ෛ࠴ ෛ࠴
࣮L ࣮0 JPTEDE
ڞ༗1BDLBHF։ൃܾఆ ڞ༗1BDLBHFͰಉ࣌ʹղܾΛਤΔ ࣮ͷࢄҳ ࠶࣮ίετ ίʔυཧղ્ ղܾ ڞ༗1BDLBHF ෛ࠴ͷ֦ࢄ ղܾ
ղܾ ղܾ JPTEDE
ڞ༗1BDLBHF։ൃମ੍ɾϓϩηε JPTEDE
*OOFS4PVSDFϓϥΫςΟεΛ׆༻͢Δ ڞ༗1BDLBHFͷ։ൃӡ༻ํ JPTEDE
ڞ༗1BDLBHFͷ։ൃӡ༻ํ *OOFS4PVSDFͷఆٛ ৫ͱ͍͏ݶΒΕͨڥʹ͓͍ͯɺιϑτΣΞ։ൃʹ ͓͚ΔΦʔϓϯιʔεͷݪଇͱϓϥΫςΟεΛ׆༻͢Δ͜ͱ *OOFS4PVSDF$PNNPOT JPTEDE
։ൃମ੍ ֓ཁ 0XOFS $POUSJCVUPS $POUSJCVUPS 6TFS 6TFS JPTEDE
։ൃମ੍ ֤ϩʔϧͷ׆ಈ 0XOFS $POUSJCVUPS 6TFS w 7FSΛ࡞Δ w ։ൃΛओಋ͢Δ
w ҙࢥܾఆ͢Δ w *TTVFΛཱͯΔ w QBUDIΛॻ͘ w %JTDVTTJPOʹࢀՃ͢Δ w 1BDLBHFΛར༻͢Δ JPTEDE
ڞ༗1BDLBHFͷӡ༻ *OOFS4PVSDFϓϥΫςΟεͷ׆༻ ڞ༗1BDLBHF 1VMM3FRVFTU *TTVF 3FQPTJUPSZ JPTEDE
ڞ༗1BDLBHFͷӡ༻ มߋͷऔΓࠐΈ αΠϘζ0 ff i DF LJOUPOF -BUFTU ڞ༗1BDLBHF
EJ f EJ f EJ f JPTEDE
ڞ༗1BDLBHFͷಋೖࢧԉ .PC1SPHSBNNJOHͷ׆༻ /BWJHBUPS 0XOFS %SJWFS 6TFS /BWJHBUPS $POUSJCVUPS 6TFS
.PC1SPHSBNNJOH JPTEDE
ٕज़తҙࢥܾఆϓϩηε "SDIJUFDUVSF%FDJTJPO3FDPSE "%3 Ͱٞ (JU)VC%JTDVTTJPOTΛར༻ ෳͷબࢶΛൺֱ 8IZͱڞʹܾఆΛهࡌ JPTEDE
ٕज़తҙࢥܾఆϓϩηε "SDIJUFDUVSF%FDJTJPO3FDPSEͰٞ ఏҊ ࡞ ঝೝ 0XOFS $POUSJCVUPS 0XOFS 3FWJFX
JPTEDE
࣮Ͱେࣄʹͨ͠ϙΠϯτ JPTEDE
ڞ༗1BDLBHFͰୡ͍ͨ͜͠ͱ Ռͷεέʔϧ JPTEDE
ࣾϥΠϒϥϦͷ੍ ೖࣾޙͰͳ͍ͱΞΫηεͰ͖ͳ͍ ڞ༗1BDLBHF JPTEDE
࣮Ͱେࣄʹͨ͠ϙΠϯτ ੍Λݮ͠εέʔϧΛॿ͚ΔͨΊʹ 4XJGU6*ʹೃછΉ"1* ߴ͍UFTUBCJMJUZ υΩϡϝϯτͷపఈ JPTEDE
ڞ༗1BDLBHF 4XJGU6*ʹೃછΉ"1* ΤίγεςϜͱ౷߹͞Εͨ"1*Λͭ͘Δ 4XJGU6* 4XJGUFDPTZTUFN JPTEDE
4XJGU6*ʹೃછΉ"1* ΤίγεςϜͱ౷߹͞Εͨ"1*Λͭ͘Δ struct ContentView: View { var body: some
View { WebViewReader { proxy in WebView() .onAppear { proxy.load(request: URLRequest(url: URL(string: "https://www.example.com")!)) } } .padding() } } WebUI is a Swift package that provides WKWebView wrapped by SwiftUI. WebUI JPTEDE
4XJGU6*ʹೃછΉ"1* ΤίγεςϜͱ౷߹͞Εͨ"1*Λͭ͘Δ https://github.com/cybozu/WebUI WebUI is a Swift package that
provides WKWebView wrapped by SwiftUI. WebUI JPTEDE
ߴ͍UFTUBCJMJUZ ҆৺ɾ҆શͳίϯτϦϏϡʔτ ҆৺ ڞ༗1BDLBHF 1VMM3FRVFTU ҆શ JPTEDE
ߴ͍UFTUBCJMJUZ όάεέʔϧ͢Δ αΠϘζ0 ff i DF LJOUPOF ڞ༗1BDLBHF #VH
#VH #VH JPTEDE
υΩϡϝϯτͷపఈ υΩϡϝϯτΛ௨ͯ͡ର͢Δ %PD$ ڞ༗1BDLBHF %FWFMPQFS 6TFS JPTEDE
ڞ༗1BDLBHFͷಋೖޮՌ JPTEDE
ڞ༗1BDLBHFͷಋೖޮՌ ίʔυཧ ϩδοΫͷ44P5 ஔ͖͑ͷՃ ΞϓϦίʔυͷ্࣭ JPTEDE
ίʔυཧ ΞϓϦίʔυͷେ෯ݮ JPTEDE
ίʔυཧ ίʔυߏͷΛղফ ෛ࠴ͷղফ ґଘάϥϑͷཧ ίʔυཧ JPTEDE
ஔ͖͑ͷՃ 3Y4XJGU4XJGU6*Ҡߦ LJOUPOF 3Y4XJGU 6*,JU .PEVMF" 3Y4XJGU 6*,JU .PEVMF#
LJOUPOF 1BDLBHF" 1BDLBHF$ 1BDLBHF# 4XJGU6* JPTEDE
ϩδοΫͷ4JOHMF4PVSDFPG5SVUI ϩδοΫͷ҆શͳ࠶ར༻ αΠϘζ0 ff i DF LJOUPOF ར༻ ར༻
ڞ༗1BDLBHF 44P5 JPTEDE
ΞϓϦίʔυͷ্࣭ ࣮ྫͷఏࣔʹΑΔ҉ͷୡ ܗ͕ఏࣔ͞ΕΔͱநԽͷ౸ୡ͕ΘΔ ϐΧιʮڇʯ JPTEDE
4VNNBSZ JPTEDE
4VNNBSZ ڞ༗1BDLBHFͰ՝ղܾ "1*XJUI8IPMFOFTT 5FTUBCJMJUZ %PDVNFOU ։ൃͰॏࢹͨ͠ཁૉ *OOFS4PVSDFϓϥΫςΟεͷ׆༻ JPTEDE
2" JPTEDE
͋Γ͕ͱ͏͍͟͝·ͨ͠ JPTEDE