Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
Shinichiro Oba
October 14, 2015
Programming
10
4.4k
Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
potatotips #22で発表した資料の加筆修正版です。
http://connpass.com/event/20240/
Shinichiro Oba
October 14, 2015
Tweet
Share
More Decks by Shinichiro Oba
See All by Shinichiro Oba
サーバサイドエンジニアと効率よく開発するためにやっていること
bricklife
8
1.7k
アッテ開発の技術:Swift と RxSwift
bricklife
19
16k
RxSwiftのobserveOnとsubscribeOnを理解する
bricklife
20
6.4k
ReactiveCocoaのゆるい紹介とメルカリでの活用事例
bricklife
3
3.2k
Apple Pay対応のやりかた
bricklife
1
24k
iOS版グローバル対応の罠と技
bricklife
8
23k
Other Decks in Programming
See All in Programming
SRE NEXT 2022: Sensible Incident Management for Software Startups
takanabe
2
340
Reinventing the wheel ... as a service
mariofusco
3
270
競プロへの誘 -いざな-
u76ner
0
360
Get Ready for Jakarta EE 10
ivargrimstad
0
2.4k
Quartoを使ってみませんか / quarto_get_started
s_uryu
0
150
Kotlin KSP - Intro
taehwandev
1
480
Update from the Elixir team - 2022
whatyouhide
0
190
偏見と妄想で語るスクリプト言語としての Swift / Swift as a Scripting Language
lovee
2
270
LOWYAの信頼性向上とNew Relic
kazumax55
4
350
heyにおけるSREの大切さ~マルチプロダクト運用の「楽しさ」と「難しさ」および今後の展望~
fufuhu
3
1.7k
About Type Syntax Proposal
quramy
1
1.1k
A technique to implement DSL in Ruby
okuramasafumi
0
760
Featured
See All Featured
The Language of Interfaces
destraynor
148
20k
Facilitating Awesome Meetings
lara
29
3.9k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
15
910
What’s in a name? Adding method to the madness
productmarketing
11
1.5k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
15k
Producing Creativity
orderedlist
PRO
333
37k
Typedesign – Prime Four
hannesfritz
33
1.3k
5 minutes of I Can Smell Your CMS
philhawksworth
196
18k
Learning to Love Humans: Emotional Interface Design
aarron
261
37k
StorybookのUI Testing Handbookを読んだ
zakiyama
4
2k
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
268
11k
No one is an island. Learnings from fostering a developers community.
thoeni
9
1.1k
Transcript
Swift 2.0で RxSwift、ReactKit、 ReactiveCocoaを使ってみた 株式会社メルカリ iOSエンジニア ⼤庭慎⼀郎
⾃⼰紹介 ⼤庭 慎⼀郎 (ooba / bricklife) 株式会社メルカリ 2013年4⽉⼊社 「メルカリ」iOS版を開発
メルカリとは? いわゆる「フリマアプリ」 2013年7⽉ JP版リリース 2014年8⽉ US版リリース
Swift 2.0で リアクティブプログラミング
選択肢 RxSwift ReactKit ReactiveCocoa etc..
RxSwift ReactiveXによる正統派Rx RxCocoaと⼀緒に提供されている Swift 2.0対応版は2.0。現時点でプレリリース版のみ https://github.com/ReactiveX/RxSwift/tree/ 2.0.0-alpha.4
ReactKit LINEの稲⾒さん作。Swift初期からある 同じ作者のSwiftTaskと合わせて使う Swift 2.0対応版が正式リリースされている https://github.com/ReactKit/ReactKit
ReactiveCocoa Objective-C時代からある⽼舗 Swift 2.0対応版は4.0。現時点でプレリリース版のみ https://github.com/ReactiveCocoa/ ReactiveCocoa/tree/v4.0-alpha.1
公式なドキュメントと サンプル
RxSwift ドキュメント、サンプル ともにリポジトリの中に 含まれる。結構豊富
ReactKit ドキュメントは最低限。 サンプルは専⽤のリポジ トリがあって結構豊富 https://github.com/ ReactKit/ ReactKitCatalog
ReactiveCocoa ドキュメントは多めだが、サンプルはなし 現状README.mdのコードもコンパイル通らない… つらい…
実際に使ってみた
やってみたこと データバインディング(プロパティ⇔UI) APIアクセスのストリーム化 インクリメンタルサーチ
データバインディング
Swiftでのプロパティ更新監視 純粋なSwiftのクラスではKVOができなくなった リアクティブプログラミングのライブラリでは各⾃で 更新監視できる仕組みを⽤意している ※ NSObjectのサブクラスでdynamicなプロパティな らKVOが動く
RxSwift KVOの代わりにVariableを使う
ReactKit KVOに依存
ReactiveCocoa KVOの代わりにMutablePropertyを使う
古き良きReactiveCocoa プロパティの変更をテキストフィールドに⾃動反映 テキストフィールドの変更をプロパティに⾃動反映 RAC(self.accountNumberTextField, text) = RACObserve(self.viewModel, accountNumber); RAC(self, inputText)
= textField.rac_textSignal;
APIアクセスのストリーム化 with APIKit
RxSwift
ReactKit
ReactiveCocoa
インクリメンタルサーチ
RxSwift
ReactKit
ReactiveCocoa
他にも試したいこと プロミス デリゲートメソッドコールのストリーム化 通知のストリーム化 MVVM etc..
どれを使えばいいか どれも⻑所短所があって選ぶの難しい 機能や安定性、学習コストを考えると現時点では RxSwiftか? データバインディングはSwiftBondなどを使う選択肢 もあり
組んでみたコード 整理してGitHubで公開予定 公開次第、資料アップデートします
ありがとうございました メルカリ新規事業でメンバー⼤募集中! https://www.wantedly.com/projects/29699 Swift 2.0+iOS 8以上で開発したい⼈ ご連絡お待ちしております