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
3年間作り続けて来たアプリをSwift化した話
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
sun54907
March 01, 2017
Technology
6.9k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
3年間作り続けて来たアプリをSwift化した話
これで2番目に話したやつです
https://cyberagent.connpass.com/event/49553/
sun54907
March 01, 2017
More Decks by sun54907
See All by sun54907
CreateMLを使ってサクラを判定しよう | iOSDC 2018 LT
sun54907
1
1.4k
既存のプロジェクトに、Firestoreを導入してみた
sun54907
1
1.2k
stackViewを使ってボタンをつくった話
sun54907
0
1.1k
Introducing Password AutoFill
sun54907
1
590
Other Decks in Technology
See All in Technology
関数型の考えを TypeScript に持ち込んで、テストしやすい純粋関数を増やす / Pure at the Core, Effects at the Edge: Bringing Functional Thinking into TypeScript
kaminashi
1
110
KiCAD講習会②
tutcreators
0
110
Mastraエージェント、どのクラウドにデプロイする?
minorun365
PRO
2
180
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
13
2k
SRE Next 2026 何でも屋からの脱却
bto
0
600
AI Agent SaaS を支える自社仮想化基盤への挑戦と実運用 / ai-agent-saas-virtualization
flatt_security
2
3.8k
プロンプト_きのこカンファレンス2026_LT
yurufuwahealer
0
150
“全部コピーしない”ファイルデータの活用 : — FSx for ONTAP × S3 Tables × Icebergで作るメタデータカタログ
yoshiki0705
0
710
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1k
知らん間に、回ってる
ming_ayami
0
400
AI時代の EM への処方箋
staka121
PRO
0
130
AWS Blocks を触ってみた/first-tach-aws-blocks
fossamagna
2
160
Featured
See All Featured
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
190
Designing for Performance
lara
611
70k
YesSQL, Process and Tooling at Scale
rocio
174
15k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
270
Large-scale JavaScript Application Architecture
addyosmani
515
110k
KATA
mclloyd
PRO
35
15k
Evolving SEO for Evolving Search Engines
ryanjones
0
240
Optimizing for Happiness
mojombo
378
71k
Navigating Weather and Climate Data
rabernat
0
300
Context Engineering - Making Every Token Count
addyosmani
9
1k
SEO for Brand Visibility & Recognition
aleyda
0
4.6k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
Transcript
3ؒ࡞Γଓ͚͖ͯͨ ΞϓϦΛSwiftԽͨ͠
ࣗݾհ ւ 28ࡀ (ג)ϚονϯάΤʔδΣϯτ iOSྺ 5 ͖: ͳΊ͜ ࠷ۙͷϚΠϒʔϜɿFGOɺFE
ώʔϩʔζ
ฐࣾΞϓϦհ
λοϓϧੜ ϚονϯάαʔϏε 201312݄͔Β։ൃɻ ཌ5݄ɺϦϦʔε 2017ݱࡏɺDAU11ສ (͏ͪiOS6ສ)
λοϓϧੜ iOS൛ SwiftԽϓϩδΣΫτ
࣍ ίʔυͷ༁ Obj-C → Swift 2.3 Swift 2.3 → Swift
3.0
ίʔυͷ༁
ίʔυͷ༁ SwiftԽ͢Δલ Objective-C 99.5% ݱࡏ Objective-C 81.2% Swift 18.6%
ίʔυͷྔ Swift͢Δલ .m, .hϑΝΠϧ߹Θͤͯ600ϑΝΠϧఔ ܭ60,000ߦ
Objective-C → Swift 2.3
͖͔͚ͬ ͍ϓϩδΣΫτͳͷͰɺٕज़తෛ࠴͕ଟ͍ ࢪࡦʹΘΕ͍ͯΔঢ়گ Ұճ͔ͬ͠Γͱվળ͚ͩΛ͍ͨ͠ 201611݄ɺվળͷͨΊɺ։ൃ߹॓Λ͢Δ͜ͱʹ ͳͬͨ
։ൃ߹॓ͷৄ͍ͪ͜͠Β https://developers.cyberagent.co.jp/blog/ archives/2055/
SwiftԽϩʔυϚοϓ 1ധ2ͷ։ൃ߹॓ͰҰؾʹΓ͖Δ ඪSwiftԽ100%! iOSΤϯδχΞ2ਓɺ࡞ۀ࣌ؒ16࣌ؒ΄Ͳɻܭ32 ࣌ؒ ίϯόʔλʔΛͬͯҰؾʹม ͱΓ͋͑ͣಈ͘Α͏ʹͯ͠ɺޙͰϦϑΝΫλϦϯά
ίϯόʔλͷछྨ Swiftify iSwift objc2swift
Swiftify ֹ݄14.99$ ແྉͩͱ10KB·ͰͷίʔυΛมͰ͖Δ ༗ྉͳΒϑΝΠϧ͝ͱɺϓϩδΣΫτ͝ͱมՄೳ Swift2.2, 3.0 ʹมՄೳ
iSwift ༗ྉ(14.99$) Σϒ্ͰมՄೳ MacΞϓϦ͕͋Γɺ1͚ͩແྉମݧͰ͖Δ Swift2.2, 3.0ʹมՄೳ
objc2swift ແྉ ίϚϯυϥΠϯ͔ΒมͰ͖Δ hϑΝΠϧɺmϑΝΠϧΛҰॹʹม͢Δ Swift2.xʹมͰ͖Δ Yahooͷਓ͕࡞ͬͨ
બΕͨͷ…
objc2swiftΛ࠾༻ ແྉʂ ίϚϯυϥΠϯ͍͍ͬͯ yahoo࡞ͱ͍͏৴པײ http://qiita.com/shu223/items/ 7a20d97d93e056a4e0ac
Start!
ૣน͕…
None
* ※࣌ͷͷͰͳ͘ɺswift3ରԠޙʹͬͨͷͳͷͰɺ AnyHashableͱ͔ͬͯ·͢
☠ܯࠂࡇΓ☠ ม͚ͩͰऴΘΔ͜ͱ100%ͳ͍ XcodeͷαδΣετ͕ग़Δܯࠂ͕͘Β͍ ΓࣗྗͰͲ͏ʹ͔͢Δ͔͠ͳ͍ ͍͍ͩͨ100ߦ͘Β͍Ͱ40ݸ΄Ͳܯࠂ͕ग़Δ
* ※࣌ͷͷͰͳ͘ɺswift3ରԠޙʹͬͨͷ ͜ΕΛ
͜ͷঢ়ଶ·Ͱ15 ~ 30͘Β͍͔͔Δ !ͱ͔ͬͯΔͷͰ·ͩमਖ਼͕ඞཁͩ͠ɺϩδοΫ͕ਖ਼͍͠ ͔ݕূ͕ඞཁ * ※࣌ͷͷͰͳ͘ɺswift3ରԠޙʹͬͨͷ
։ൃ߹॓ͷՌ .m : 317ϑΝΠϧ 50381ߦ → 269ϑΝΠϧ 44688ߦ .h :
324ϑΝΠϧ 10124ߦ → 262ϑΝΠϧ 7818ߦ swift : 3ϑΝΠϧ 199ߦ → 63ϑΝΠϧ 4297ߦ 7999ߦআɺ4098ߦՃ
શମͷ…
શମͷ…8%!
None
ল ؆୯ʹ͍͔ͳ͍ͷΘ͔͚ͬͯͨͲɺ͔ͳΓͩ ͱΘ͔ͬͨ ඪͪΌΜͱཱͯΑ͏
߹॓ͷΑ͔ͬͨϙΠϯτ SwiftԽͷ͖͔͚ͬʹͳͬͨ શମΛίϯόʔτ͢Δͷʹ͔͔Δ͕࣌ؒͬ͘͟Γ༧ ଌͰ͖ΔΑ͏ʹͳͬͨ جຊσʔλΛѻ͏ΫϥεΛશ෦มͰ͖ͨ
Objective-CͷΫϥεΛ Swift͔ΒݺͿͱ !ࡇΓͰ͍ * ※࣌ͷͷͰͳ͘ɺswift3ରԠޙʹͬͨͷ
࣮ߦ࣌ΤϥʔͷԹচͱͳΓ͔Ͷͳ͍ ݺͼग़͢ଆͰͳ͘ɺݺͼग़͞ΕΔଆ͔ΒSwiftԽ͠ ·͠ΐ͏ ͘͠Objective-Cଆʹɺnullable, nonnullΛ͚ͭΔ
Swift 2.3 → Swift 3.0
͖͔͚ͬ Xcode 8.3 ͔Β Swift 2.3 ରԠ͠ͳ͍ ! ͍!!
ͦͦͳͥ2.3ͩͬͨͷ? ͬͨίϯόʔλ͕ Swift2.3͔͠ରԠͯ͠ͳ͔ͬͨ ແྉͱ͍͏᠘ʹҾ͔͔ͬͬͨ
͏ίϯόʔλʔͪ͜Β
͏ม͜Γ͝Γ͓ͩ…>< ·ͨਏ͍࡞ۀ͕࢝·Δ…
͓…Swiftͷ༷ࢠ͕…
ҙ֎ͱ͏·͍ͬͨ͘Swift3Խ AppleఏڙίϯόʔλʔͰ͖Δ͜ ͍͍ͩͨͷΤϥʔ͕ΫϦοΫͰ࣏Δͭ 10࣌ؒఔͰ ͨ·ʹҾֻ͚ͬ͋Δ͔Βҙ
Ҿֻ͚ͬϙΠϯτ উखʹ!?͕ͭ͘ͷͰҙ
ࠓޙͷϩʔυϚοϓ ݱࡏ Swift 20% དྷظͰ80%Λࢦ͢ ຖ݄ͷϚΠϧετʔϯΛઃఆ
͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠
SwiftԽ͢Δཧ༝
͑ʁͨΓલͩΑͶ…? Swiftࠓ࠷ͳݴޠɻObjective-Cݹ͍ Ϟμϯͳॻ͖ํ͕Ͱ͖Δɻܕਪɺstructɺ OptionalValueͳͲͳͲศརͳػೳ͕ଟ͍ ΤϯδχΞͱͯ͠ͷΛߟ͑ΔͱɺSwiftΛͬͨ ํ͕໌Β͔ʹ͍͍
ձࣾೲಘͯ͘͠Εͳ͍ SwiftԽʹԿϲ݄͔͔Δͷʁ ࠓͷίʔυͰԿ͔͕͋Δͷ͔ʁ SwiftԽͰ՝্͕ۚΔͷ͔ʁ Objective-Cͷํ͕ॻ͖׳ΕͯΔͰ͠ΐʁ
ࣄҊ: ࠾༻ࣦഊ ͍͍ײ͡ͷͰ͖ΔΤϯδχΞM܅͕དྷࣾ ͏ͪͷίʔυͷ༁Λઆ໌(swift20%) ʮObj-Cॻ͖ͨ͘ͳ͍ΜͰ͢ΑͶʯ ࠾༻Ͱ͖ͣ