RxSwift
USAMI Kosuke (Fenrir Inc.)
RxSwift
ReactiveX for Swift
→ ReactiveX family : Rx.NET / RxJS / RxJava / ...
RxSwift Released!
2.0.0 : 2016/01/02
(Latest release = 2.1.0 : 2016/01/11)
5分でわかる
RxSwift
とりあえず使
ってみるため
の知識
とりあえず使ってみるための知識
→ Observable
→ Subscribe
→ Error Handling
Observable
Observable
→ 非同期データストリーム
→ UI からのアクション
→ OS からの Notification
→ URL セッションのレスポンス
Observable の要素
→ Next
→ Completed
→ Error
Next
→ case .Next(let value)
→ value = ストリーム内のデータ
Completed
→ case .Completed
→ ストリームの終わり
→ 明示的な終わりがないストリームもある
Error
→ case .Error(let error)
→ error = ErrorType 型の値
→ ストリームの終わりでもある
Observable の生成
→ Observable.create などで生成
→ RxCocoa が用意している rx_tap /
rx_notification / rx_response / ...
Subscribe
Subscribe
→ ストリームからデータを受け取る
→ subscribeNext
→ subscribeCompleted
→ subscribeError
例 : UIButton アクション
hogeButton.rx_tap
.subscribeNext { [unowned self] _ in
self.hoge()
}
例 : NSNotification
let center = NSNotificationCenter.defaultCenter()
center.rx_notification(UIApplicationDidBecomeActiveNotification)
.subscribeNext { [unowned self] _ in
self.hoge()
}
例 : NSURLSession
let session: NSURLSession = ...
let request = NSURLRequest(...)
session.rx_response(request)
.subscribeNext { (data, response) in
...
}
Error
Handling
catchError
hogeObservable
.catchError { error in
...
}
.subscribeNext {
...
}
retry
hogeObservable
.retry(3) // 3回までリトライ
.subscribeNext {
...
}
retryWhen
hogeObservable
.retryWhen { _ in
// 30秒後にリトライ
return Observable.timer(30, ...)
}
.subscribeNext {
...
}
もうちょっと
Rx らしく
もうちょっと Rx らしく
→ Transforming / Filtering
→ Combining
→ Subject
Transforming
/ Filtering
Transforming / Filtering
→ Observable に対して map / flatMap / filter など
→ Array に対する map / flatMap / filter と同様
map
hogeObservable
.map { $0 * 10 }
flatMap
filter
Chaining Operators
hogeObservable
.filter { ... }
.map { ... }
.subscribeNext {
...
}
Combining
Combining
→ 複数のストリームをひとつのストリームにまとめ
る
merge
combineLatest
Subject
Subject
→ Observable の一種
→ 外部から Subject にデータを流せる
→ Hot Observable
データを流す
let subject = PublishSubject<String>()
subject.on(.Next("a"))
subject.on(.Next("b"))
subject.on(.Completed)
//////////
subject.subscribeNext { ... }
ストリームの分岐
→ ひとつのストリームから複数の Subscriber に
→ (Hot Observable)
おさらい
おさらい
→ Observable
→ Subscribe
→ Error Handling
→ Transforming / Filtering
→ Combining
→ Subject
Have a Happy
RxSwift Life!

More Related Content

PDF
RxSwift x APIKit
PDF
RxSwiftのデータバインディングだけ
PDF
Rx swift,Repro framewolrk
PDF
Sansan様 登壇資料
PDF
クラスメソッド第4回登壇資料 RxRealm
PDF
RxSwift x Realm
PDF
RxSwift
PDF
RxJava on Android
RxSwift x APIKit
RxSwiftのデータバインディングだけ
Rx swift,Repro framewolrk
Sansan様 登壇資料
クラスメソッド第4回登壇資料 RxRealm
RxSwift x Realm
RxSwift
RxJava on Android

What's hot (20)

