$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
3年間作り続けて来たアプリをSwift化した話
Search
sun54907
March 01, 2017
Technology
0
6.8k
3年間作り続けて来たアプリをSwift化した話
これで2番目に話したやつです
https://cyberagent.connpass.com/event/49553/
sun54907
March 01, 2017
Tweet
Share
More Decks by sun54907
See All by sun54907
CreateMLを使ってサクラを判定しよう | iOSDC 2018 LT
sun54907
1
1.3k
既存のプロジェクトに、Firestoreを導入してみた
sun54907
1
1.2k
stackViewを使ってボタンをつくった話
sun54907
0
1k
Introducing Password AutoFill
sun54907
1
570
Other Decks in Technology
See All in Technology
手動から自動へ、そしてその先へ
moritamasami
0
300
Ruby で作る大規模イベントネットワーク構築・運用支援システム TTDB
taketo1113
1
260
re:Invent2025 コンテナ系アップデート振り返り(+CloudWatchログのアップデート紹介)
masukawa
0
350
日本Rubyの会の構造と実行とあと何か / hokurikurk01
takahashim
4
1k
Haskell を武器にして挑む競技プログラミング ─ 操作的思考から意味モデル思考へ
naoya
6
1.4k
エンジニアリングマネージャー はじめての目標設定と評価
halkt
0
280
SSO方式とJumpアカウント方式の比較と設計方針
yuobayashi
7
600
第4回 「メタデータ通り」 リアル開催
datayokocho
0
120
品質のための共通認識
kakehashi
PRO
3
250
ガイドラインを軸にしたウェブアクセシビリティ改善
lycorptech_jp
PRO
1
100
re:Inventで気になったサービスを10分でいけるところまでお話しします
yama3133
1
120
Playwright x GitHub Actionsで実現する「レビューしやすい」E2Eテストレポート
kinosuke01
0
570
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
Documentation Writing (for coders)
carmenintech
76
5.2k
Principles of Awesome APIs and How to Build Them.
keavy
127
17k
Facilitating Awesome Meetings
lara
57
6.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.4k
Statistics for Hackers
jakevdp
799
230k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
37
2.6k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
970
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.5k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Fashionably flexible responsive web design (full day workshop)
malarkey
407
66k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.5k
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ॻ͖ͨ͘ͳ͍ΜͰ͢ΑͶʯ ࠾༻Ͱ͖ͣ