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
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Embedded FrameworkからSPMへ 段階的移行の軌跡
2023/07/20のpixiv App Nightでの発表スライドです。
https://pixiv.connpass.com/event/288082/
ras0q
July 20, 2023
More Decks by ras0q
See All by ras0q
PencilKitで実装するPDFへの手書き注釈 / Handwritten-annotations to PDF with PencilKit
ras0q
0
1.3k
iOS16で変わった画面の向きを操作する方法 - iOSDC Japan 2023
ras0q
0
4.3k
Other Decks in Programming
See All in Programming
初めてのKubernetes 本番運用でハマった話
oku053
0
120
例外の正しい扱い方 そのエラー try-catchして大丈夫?
jinwatanabe
0
360
えっ!!コードを読まずに開発を!?
hananouchi
0
190
音楽のための関数型プログラミング言語mimiumにおける多段階計算の活用
tomoyanonymous
1
310
SREは、MCPとSRE Agentをこう使え!
kazumax55
0
150
分散システム、なんですぐ死んでしまうん?耐障害性を高めたいあなたのためのレジリエンスパターン入門
mshibuya
7
5.8k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
260
ローカルLLMでどこまでコードが書けるか -拡張版 / How much code can be written on a local LLM Extended
kishida
12
4.7k
なぜ型を書くのか? TSKaigi2026で改めて考える #tskaigi_smarthr
kajitack
0
350
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
270
Generative UI & AI-Assistants for Your Angular Solutions
manfredsteyer
PRO
1
170
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.8k
Featured
See All Featured
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.2k
Between Models and Reality
mayunak
4
370
It's Worth the Effort
3n
188
29k
For a Future-Friendly Web
brad_frost
183
10k
Practical Orchestrator
shlominoach
191
11k
From π to Pie charts
rasagy
0
230
How to Think Like a Performance Engineer
csswizardry
28
2.7k
エンジニアに許された特別な時間の終わり
watany
107
250k
Navigating Team Friction
lara
192
16k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
360
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ΫϥΠΞϯτ • ࣌ظະఆͰ͢