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
Embedded FrameworkからSPMへ 段階的移行の軌跡
Search
ras0q
July 20, 2023
Programming
0
410
Embedded FrameworkからSPMへ 段階的移行の軌跡
2023/07/20のpixiv App Nightでの発表スライドです。
https://pixiv.connpass.com/event/288082/
ras0q
July 20, 2023
Tweet
Share
More Decks by ras0q
See All by ras0q
PencilKitで実装するPDFへの手書き注釈 / Handwritten-annotations to PDF with PencilKit
ras0q
0
810
iOS16で変わった画面の向きを操作する方法 - iOSDC Japan 2023
ras0q
0
3.3k
Other Decks in Programming
See All in Programming
AWS CDKの推しポイント 〜CloudFormationと比較してみた〜
akihisaikeda
3
310
既存デザインを変更せずにタップ領域を広げる方法
tahia910
1
240
プロダクト志向なエンジニアがもう一歩先の価値を目指すために意識したこと
nealle
0
100
Beyond Portability: Live Migration for Evolving WebAssembly Workloads
chikuwait
0
390
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
230
A2A プロトコルを試してみる
azukiazusa1
2
1.1k
なぜ適用するか、移行して理解するClean Architecture 〜構造を超えて設計を継承する〜 / Why Apply, Migrate and Understand Clean Architecture - Inherit Design Beyond Structure
seike460
PRO
1
650
なんとなくわかった気になるブロックテーマ入門/contents.nagoya 2025 6.28
chiilog
1
180
F#で自在につくる静的ブログサイト - 関数型まつり2025
pizzacat83
0
310
すべてのコンテキストを、 ユーザー価値に変える
applism118
2
590
Using AI Tools Around Software Development
inouehi
0
1.3k
アンドパッドの Go 勉強会「 gopher 会」とその内容の紹介
andpad
0
260
Featured
See All Featured
Music & Morning Musume
bryan
46
6.6k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
For a Future-Friendly Web
brad_frost
179
9.8k
A Tale of Four Properties
chriscoyier
160
23k
The Pragmatic Product Professional
lauravandoore
35
6.7k
Large-scale JavaScript Application Architecture
addyosmani
512
110k
Rails Girls Zürich Keynote
gr2m
94
14k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.4k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
233
17k
Fireside Chat
paigeccino
37
3.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
331
22k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
670
Transcript
Ras Embedded Framework͔ΒSPM ஈ֊తҠߦͷي
ࣗݾհ • Ras (Β͢) • {Twitter, GitHub, Scrapbox}: @ras0q •
দ͔Β্ژͯ͠4Ͱ͢ • pixivࣄۀຊ෦/ΞϓϦΤϯδχΞϦϯάνʔϜ (ΞϧόΠτ) • Ҏલ·ͰSketchνʔϜʹ͍·ͨ͠ 👈 ࠓճ͜ͷͱ͖ͷ • ౦ژۀେֶ B4 / σδλϧ࡞ಉձtraP • ීஈGoͰόοΫΤϯυΛॻ͍͍ͯ·͢ • iOSDC 2023ग़·͢ʂʂʂʂʂʂʂʂʂʂʂʂʂ
Swift Package ManagerͰ ϓϩδΣΫτཧ͠·ͤΜ͔ʁ
ͷલʹSwift Package Manager ʹ͍ͭͯগ͚ͩ͠
Swift Package Manager (SPM) • Appleެࣜͷύοέʔδཧπʔϧ (2019~) • ͜Ε·ͰCocoaPodsCarthage͕ओྲྀ •
ϥΠϒϥϦϓϩμΫτΛSwiftϑΝΠϧͰཧͰ͖Δ • Package.swiftʹґଘؔΛهड़Ͱ͖Δ • Մಡੑͷ্ • ίϯϑϦΫτ͕ى͖ʹ͍͘ • XcodeprojͰͷύοέʔδཧසൟʹίϯϑϦΫτ͢Δ
None
SPMΛϓϩδΣΫτʹ͏ͱ… • ϓϩδΣΫτΛϞδϡʔϧʹ؆୯ʹׂͰ͖Δ • ϓϩδΣΫτͷmonorepoԽ • ґଘ͕ؔίʔυ্Ͱ໌֬ʹͳΔ • νʔϜ։ൃͰίϯϑϦΫτ͠ͳ͍ •
͜Ε·Ͱ֤ϞδϡʔϧʹxcodeprojΛஔ (Embedded Framework) • ࡞ɾཧ͕େม
ͱ͜ΖͰ
Swift Package ManagerͰ ϓϩδΣΫτཧ͠·ͤΜ͔ʁ
pixiv Sketch • ͓ֆ͔͖ίϛϡχέʔγϣϯΞϓϦ • ʮʑͷ͓ֆ͔͖Λͬͱָ͘͠ʯ • ΞϓϦ্Ͱֆ͕͔͚Δ • ίϝϯτػೳɺϥΠϒ৴ػೳͱ͔͋Δ
• ຖ͓͕ߋ৽͞ΕΔ
SketchͷϞδϡʔϧཧ • Embedded FrameworkͰ֤ϞδϡʔϧΛཧ • ৽نϞδϡʔϧͷ࡞͕େม • ίϯϑϦΫτ͕සൃ • SPMΛͬͯϞμϯͰվमʹڧ͍ϞδϡʔϧཧʹΓସ͍͑ͨ
• ҠߦͰ͖Δ෦Λஈ֊తʹҠߦͨ͠
None
SketchͰͷSPMҠߦखॱ 1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ 2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ 3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ 4. ҠߦखॱʹԊͬͯ1ͭͣͭҠߦΛߦ͏
SketchͰͷSPMҠߦखॱ 1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ 2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ 3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ 4. ҠߦखॱʹԊͬͯ1ͭͣͭҠߦΛߦ͏
1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ • ґଘ͍ͯ͠ΔϥΠϒϥϦ͕SPMʹରԠ͍ͯ͠ͳ͍ • UIपΓҰ୴์ஔ • storyboardxibϑΝΠϧͷҠߦ͕͍͠ • ແཧ͗ͣ͢͠
• Ҡߦ͕͍͠ͱ͜ΖͱΓ͋͑ͣͦͷ··Ͱ
SketchͰͷSPMҠߦखॱ 1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ 2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ 3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ 4. ҠߦखॱʹԊͬͯ1ͭͣͭҠߦΛߦ͏
2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ • ·ͣଞͷґଘ͕ͳ͍SketchModelΛҠߦ • ͦͷ࣍ʹUI৴ͷґଘ͕গͳ͍SketchCommonSketchAPIΛҠߦ • UI৴पΓҰ୴์ஔ
SketchͰͷSPMҠߦखॱ 1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ 2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ 3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ 4. ҠߦखॱʹԊͬͯ1ͭͣͭҠߦΛߦ͏
3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ • ϝχϡʔόʔ͔ΒύοέʔδΛ࡞ • ϓϩδΣΫτԼʹஔ • xcworkspaceʹՃ • SketchͰSketchPackageΛ࡞
SketchͰͷSPMҠߦखॱ 1. Ҡߦ͕ͦ͠͏ͳϞδϡʔϧͷચ͍ग़͠ 2. ҠߦͰ͖ͦ͏ͳϞδϡʔϧͷҠߦखॱΛܾΊΔ 3. ϞδϡʔϧΛ·ͱΊΔύοέʔδΛ࡞ 4. ҠߦखॱʹԊͬͯ1ͭͣͭҠߦΛߦ͏
4. ҠߦखॱʹԊͬͯ1ͭͣͭSPMҠߦΛߦ͏ ※ Ϟδϡʔϧ໊Moͱ͠·͢ • project_root/MoΛSketchPackage/MoʹҠಈ͢Δ • Mo.xcodeprojΛআ • ֤targetͷґଘϥΠϒϥϦ͔ΒMo.frameworkΛআ
& MoϞδϡʔϧΛՃ • assetϑΝΠϧͳͲೝࣝ͞Εͳ͍ͨΊҙ • reference error ى͖͕ͪ (࠶ىಈͰେମ࣏Γ·͢)
ҠߦखॱΛܾΊͯ ແཧͤͣSPMҠߦ͠Α͏
ࢀߟ • Swift.org - Package Manager • Swift Package centered
project - Build and Practice - Speaker Deck • iOSΞϓϦͰSPMΛ༻͍ͨϚϧνϞδϡʔϧߏΛࢼͯ͠Έͨ - Zenn
͓·͚ • SPMͷϞδϡʔϧׂΛͬͯݸਓΞϓϦΛ։ൃ͍ͯ͠·͢ • github.com/ras0q/traq-ios-clone • traQͷiOSΫϥΠΞϯτ • ࣌ظະఆͰ͢