KEY
Starting java fx
PDF
freee社でのReactiveCocoa活用例
PDF
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
PDF
形式手法で捗る!インフラ構成の設計と検証
PDF
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
PDF
javascript を Xcode でテスト
PDF
Serverless apps on aws using scala
PDF
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
PDF
Ruby風Swift NSOperation編
PPTX
Startup JavaScript
PDF
実戦Scala
PDF
Reactive Systems と Back Pressure
PDF
Sbtのマルチプロジェクトはいいぞ
PPTX
Scala.jsはじめました!
PDF
ScalaにまつわるNewsな話
PPTX
Scala.jsはじめました?
PPTX
Gcflt会2017/4/2
PPTX
基礎構文班 5回目 繰り返し
PDF
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
PDF
OSC2016 Tokyo/Spring LT
Starting java fx
freee社でのReactiveCocoa活用例
形式手法と AWS のおいしい関係。- モデル検査器 Alloy によるインフラ設計技法 #jawsfesta
形式手法で捗る!インフラ構成の設計と検証
JavaScriptCore.framework の普通な使い方 #cocoa_kansai
javascript を Xcode でテスト
Serverless apps on aws using scala
レイヤードアーキテクチャを意識したPHPアプリケーションの構築
Ruby風Swift NSOperation編
Startup JavaScript
実戦Scala
Reactive Systems と Back Pressure
Sbtのマルチプロジェクトはいいぞ
Scala.jsはじめました!
ScalaにまつわるNewsな話
Scala.jsはじめました?
Gcflt会2017/4/2
基礎構文班 5回目 繰り返し
AWS は形式手法の夢を見るか? - モデル検査器 Alloy によるインフラ設計
OSC2016 Tokyo/Spring LT
Ad

Similar to RxSwift (20)

PDF
Reactive Extensions v2.0
PDF
MlnagoyaRx
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
PDF
Reactive Extensionsで非同期処理を簡単に
PDF
node-handlersocket
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
PDF
How to Make Own Framework built on OWIN
PDF
linq.js - Linq to Objects for JavaScript
PPTX
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
PPTX
Reactつかってみた
PDF
YARV INTRODUCTION
PPTX
関数型言語&形式的手法セミナー(3)
PDF
WebSocket+Akka(Remote)+Play 2.1 Java
PDF
OSvのご紹介 in OSC2014 Tokyo/Fall
PDF
OSvの概要と実装
PDF
ATN No.2 Scala事始め
PPT
Groovyコンファレンス
PDF
HeapStats @ Seasar Conference 2015 LT
PDF
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
PDF
NoSQL and JavaScript 2013-02-09
Reactive Extensions v2.0
MlnagoyaRx
C#次世代非同期処理概観 - Task vs Reactive Extensions
Reactive Extensionsで非同期処理を簡単に
node-handlersocket
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
How to Make Own Framework built on OWIN
linq.js - Linq to Objects for JavaScript
.NET Web プログラミングにおける非同期 IO のすべて (Build Insider OFFLINE)
Reactつかってみた
YARV INTRODUCTION
関数型言語&形式的手法セミナー(3)
WebSocket+Akka(Remote)+Play 2.1 Java
OSvのご紹介 in OSC2014 Tokyo/Fall
OSvの概要と実装
ATN No.2 Scala事始め
Groovyコンファレンス
HeapStats @ Seasar Conference 2015 LT
2012 osc北海道 セッション資料「blackjumbodog利用のすすめ」
NoSQL and JavaScript 2013-02-09
Ad

More from Kosuke Usami (17)

PDF
SnapKit
PDF
View 系ライブラリに関する悩み
PDF
Auto Layout Tips
PDF
Eddystone Beacon
PDF
Xamarin で Apple Watch アプリを作る
PDF
iBeacon Applications
PDF
APIKit
PDF
Swift Library
PDF
JXUG Conference 2 West
PDF
すごいHaskell読書会
PDF
Xamarin.iOS
PDF
CotEditor Script
PDF
Affine Transform
PDF
Semantic Versioning
KEY
Mac アプリの Retina 対応
KEY
Mountain Lion Sharing Service
KEY
OS X LionのVersions対応
SnapKit
View 系ライブラリに関する悩み
Auto Layout Tips
Eddystone Beacon
Xamarin で Apple Watch アプリを作る
iBeacon Applications
APIKit
Swift Library
JXUG Conference 2 West
すごいHaskell読書会
Xamarin.iOS
CotEditor Script
Affine Transform
Semantic Versioning
Mac アプリの Retina 対応
Mountain Lion Sharing Service
OS X LionのVersions対応

RxSwift