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
230
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
iOS16で変わった画面の向きを操作する方法 - iOSDC Japan 2023
ras0q
0
1.5k
Other Decks in Programming
See All in Programming
Node.js v22 で変わること
yosuke_furukawa
PRO
11
3.9k
Hanami and htmx
bkuhlmann
0
220
Goのmultiple errorsについて (2024年4月版)
syumai
4
1.1k
単体テストを書かない技術 #phpcon_odawara
o0h
PRO
27
8.5k
GraphQLサーバの構成要素を整理する #ハッカー鮨 #tsukijigraphql / graphql server technology selection
izumin5210
4
900
Introducing Kotlin Multiplatform in an existing mobile app - Workshop Edition | AndroidMakers Paris
prof18
0
140
見た目から始める生産性向上
ikumatadokoro
10
1.3k
サイコロで理解する統計的仮説検定の考え方
tatamiya
4
1k
PHPはいつから死んでいるかの調査
chiroruxx
2
410
Snowflakeで眠ったデータを起こそう!
estie
0
140
Azure OpenAI Serviceのプロンプトエンジニアリング入門
tomokusaba
3
860
雑に思考を整理する技術と効能
konifar
63
30k
Featured
See All Featured
Building Effective Engineering Teams - LeadDev
addyosmani
32
1.9k
The Power of CSS Pseudo Elements
geoffreycrofte
61
5k
Optimizing for Happiness
mojombo
370
69k
Ruby is Unlike a Banana
tanoku
96
10k
A better future with KSS
kneath
231
16k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
7
1.3k
How To Stay Up To Date on Web Technology
chriscoyier
782
250k
Why Our Code Smells
bkeepers
PRO
331
56k
Build your cross-platform service in a week with App Engine
jlugia
226
17k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
65
14k
Pencils Down: Stop Designing & Start Developing
hursman
117
11k
Thoughts on Productivity
jonyablonski
59
3.9k
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ΫϥΠΞϯτ • ࣌ظະఆͰ͢