際際滷

際際滷Share a Scribd company logo
オブジェクト峺鬚僻砲
RxSwiftをしてみた
Twitterアカウントgrachro
2000定
兜^から、だいたいずっとJava
2014定
Oisix iPhoneアプリ羨ち貧げで
Oとプログラミングを毅輝
2016定
恷除はPythonとかKotlinの_kもやってます
徭失B初
ReactiveSwift
ReactiveCocoa
RxSwift
RxCocoa
PromiseKit
ReactKit
SwiftTask
書指v方侏のプログラム喘のライブ
ラリをいくつか{べてみて、繁議に
RxSwiftが匯桑しっくり栖たので
してみました。
朕肝
RxSwiftがしっくりきた
尖喇3つ
いてみた
デザインパタ`ンの
オブザ`バ`パタ`ン
で尖盾が辛嬬
RxSwiftがしっくりきた尖喇
その1
http://reactivex.io/documentation/observable.html
Composition via Observable Operators
Observables and observers are only the start of ReactiveX.
By themselves they¨d be nothing more than a slight extension of the standard
observer pattern, better suited to handling a sequence of events rather than a single
callback.
巷塀サイトでは、
階Uですが、
仝ObservablesとObserversを
軟泣とした、スタンダ`ドな
オブザ`バ`パタ`ンの々
とB初がされています。
Q賀する繁
Observer Subject
Q賀
ここで
オブザ`バ`パタ`ンを畽すと、
notify
Q賀鵑離ブジェクトの篁を
Q賀宀のオブジェクトがQ賀する
というパタ`ンでした。
Q賀する繁
Observer Observable
Q賀
ReactiveXだと、
subscrive
Q賀鵑Observableと柵ばれ、
Q賀宀はObservarとなります。
Observableから(element)が
Observerへどんどん送れてくるOになってま
す。
喘Zはなるところがありますが、
だいたい揖じ夛と尖盾しました。
RxSwiftがしっくりきた尖喇
その2
メソッドチェ`ンでかける
RxSwiftのコ`ド箭。
RxSwiftではQ賀鵑卦すオブジェク
トをQ賀何蛍がメソッドチェ`ン侘塀で
筝していきます。
Observable Q賀
Observer
Q賀何蛍
いっけんすると
10定參貧念にはやった、
仝送れるようなインタ`フェ`ス々
凋兆、マ`ティンファウラ`枠伏
ぽいので
オブジェクト峺鬚僻砲任砠v方侏プログラ
ムの兼肖が磯pします。
gHはメソッドチェ`ン嶄に侏が
笋錣辰討いので、それほどgではありません。
またこの侘塀はv方侏のライブラリで
よくられる侘なので、
蒙にRxSwift耕嗤の蒙來という
わけではありません。
RxSwiftがしっくりきた尖喇
その3
マ`ブル蹐
UMLだとyしいタイムライン
がわかりやすくなる
Q賀
Q賀宀1
Q賀宀2
マ`ブル蹐寮です。
嘔鬚の文咫がrgの送れを燕していて、
貧和のラインがQ賀鵑飯Q賀宀の
vSを燕しています。
RxSwiftのドキュメントはマ`ブル
を聞ってh苧されています。
このダイアグラムでUMLだと燕Fしにくかった
rgのU^がシンプルに燕Fできるようになりま
す。
參貧をふまえて
gHに聞いたい
シチュエ`ションを
覿┐靴
RxSwiftを
してみました。
タップしたら
すぐにrgがかかる
ネットワ`クI尖をg佩
ボタンはBAタップできる
ネットワ`クI尖は岷双でg佩
そのgタップされた秤鵑魯ャッシュして
肝のタイミングでまとめて僕佚
Kわったら
肝、I尖Y惚を燕幣
覿┘轡船絅┤`ション
3 2 1
ネットワ`クI尖
3 2 1
バッファ
ゞ1〃
書指
このI尖をRxSwift
で
どうなるかを
佩e`しました。
マ`ブル蹐く
とこうなります。
1つめの
Q賀
と
Q賀宀
2つめの
Q賀
と
Q賀宀
PublishSubject
Obserbver
Obserbver
Publish
Subject
Q賀鵑飯Q賀宀のペアを
2つBAさせています
3 2 1
ネットワ`クI尖
3 2 1
バッファ
ゞ1〃
3 2 1
ネットワ`クI尖
3 2 1
バッファ
ゞ1〃
恷兜に
タップされた秤鵑
Observableの匯Nの
PublishSubjectに
肝弖紗していきます。
1
3 2 1
UIButtonをタップしたら、
方、Sujectに弖紗(onNext)します。
rx_tapはRxCocoaのC嬬です。
RxCocoaはRxSwiftと揖rに聞えるライブラリで、
UIKitのクラスでRxSwiftを聞えるようにる。
1つ朕のQ賀麗に
弖紗された秤鵑
1つ朕のQ賀宀に
肝僕られていき
ます。
3 2 1
ネットワ`クI尖
3 2 1
バッファ
ゞ1〃
gHのコ`ドがこちら
恷兜のovserveOnで參週のI尖をバックグラウ
ンドでg佩するようにします。
これでBAタップができるようになります。
3 2 1
ネットワ`クI尖
3 2 1
バッファ
_queue:Subject
肝の2佩で
念のネットワ`ク
I尖を棋っている
gに聡まった
秤鵑鬟丱奪侫,
せています。
bufferを聞うと
聡まった、賄篩个破佑
れるようになりまが、
匯協g侯で腎塘双も
僕られてくるので
filterしています。
3 2 1
buffer
filter
3 2 1
3 2 1
ネットワ`クI尖
3 2 1
_serverResult:Subject
肝のflatMapで
ネットワ`クI尖
をします。
ゞ1〃
ネットワ`ク何蛍はは福待します。
掲揖豚を岷双にするI尖はRxSwiftだと
やり圭がつけられなかったので
児云ライブラリでとめます。
サ`バI尖Y惚は
仟しいObsarvableにくるまれて、
肝のQ賀、箸靴洞匹気譴泙后
ネットワ`クI尖
3 2 1
ネットワ`クI尖の
Y惚を2つめのQ賀
に弖紗して、
1つめのQ賀I尖はK阻。
ゞ1〃
3 2 1
ネットワ`クI尖
3 2 1
バッファ
ゞ1〃
2つ朕のQ賀鵑
ネットワ`クI尖
Y惚を卦すようにな
ります
恷瘁に2つめのQ賀宀┐海海任UILabelが
Q賀して、Q賀、鬟薀戰襪鳳輅勝
ここでもRxCocoaのbindToを聞います。
ゞ1〃ゞ2??3〃
書指やってみた湖
屎しいコ`ドかはともかくRxSwiftを聞
うと掲揖豚I尖を聞うコ`ドがかなりシ
ンプルにかけた。
エラ`I尖を秘れるとどうなるかはn}。
とわ冱え、ライブラリの畠悶颪魄冦佞
るのはrgがかかり、サンプルコ`ド參
貧のことをやる兼肖は互かった。
ご賠
ありがとうございました
書指のコ`ドはgithubにあげてます
https://github.com/grachro/RxSwiftSample

More Related Content

オフ?シ?ェクト峺鬚僻砲?Rx swiftをしてみた