ObservableObservableは、Observableへsubscribingするためのメソッドを提供します。乱暴に言うと、Observableは監視対象のデータを設定し、そのデータの流れ(ストリーム)を検知するメソッドを提供するクラスです。わかりにくいとは思いますが、実際に実装をすることで少しづつ理解をしましょう。基本実装(Java7)Observableを使用したコードを実装します。文字列リストをObservableで扱います。リストに格納したデータを、onNextメソッドで取りだします。Observableオブジェクトの作成Observable.just()でObservableオブジェクトを生成します。Observable.just(getList());ObserverインターフェースのonNextメソッドは、Observable.just()の引数を受け取ります。subscribeメソッドObservableオブジェクトからsubscribeメソッドを呼び出します。}});subscribeメソッドは、以下のメソッドを順に呼び出します。onNextonCompletedonNextの処理が完了すると、onCompletedメソッドが呼び出されます。途中でエラーが起こるとonErrorメソッドが呼びだされます。基本実装(Java8)次に上記の処理をJava8で書き換えます。Observableの機能は、Java8の機能を使うことで、よりシンプルに実装することができます。onCompleted());冗長だったコードがシンプルになりました。記述方法が異なるだけで、処理はJava7と全く同じです。実装を終えたら、ビルドしてアプリを実行します。Java7で実行します。Java7コンソールログを確認します。onCompleted.続いてJava8で実行します。Java8コンソールログを確認します。まとめObservableを使うと、APIやSQLiteを使った非同期処理も手軽に実装できます。学習コストは高いですが、見合った効果はあるので導入してみてください。APIに慣れていれば、さらに習得は早いでしょう。リアクティブプログラミングここから先は、リアクティブプログラミングの説明です。Observableの使い方ではなく、リアクティブプログラミングを学習したい人が対象です。考え方リアクティブプログラミング(以下FRP)の学習で習得しなければならないのは、ストリームという考え方です。この考え方は、従来のオブジェクト志向の考え方に慣れていると、最初は頭を悩ますかもしれません。オブジェクト志向はデータを物として捉えます。UMLの記述は典型的なオブジェクト志向の考え方です。UMLクラス図FRPを考える場合は、ストリームでデータを捉えなければいけません。Streamストリームは、データやイベントの流れです。クリックイベントやイベントバスは、イベントストリームとして作成します。変数、ユーザー入力、プロパティ、キャッシュ、データ構造などは、データストリームとして作成します。何でもストリームにして物を考えます。これがFRPの特徴です。この記事のサンプルコードをデータストリームで考えてみましょう。---suzuki---sasaki---sato---文字列リストのストリームを作成しています。sはstreamのsです。RxJavaは、ストリームをObservableオブジェクトで表します。この命名はわかりにくい表現ですが、慣れるしかありません。このストリームを取得、つまり"listening"することをsubscribingと呼びます。RxJavaの場合、このメソッドはsubscribe()です。このオブジェクト名とメソッド名の不明瞭さは、プログラマをFRPから遠ざける原因だと思います。---suzuki---sasaki---sato---rはresultのrです。結果のストリームは、初期のストリームと同じです。ストリームのデータは加工していません。RxJavaの場合、結果はonNext()で受け取ります。subscribe()でストリームを取得(観察)しにいって、onNext()で加工されたデータを排出するということを理解してください。本格的にリアクティブプログラミングを学習するなら、マルチスレッドをきっちり学習することをお勧めします。その際は、以下の書籍をお勧めします。2006-03-21AmazonKindle書籍名がデザインパターン入門となっていますが、スレッドを基本から説明した本です。デザインパターンと命名したのは、ベストセラーの姉妹本のせいでしょう。わかりやすい良書なので、手元に置いておくと良いでしょう。余力がある人、プログラミングに自信がある人は、以下を合わせて読むと、さらに良いと思います。2006-11-22AmazonKindle書籍を読んで、コーディングをするという作業を徹底的に繰り返してください。リアクティブプログラミングは、アプリ作成の大きな力となるはずです。