LoginSignup
0
1

RxJavaを学ぶ

Last updated at Posted at 2018-10-14

#この文章について

RxJavaを使うために学んだことを備忘録としてメモ。

参考

リアクティブプログラミングへの理解がイマイチだったのでまとめてみた。
http://system.blog.uuum.jp/entry/%E3%83%AA%E3%82%A2%E3%82%AF%E3%83%86%E3%82%A3%E3%83%96%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%B8%E3%81%AE%E7%90%86%E8%A7%A3%E3%81%8C%E3%82%A4%E3%83%9E%E3%82%A4%E3%83%81%E3%81%A0%E3%81%A3

「RxJS」初心者入門 – JavaScriptの非同期処理の常識を変えるライブラリ
http://liginc.co.jp/web/js/151272

RxJavaとは

ReactiveXをJavaで使えるようにしたライブラリ、
ReactiveX公式サイト:http://reactivex.io/

Reactive X

公式サイトより引用。

ReactiveX is a library for composing asynchronous and event-based programs by using observable sequences.

つまり非同期処理とイベントベースの処理をObserbleパターンにより実現したものであるらしい。

Observleシーケンスとは?
さらに読み進めると以下の通り。

It is sometimes called “functional reactive programming” but this is a misnomer. ReactiveX may be functional, and it may be reactive, but “functional reactive programming” is a different animal. One main point of difference is that functional reactive programming operates on values that change continuously over time, while ReactiveX operates on discrete values that are emitted over time.

FRP(functional reactive programming)と似ているけど、そっちは時間に継続的な値に対して動作し、ReactiveXは個別の値に対して動作する…?

FRPとは?

そもそもこれは何を解決するために存在して、何がうまみなのか、ピンとくるのがなかなかない…。
根底にあるのは、非同期処理をもっと便利に簡単に!というものがあるようだ。

解決したい内容:非同期処理の問題点

近年のシステム(特にWebアプリケーション)では非同期処理の需要が高まっている。
しかし非同期はそのシステムが大きくなるにしたがって管理が難しくなる、具体的にはコールバック地獄に陥りエラーハンドリングが難しくなっていく…といった問題点がある。

これらの問題点に対して解決するライブラリの一つがReactiveXであり、マイクロソフトが採用しJavaSclipt向けに作ったのがRxJavaScliptとのこと。

解決方法について理解するために、Observleシーケンスなどのバックボーンの知識を学ぶ

ReactiveXはObserverパターン

Obserbleシーケンスについて

以下のサイトが非常にわかりやすかった。
http://liginc.co.jp/web/js/151272

イベントが一連の流れとして流れてくる(Stream)、これをObserbleシーケンスと言う。

イベントを受け取りたいユーザーはObserberを登録する。このObserber登録をSubscribeによって以下のように登録する。

Obserble.subscribe(new observer(...));

Obserberに通知される前にObserbleにたいして特定の処理をかけることができる、
これをOperationと呼ぶ。

Observable
    .filter() //Operation
    .map(User::getName) //Operatioin

.filterとか.mapとか…Obeserbleに付属しているこれらの関数は同時に戻り値として処理をかけたObserbleを返却するためメソッドチェーンのようにつなげることができる。

Observerには、
次の作業を表すのonNext()
作業終了を表すonComplete()
エラーを表すonError()
という三つメソッドがある。

Obserbaleではこの上記の三つのメソッドを流れに沿って呼び出しているが、この作業をemitterによって行っている。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1