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
kuroyam
June 08, 2016
Programming
440
4
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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.4k
アプリ設計改善の旅路
kuroyam
1
1.1k
途中からSwiftLint
kuroyam
1
650
Other Decks in Programming
See All in Programming
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
620
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
180
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
130
Inside Stream API
skrb
1
820
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
120
Contextとはなにか
chiroruxx
1
380
Datadog × OpenTelemetry 入門と実践のあいだ
kn_to_maxpno
1
180
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
「なぜそう決めたのか」を残し続ける仕組み ― Notion AI カスタムエージェント × Slack連携による設計判断の自動記録 - NIKKEI Tech Talk #47
niftycorp
PRO
0
250
コンテキストの使い捨てをやめる — ビジネスルール駆動開発と miko —
ioki
0
260
過去最大のMCPアップデート! 2026-07-28 RC版の謎に迫る
licux
6
430
Spec Driven Development | AI Summit Lisbon
danielsogl
PRO
0
230
Featured
See All Featured
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
Building a A Zero-Code AI SEO Workflow
portentint
PRO
0
610
Building AI with AI
inesmontani
PRO
1
1.1k
Context Engineering - Making Every Token Count
addyosmani
9
1k
State of Search Keynote: SEO is Dead Long Live SEO
ryanjones
0
210
The Pragmatic Product Professional
lauravandoore
37
7.3k
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
4 Signs Your Business is Dying
shpigford
187
22k
Unsuck your backbone
ammeep
672
58k
Code Reviewing Like a Champion
maltzj
528
40k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
250
1.3M
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
170
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Ͱָ͘͠ίʔσΟϯά ͍͖ͯ͠·͠ΐ͏ʂ