SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

RxJavaによるリアクティブプログラミング入門

RxJavaの新機能、ParallelFlowableを活用する

RxJavaによるリアクティブプログラミング入門(8)

  • X ポスト
  • このエントリーをはてなブックマークに追加

Flowableへの変換(sequentialメソッド)

 ParallelFlowableは異なるレール上で処理を行い、それぞれのレール上のSubscriberに通知を行います。しかし、処理が複数に分岐して同時に実行していても最終的に各レールの通知をマージして、1つのSubscriberで購読したいことがあります。つまり、ParallelFlowableをFlowableに変換するということです。それを実現するため、ParallelFlowableにはsequentialメソッドを用意しています。

マーブルダイアグラム
マーブルダイアグラム

 sequentialメソッドは1つのレール上の処理でエラーが発生した場合、そのタイミングでエラーを通知してきます。しかし、場合によっては他の正常に処理をしているレールの処理を終えてからエラーの通知を受け取りたい場合もあるかと思います。そのため、エラーの通知を最後にするsequentialDelayErrorメソッドも用意されています。

マーブルダイアグラム
マーブルダイアグラム

 注意点として、エラー発生後のデータ通知がParallelFailureHandlingの設定の有無で変わることを意識していないと、意図したデータやエラーの通知を受け取れない可能性があります。

 また、sequentialDelayErrorメソッドは2.0.7より導入された機能なので、それ以前のバージョンにはないことに注意してください。

sequential/sequentialDelayErrorメソッド
  • rsequential()
  • sequential(int prefetch)
  • sequentialDelayError()
  • sequentialDelayError(int prefetch)
引数
引数の型 引数名 説明
int prefetch 各レールに対して通知するようにリクエストするデータ数。デフォルト(指定しない場合)では128。

まとめ

 今回はRxJava 2.0.5から新たに追加されたParallelFlowableについて、執筆時点では最新のバージョン2.1.2を使って前回よりも詳しく見てきました。ただし、このParallelFlowabeはまだベータ版の段階なので、クラス名やメソッド名の変更やふるまいが変わる可能性が高く、今のバージョンになるまでに何度かふるまいやAPIの変更が発生しています。今後もいろいろと変わっていく可能性が高いので、プロダクトに導入するのはベータ版が終わり安定版となるまで待ったほうがいいでしょう。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
RxJavaによるリアクティブプログラミング入門連載記事一覧

もっと読む

この記事の著者

須田 智之(スダ トモユキ)

十数年間おもにSI企業にシステムエンジニアとして携わり、現在はフリーランスに。企業向けのシステム開発のかたわら個人でのモバイルアプリの開発やIT分野の記事も執筆。RxJava 2.0に対応した著書『RxJavaリアクティブプログラミング』が2017年2月16日より発売中。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/10160 2017/09/20 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング