既存のイベントや非同期処理とRxを連携させるため、Observableに変換する機能が用意されている

これらの変換処理は言語やプラットフォームごと固有の物に合わせて作られているので、何からObservableに変換できるのかはドキュメントを参照してください。

ここでは有名どころを上げていきます

eventから変換するもの

Rx.Observable.fromEvent(RxJS)

DOMElementとイベント名を指定すると、指定したDOMの指定したイベントごとに発火するObservableを生成します。DOMElementはjQueryやAngular等で包まれていても良い

Rx.Observable.fromEventPattern(RxJS)

fromEventでは対処できないようなタイプのイベント系処理をObservableに変換するときに使います。主にDOMイベント用やイベントlikeなコールバックに使用。

Observable.FromEvent(Rx.NET)

C#のevent構文をObservableに変換するときに使います。.NET 3.5以降のAction/Funcを使ったevent構文を変換するときに使います

Observable.FromEventPattern(Rx.NET)

C#のevent構文をObservableに変換するときに使います。.NET2以前の書き方の古いevent構文や、腐ったコードに蓋をするときに使います。

ViewObservable.click(RxAndroid)

AndroidのActivityのclickイベントをObservableに変換するときに使います。見つけた記事には他にもtextという関数があるそうですが、ドキュメントが見当たらず。。。

同様の機能はReactiveCocoa(Obj-C向け)にもあります。

Futureからの変換

Rx.Observable.fromPromise(RxJS)

JSのPromiseをObservableに変換します

Task.ToObservable(Rx.NET)

.NETのTaskをObservableに変換します。ToTaskを使ってTaskに戻すことも出来ます

Observable.from(Future)(RxJava)

JavaのFutureをObservableに変換します。BlockingObservableからtoFutureを使ってFutureに変換することもできます。

その他色々な物からの変換・生成

Observable.Create(Rx.NET/RxJS/RxJava)

比較的汎用なObservable生成メソッド。ただし、このObservableはcoldなのでeventで使うときには若干注意

Rx.Observable.fromCallback(RxJS)

最後の引数が結果のcallbackの関数を渡すと、結果をObservableで返すような関数にwrapしてくれます。node.js向けにfromNodeJSCallbackもあります

なお、イベント的な使い方をしているコールバックはfromEventPatternを使いましょう

Rx.Observable.from(RxJS)他多数

イテレータや配列をObservableに変換します。変換されたObservableは配列を一つ返して終了するcoldなOservableになります。

同様の値や配列をObservableに変えるメソッドはfrom/just(RxJava)等であります

Observable.FromCoroutine(UniRx)

UnityのコルーチンをObservableに変換します

Observable.EveryUpdate(UniRx)

Unityの毎フレームのUpdate時に呼び出されるObservableを作成します。

Subjectを使った生成

Subjectは上記のパターン以外のObservableの生成や、新規クラスでイベント発生の内部用実装で使用します

SubjectはObservableの具象クラスであり、更にObserverの具象クラスでもあるので、Subject.OnNextをコールすると、SubjectがObservableとして発火する仕組みになっています

Subjectにはいくつかの派生があり、ReplaySubjectやAsyncSubjectが挙げられます。用途に合わせて使用するクラスを変えましょう

参考資料