第2回RxSwift勉強会 @ Sansan参加レポート

2016年8月19日、第2回RxSwift勉強会 @ Sansanに参加してきました。
そのレポートをします。


@kazu0620さんの発表。 資料もすぐに上がっていた。

https://speakerdeck.com/kazu0620/rxexamplekaraxue-bu-rxswift

勉強になった点を網羅していきます。

bindToについて

ストリームの要素が流れてくるのを購読して、その要素を対象に紐付ける。Nextイベントのみに反応して、ErrorイベントとCompletedイベントでは反応しないものだそうです。 Observableを他のObservableと紐付けるものだと理解していたのですが、Subscribeを簡単にするものという認識がなかったので、理解が深まりました。

fig1

ShareReplayとHot変換

Observableはシーケンスの計算方法を定義したもの。購読(subscribe)するまでは実行はされない。逆にいうと購読(subscribe)するたびに実行される。
つまり、bindToやsubscribeを2回したら2回実行される。 これをsubscribeの実行は1度だけにまとめてくれるのがShareReplayの機能でこのストリームを分岐することをHot変換というらしいです。

fig3

Hot変換のイメージができました。(いままでドキュメントみても概念が理解できなかったのです。。)

Driver

DriverUIパーツをbindするもの。メインスレッドで実行されて、エラーを返さない。複数Viewをbindしても1つのsubscriptionが生成される(hot変換)とのこと。

fig4


@muratayusuke

https://speakerdeck.com/muratayusuke/rxswiftdezuo-ruapiratupafalsepatan

APIを作成する際のエラーパターンをRxSwiftで作成した場合の処理を共有していました。
成功、失敗でその内容を取得するかどうかを以下の4パターンにわけて、それぞれRxSwiftで実装した場合の例を話していました。

  1. 成功 or 失敗だけわかればいい
  2. 成功したときだけ値がほしい
  3. 失敗したときだけエラー内容がほしい
  4. 成功したら値が、失敗したらエラー内容がほしい

ユーザーログイン機能はまさに自分も実装中のものでエラーの処理はいつも頭を悩ませているのですが、とても参考になる発表でした!


さいごに

とてもよい充実した勉強会になりました。 RxSwiftはなかなかネットで調べるだけだと理解しきれなかったのですが、
RxSwiftの理解がさらに深まった勉強会になったと思います。
参加してよかった!