Swift 2.0でRxSwift、ReactKit、ReactiveCocoaを使ってみた

>100 Views

October 14, 15

スライド概要

potatotips #22で発表した資料の加筆修正版です。
http://connpass.com/event/20240/

profile-image

SwiftとLEGOとBluetooth LEが好きなプログラマ

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

関連スライド

各ページのテキスト
1.

Swift 2.0で RxSwift、ReactKit、 ReactiveCocoaを使ってみた 株式会社メルカリ iOSエンジニア ⼤庭慎⼀郎

2.

⾃⼰紹介 ⼤庭 慎⼀郎 (ooba / bricklife) 株式会社メルカリ 2013年4⽉⼊社 「メルカリ」iOS版を開発

3.

メルカリとは? いわゆる「フリマアプリ」 2013年7⽉ JP版リリース 2014年8⽉ US版リリース

4.

Swift 2.0で リアクティブプログラミング

5.

選択肢 RxSwift ReactKit ReactiveCocoa etc..

6.

RxSwift ReactiveXによる正統派Rx RxCocoaと⼀緒に提供されている Swift 2.0対応版は2.0。現時点でプレリリース版のみ https://github.com/ReactiveX/RxSwift/tree/ 2.0.0-alpha.4

7.

ReactKit LINEの稲⾒さん作。Swift初期からある 同じ作者のSwiftTaskと合わせて使う Swift 2.0対応版が正式リリースされている https://github.com/ReactKit/ReactKit

8.

ReactiveCocoa Objective-C時代からある⽼舗 Swift 2.0対応版は4.0。現時点でプレリリース版のみ https://github.com/ReactiveCocoa/ ReactiveCocoa/tree/v4.0-alpha.1

9.

公式なドキュメントと サンプル

10.

RxSwift ドキュメント、サンプル ともにリポジトリの中に 含まれる。結構豊富

11.

ReactKit ドキュメントは最低限。 サンプルは専⽤のリポジ トリがあって結構豊富 https://github.com/ ReactKit/ ReactKitCatalog

12.

ReactiveCocoa ドキュメントは多めだが、サンプルはなし 現状README.mdのコードもコンパイル通らない… つらい…

13.

実際に使ってみた

14.

やってみたこと データバインディング(プロパティ⇔UI) APIアクセスのストリーム化 インクリメンタルサーチ

15.

データバインディング

16.

Swiftでのプロパティ更新監視 純粋なSwiftのクラスではKVOができなくなった リアクティブプログラミングのライブラリでは各⾃で 更新監視できる仕組みを⽤意している ※ NSObjectのサブクラスでdynamicなプロパティな らKVOが動く

17.

RxSwift KVOの代わりにVariableを使う

18.

ReactKit KVOに依存

19.

ReactiveCocoa KVOの代わりにMutablePropertyを使う

20.

古き良きReactiveCocoa RAC(self.accountNumberTextField, text) = RACObserve(self.viewModel, accountNumber); プロパティの変更をテキストフィールドに⾃動反映 RAC(self, inputText) = textField.rac_textSignal; テキストフィールドの変更をプロパティに⾃動反映

21.

APIアクセスのストリーム化 with APIKit

22.

RxSwift

23.

ReactKit

24.

ReactiveCocoa

25.

インクリメンタルサーチ

26.

RxSwift

27.

ReactKit

28.

ReactiveCocoa

29.

他にも試したいこと プロミス デリゲートメソッドコールのストリーム化 通知のストリーム化 MVVM etc..

30.

どれを使えばいいか どれも⻑所短所があって選ぶの難しい 機能や安定性、学習コストを考えると現時点では RxSwiftか? データバインディングはSwiftBondなどを使う選択肢 もあり

31.

組んでみたコード 整理してGitHubで公開予定 公開次第、資料アップデートします

32.

ありがとうございました メルカリ新規事業でメンバー⼤募集中! https://www.wantedly.com/projects/29699 Swift 2.0+iOS 8以上で開発したい⼈ ご連絡お待ちしております