Rxを理解する切り口
サーバ、システム、インフラ
非同期アーキテクチャ、アクターモデル、メッセージ駆動プログラミング
Push型、イベント駆動、データ構造のストリーム化(※Functional Reactive Programming)、データバインディング※FRP
業務アプリ実装にFRPを使ってみた http://programplusgirl.tumblr.com/post/52698153869/frp
FRPについて理解するために参考にしたものhttp://qiita.com/busyoumono99/items/b355150fb69eae1584c2
リアクティブ
「反応」を意味するリアクティブプログラミング
データの変更が流れるように自動的に伝搬していくプログラミング手法時間変化する値や振る舞いを宣言的に行う(手順的な記述にならない)
プログラミングパラダイム
・オブジェクト指向→オブジェクトとメッセージの集まりを作成し、オブジェクト間のメッセージを定義して問題を解決する・関数型→プログラムを関数評価の連続とみなす。副作用や状態から関数を切り離す。
宣言型
性質を満たす結果が得られれば、結果を得る方法は気にしない。データを扱うということ
・データは入力される(最初に揃わない)・レスポンスを待つ(データはすぐに揃わない)
・データの全体がmassiveなため、部分的にしか使えない
データを扱うということ(課題)
・非同期である→ 時間軸に一様に配置されないから順番を記述しないほうが良い
ざっくり言って
「いつ呼ばれるかに依存しない書き方」ではないかRxを実現するのに必要な概念
・ストリーム(データをもつ時間軸、データはユーザからの入力であったりする)・ストリームをsubscribeするオブジェクト
・ストリーム上で起きるシグナル(シグナルに対する振る舞いを個別にプログラムする)
・Push型のデータバインディング(UIもしくはデータが変更されたときに、変更のイベントが自動で届く仕組み)
RxJava
分かった気になる初めてのRxJavahttps://speakerdeck.com/kirimin/fen-katutaqi-ninaruhazimetefalserxjava
この辺りまでの概念を考えた上であれば、適切にEventBusを使えるのではと思う。
EventBus
Implementing an Event Bus With RxJava - RxBushttp://nerds.weddingpartyapp.com/tech/2014/12/24/implementing-an-event-bus-with-rxjava-rxbus/
EventBus library
EventBushttps://github.com/greenrobot/EventBus