Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた
by
Shinichiro Oba
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
Swift 2.0で RxSwift、ReactKit、 ReactiveCocoaを使ってみた 株式会社メルカリ iOSエンジニア ⼤庭慎⼀郎
Slide 2
Slide 2 text
⾃⼰紹介 ⼤庭 慎⼀郎 (ooba / bricklife) 株式会社メルカリ 2013年4⽉⼊社 「メルカリ」iOS版を開発
Slide 3
Slide 3 text
メルカリとは? いわゆる「フリマアプリ」 2013年7⽉ JP版リリース 2014年8⽉ US版リリース
Slide 4
Slide 4 text
Swift 2.0で リアクティブプログラミング
Slide 5
Slide 5 text
選択肢 RxSwift ReactKit ReactiveCocoa etc..
Slide 6
Slide 6 text
RxSwift ReactiveXによる正統派Rx RxCocoaと⼀緒に提供されている Swift 2.0対応版は2.0。現時点でプレリリース版のみ https://github.com/ReactiveX/RxSwift/tree/ 2.0.0-alpha.4
Slide 7
Slide 7 text
ReactKit LINEの稲⾒さん作。Swift初期からある 同じ作者のSwiftTaskと合わせて使う Swift 2.0対応版が正式リリースされている https://github.com/ReactKit/ReactKit
Slide 8
Slide 8 text
ReactiveCocoa Objective-C時代からある⽼舗 Swift 2.0対応版は4.0。現時点でプレリリース版のみ https://github.com/ReactiveCocoa/ ReactiveCocoa/tree/v4.0-alpha.1
Slide 9
Slide 9 text
公式なドキュメントと サンプル
Slide 10
Slide 10 text
RxSwift ドキュメント、サンプル ともにリポジトリの中に 含まれる。結構豊富
Slide 11
Slide 11 text
ReactKit ドキュメントは最低限。 サンプルは専⽤のリポジ トリがあって結構豊富 https://github.com/ ReactKit/ ReactKitCatalog
Slide 12
Slide 12 text
ReactiveCocoa ドキュメントは多めだが、サンプルはなし 現状README.mdのコードもコンパイル通らない… つらい…
Slide 13
Slide 13 text
実際に使ってみた
Slide 14
Slide 14 text
やってみたこと データバインディング(プロパティ⇔UI) APIアクセスのストリーム化 インクリメンタルサーチ
Slide 15
Slide 15 text
データバインディング
Slide 16
Slide 16 text
Swiftでのプロパティ更新監視 純粋なSwiftのクラスではKVOができなくなった リアクティブプログラミングのライブラリでは各⾃で 更新監視できる仕組みを⽤意している ※ NSObjectのサブクラスでdynamicなプロパティな らKVOが動く
Slide 17
Slide 17 text
RxSwift KVOの代わりにVariableを使う
Slide 18
Slide 18 text
ReactKit KVOに依存
Slide 19
Slide 19 text
ReactiveCocoa KVOの代わりにMutablePropertyを使う
Slide 20
Slide 20 text
古き良きReactiveCocoa プロパティの変更をテキストフィールドに⾃動反映 テキストフィールドの変更をプロパティに⾃動反映 RAC(self.accountNumberTextField, text) = RACObserve(self.viewModel, accountNumber); RAC(self, inputText) = textField.rac_textSignal;
Slide 21
Slide 21 text
APIアクセスのストリーム化 with APIKit
Slide 22
Slide 22 text
RxSwift
Slide 23
Slide 23 text
ReactKit
Slide 24
Slide 24 text
ReactiveCocoa
Slide 25
Slide 25 text
インクリメンタルサーチ
Slide 26
Slide 26 text
RxSwift
Slide 27
Slide 27 text
ReactKit
Slide 28
Slide 28 text
ReactiveCocoa
Slide 29
Slide 29 text
他にも試したいこと プロミス デリゲートメソッドコールのストリーム化 通知のストリーム化 MVVM etc..
Slide 30
Slide 30 text
どれを使えばいいか どれも⻑所短所があって選ぶの難しい 機能や安定性、学習コストを考えると現時点では RxSwiftか? データバインディングはSwiftBondなどを使う選択肢 もあり
Slide 31
Slide 31 text
組んでみたコード 整理してGitHubで公開予定 公開次第、資料アップデートします
Slide 32
Slide 32 text
ありがとうございました メルカリ新規事業でメンバー⼤募集中! https://www.wantedly.com/projects/29699 Swift 2.0+iOS 8以上で開発したい⼈ ご連絡お待ちしております