第2回RxSwift勉強会 @ Sansan参加レポート
2016年8月19日、第2回RxSwift勉強会 @ Sansanに参加してきました。
そのレポートをします。
@kazu0620さんの発表。
資料もすぐに上がっていた。
https://speakerdeck.com/kazu0620/rxexamplekaraxue-bu-rxswift
勉強になった点を網羅していきます。
bindToについて
ストリームの要素が流れてくるのを購読して、その要素を対象に紐付ける。Nextイベントのみに反応して、ErrorイベントとCompletedイベントでは反応しないものだそうです。
Observableを他のObservableと紐付けるものだと理解していたのですが、Subscribeを簡単にするものという認識がなかったので、理解が深まりました。
ShareReplayとHot変換
Observableはシーケンスの計算方法を定義したもの。購読(subscribe)するまでは実行はされない。逆にいうと購読(subscribe)するたびに実行される。
つまり、bindToやsubscribeを2回したら2回実行される。
これをsubscribeの実行は1度だけにまとめてくれるのがShareReplayの機能でこのストリームを分岐することをHot変換というらしいです。
Hot変換のイメージができました。(いままでドキュメントみても概念が理解できなかったのです。。)
Driver
DriverUIパーツをbindするもの。メインスレッドで実行されて、エラーを返さない。複数Viewをbindしても1つのsubscriptionが生成される(hot変換)とのこと。
https://speakerdeck.com/muratayusuke/rxswiftdezuo-ruapiratupafalsepatan
APIを作成する際のエラーパターンをRxSwiftで作成した場合の処理を共有していました。
成功、失敗でその内容を取得するかどうかを以下の4パターンにわけて、それぞれRxSwiftで実装した場合の例を話していました。
- 成功 or 失敗だけわかればいい
- 成功したときだけ値がほしい
- 失敗したときだけエラー内容がほしい
- 成功したら値が、失敗したらエラー内容がほしい
ユーザーログイン機能はまさに自分も実装中のものでエラーの処理はいつも頭を悩ませているのですが、とても参考になる発表でした!
さいごに
とてもよい充実した勉強会になりました。
RxSwiftはなかなかネットで調べるだけだと理解しきれなかったのですが、
RxSwiftの理解がさらに深まった勉強会になったと思います。
参加してよかった!