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
Objective-Cで書かれたアプリをSwift化したときの話
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
kuroyam
June 08, 2016
Programming
440
4
Share
Objective-Cで書かれたアプリをSwift化したときの話
shibuya.swift #4
kuroyam
June 08, 2016
More Decks by kuroyam
See All by kuroyam
iOS13でもSwiftUIでLazyなGridを実装したい! / use SwiftUI on iOS13
kuroyam
1
1.3k
開発合宿で バーチャルオフィス を作ろうとしたお話 / Let's Babiniku !
kuroyam
0
2.3k
アプリ設計改善の旅路
kuroyam
1
1k
途中からSwiftLint
kuroyam
1
640
Other Decks in Programming
See All in Programming
ADKを使って簡単にAIエージェントを作ってみよう
k1mu21
0
120
3Dシーンの圧縮
fadis
1
580
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
1.8k
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
2
410
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.1k
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
430
AIとRubyの静的型付け
ukin0k0
0
510
oxlintはeslint/typescript-eslintを置き換えられるのか
shomafujita
2
310
JavaDoc 再入門
nagise
0
250
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
210
初めてのRubyKaigiはこう見えた
jellyfish700
0
410
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
330
Featured
See All Featured
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
400
Evolving SEO for Evolving Search Engines
ryanjones
0
210
Joys of Absence: A Defence of Solitary Play
codingconduct
1
380
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
400
VelocityConf: Rendering Performance Case Studies
addyosmani
333
25k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
840
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.9k
AI Search: Where Are We & What Can We Do About It?
aleyda
0
7.5k
Beyond borders and beyond the search box: How to win the global "messy middle" with AI-driven SEO
davidcarrasco
3
150
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
310
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
130
Transcript
Objective-CͰॻ͔Ε ͨΞϓϦΛSwiftԽ͠ ͨͱ͖ͷ @ shibuya.swift #4
͜Μʹͪ • ࠇా ॣ (@kuroyam) • GMOϖύϘגࣜձࣾ • ϞόΠϧΞϓϦͳΜͰ͞Μ •
ήʔϜ → Android → iOS
ࠓ͢͜ͱ
30daysAlbum • ࣸਅڞ༗αʔϏε • iOS൛ϦϦʔε2011 ( iOS4 ~ 5 )
• WebαʔϏεͱͯ͠2008͔Β • 20148݄͔Β͕iOS୲(1ਓ)
ΛSwiftԽͨ͠ͱ͖ͷʂ
ϓϥΠϕʔτͰSwiftॻ͍ͯΔ ͚ͲɺࣄͰObjective-Cॻ ͍ͯΔɾɾɾͬͯਓ͚Ͱ͢
1. େมͩͬͨ͜ͱ 2. ͏·͍ͬͨ͘͜ͱ 3. ޙչͯ͠Δ͜ͱ ͷ3ͭΛ͠·͢
ͦͷલʹɾɾɾ
͖͔͚ͬ • ϓϥΠϕʔτͰSwiftΛॻ͍͍ͯͨΒ Objective-C͕ͭΒ͘ͳ͖ͬͯͨ • Լ͕͍ͬͯ͘Ϟνϕʔγϣϯ • ૣ͘ՈʹؼͬͯSwiftॻ͖͍ͨ
Ͳ͏ͤiOS൛։ൃͯ͠Δͷ ҰਓͳΜͩ͠ɺউखʹͬͨ Β͍͍ͷͰʂ
ݱࡏͰ • 1ը໘Λআ͍ͯViewController͕Swiftʹͳͬͨ • ModelΫϥε΄΅ͯ͢Swiftʹͳͬͨ • ͦͷଞɺԿΒ͔ͷλεΫܥΫϥεͱ͔ϢʔςΟ ϦςΟܥΫϥεObjective-Cͷ··
݁Ռͱͯ͠ • ίʔυॻ͖͍͢ʂಡΈ͍͢ʂ • ։ൃupʂ • όά͕ݮͬͨɺग़ʹ͘͘ͳͬͨ • σϝϦοτಛʹແ͠
େมͩͬͨ͜ͱ
iOS7 • ࣌Γ͍͚ͨͲແࢹͰ͖ͳׂ͍߹ͰiOS7 Ϣʔβʔ͕͍ͨ • SwiftͷϥΠϒϥϦΛ͍͍ͨɾɾɾʂ • Objective-CCocoapodsͰɺSwift git submodule
ͰೖΕͨ
ΓͮΒ͍ͱ͜Ζ • Ϟϯελʔ ViewController • 1000ߦ͕͑Ұຕ͋Δ • ؔ࿈͢ΔViewଟ͍ͷͰ͕͔͔࣌ؒΔ • ModelΫϥε
• มߋͨ࣌͠ͷӨڹൣғ͕͍ͷͰ͜Θ͍ • ςετ͕ͳ͍ɾɾɾ
Ͳ͏͠Α͏ͳ͔ͬͨͭ • Objective-C͔ΒSwiftͷenumΛ͍͍ͨ • Objective-C͔ΒSwiftͷInt?ɺBool?Λࢀর͠ ͍ͨ • ٽ͘ٽ͘ϥούʔΛ࡞ͬͨ
͏·͍ͬͨ͘͜ͱ
View͔Β࢝ΊΔ • ৽نͰViewΛ࡞Δͱ͖ʹࢼ͠ʹSwiftͰॻ͍ͯ Έͨͷ͕࠷ॳ • ଞʹൺͯখ͘͞ɾૄ݁߹ • ػೳ։ൃͷؒʹখ͍͞View͔ΒͲΜͲΜSwift Խ
نେ͖Ίͷ༷มߋ͕͋ͬͨ • API࡞Γ͠ʂ • ΞϓϦଆͷModel࡞Γ͟͞ΔΛಘͳ͔ͬͨ • ͔ͤͬ͘ͳͷͰSwiftͰ… • λΠϛϯά͕Α͔͚ͬͨͩ…
ઃܭͷݟ͠Ͱ͖ͨ • ੲiOSք۾ͰઃܭͷΛ͢Δਓͬͯগͳ͔ͬ ͨ • ͳͷͰҾ͖ܧ͍ͩ࣌Ͱͷ͍͢͝ײ͡ͷ ίʔυʹͳͬͯͯͭΒ͔ͬͨ • ͪΌΜͱͨ͠ઃܭʹͤΔνϟϯε
ޙչͯ͠Δ͜ͱ
࠷ॳSwiftతʹ͍͍ॻ͖ํͰ ॻ͚ͳ͔ͬͨ
nilνΣοΫ͔Βͷforce unwrap if user != nil { user!.hoge() }
optional bindingͷ΄͏͕Α͍ if let user = user { user.hoge() }
// ͘͠ guard let user = user else { return } user.hoge()
ϧʔϓΛ·Θͯ͠ݕࡧ for product in products { if product.id == id
{ return product } }
ߴ֊ؔ͏ͱҰߦͰॻ͚Δ return products.filter{ $0.id == id }.first
͍͖ͳΓγϡοͱͨ͠ίʔυॻ ͚ͳ͍ • ΑΓΑ͍ॻ͖ํΛݟ͚ͭͨΒݹ͍ίʔυؚ Ίͯվળ͢ΔΑ͏ʹͯ͠Δ • ෳਓͰΔͳΒنͱ͔͋Δͱ໎͍ͳͯ͘ ศརͦ͏ • ૉৼΓେࣄ
ͱΓ͋͑ͣOptionalܕ
ͱΓ͋͑ͣOptionalܕʹ͠ͱ͜… class Book { var id: Int? var title: String?
var author: String? var createdAt: NSDate? . . . }
ࢀর͢Δͨͼʹ optional binding͢Δͷ ΊͬͪΌΊΜͲ͍ʂ
ۃྗOptionalܕʹ͠ͳ͍ • DBଆͰNotNullͳΒOptionalܕʹ͢Δඞཁͳ ͍ͷͰ • null͕ೖ͍ͬͯͨΒͦͦόάͩʂΈ͍ͨͳ ͷOptionalܕʹ͠ͳ͍΄͏͕͍͍͔ʁʁ • ྻۭͰॳظԽ͢Δ΄͏͕Αͦ͞͏
·ͱΊ
Swift͍͍ͧ • େ͖ͳΞϓϦ؆୯ʹSwiftԽͰ͖ͳ͍͔ ͠Εͳ͍͚ͲɺͰ͖Δͱ͔͜Β࢝Ί͍ͯ͜͏ • φͳݴޠͳͷͰָ͘͠ɺ҆શʹॻ͚ΔɻϞ νϕʔγϣϯͬͯ݁ߏॏཁ • ීஈϓϥΠϕʔτͰSwiftॻ͍ͯΔͱɺۀʹ ׆͔ͤͯͱͯΑ͍
ଞͷͱ͜ͷฉ͖͍ͨʂ • ͏ͪ͜͏ͨ͠Β͏·͍ͬͨ͘ʂͱ͔ • ͜͜ͰϋϚ͔ͬͨΒؾΛ͚ͭΖʂͱ͔ • ΈΜͳͰڠྗͯ͠SwiftͰָ͘͠ίʔσΟϯά ͍͖ͯ͠·͠ΐ͏ʂ