Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Objective-Cで書かれたアプリをSwift化したときの話
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kuroyam
June 08, 2016
Programming
450
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
SONY CISC-NEWS NWS-1750 + NWB-225 フレームバッファの NetBSD/news68k ドライバ実装 / OSC2026Hiroshima
tsutsui
0
120
標準パッケージに uuid が追加された 背景から見る Go らしい意思決定 / go_127_uuid_decision
convto
5
7.5k
20260914 AIエージェント時代のPlatform Engineering LLM基盤とプロダクトの責務境界線
kanfab1
7
2.1k
UPDATE をやめる — EF Core でマスタをバージョン管理する
panda728
PRO
0
220
新卒PdEのリアル
ryu1013
1
500
Starting & Sustaining Code-Based E2E Testing for Non-Coding QA Teams( #jasstniigata )
teyamagu
PRO
1
430
LoopHub - ローカルで動く GitHub で、AI と共同開発
jugyo
1
560
Streamlitで実現する自然言語データアプリ開発
ayumu_yamaguchi
1
290
AGENTS.md Is Not Enough:Build Skills, Don't Download Them
lx_t
0
120
仕様駆動開発による爆速プロダクト開発 / Bakusoku Spec Driven Development
kobakei
0
120
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
200
App Intentsのビルドプロセスを支える技術
kntkymt
0
400
Featured
See All Featured
For a Future-Friendly Web
brad_frost
183
10k
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
360
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
12k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
3k
Faster Mobile Websites
deanohume
310
32k
Accessibility Awareness
sabderemane
1
210
Bootstrapping a Software Product
garrettdimon
PRO
306
120k
So, you think you're a good person
axbom
PRO
2
2.2k
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
6.2k
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
470
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.6k
Information Architects: The Missing Link in Design Systems
soysaucechin
1
1.2k
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Ͱָ͘͠ίʔσΟϯά ͍͖ͯ͠·͠ΐ͏ʂ