Enumerable-Observableみたいなことを感じつつそこはしかしC++もScalaも分からないのでもごもご。maoeのブログ概要編のほかEvent編、Behavior編が。Haskellはよくわからなくても雰囲気は分かる(ぉなぜリアクティブプログラミングは重要か。Contextureこうして俯瞰してみても、Rxは実用に踏み出しているという点で、一歩抜けてるのではないかと思います。Platformsを選択すれば全部インストールされますんで、それでいいと思われます。NuGetに対応しているので、それを使うのも良いでしょう。画像はNuGetに登録されているRxのもの。NuGetでも多すぎて困るのですが、普通にインストールした場合は、やたら小分けされた大量のDLLをインストールしてくるので、何をどう選べばいいのかさっぱり分かりません。いうわけで、それの解説を少し。SilverlightのみNuGetだとRx-Core。System.ObservableはIObserver/IObservableのインターフェイス定義で、.NET4なら標準入りしているので不要ですがSilverlightでは、こちらの参照も必要になります。Observable拡張メソッドNuGetだとRx-Main。Observableの拡張メソッド群が入っているので、CoreExとReactiveがRxを使う際に必須となる参照と考えるといいです。テストでのモックを作ったりする時に使いたいクラス群この3つはオプション。ClientProfileはstreamにAsyncRead/AsyncReadLineというのが入っていて、そのまんまな挙動です。ちなみにAsyncReadLineはbyteをそのまんま切り出しているだけ(つまり日本語で使うとぶっ壊れる)のでまるっきり実用になってません。いうわけで使わないの推奨。標準のRxだけだと、この辺のReadは自前で書かなければならなくて少々面倒くさいので、こういったあると便利系のものはあったほうがいい。今後拡充されてここに追加されていくのではないかと思われます。Extensions用のWebRequest拡張メソッドとか書いちゃってますが、標準でそういうの入ってくれれば手間なくて素敵。ExtendedProfileはよくわからないけどClientProfileと同じく作りは適当な気がする。Testingはあとで調べると思って放置中。概念は多分有益だと思うので、そのうちしっかり調べておきたい。Enumerable拡張メソッド(EnumerableEx)こちらはRxとは独立していて、IEnumerableへの拡張メソッド群になっています。気の利いたのが色々入っていて便利。linq.jsにもここからパクッた、じゃなくて名前を統一させて入れたのが幾つかあります。あと、みんなが待望していたForEachがRunという名前で入っていますよ!それだけでもはや必須コンポーネントですね!なお、突然Ixという表記を見たら、こちらのこと(もしくはIEnumerable全体)を指します。Extensions。紛らわしくよくわからなくなっても泣かない。Task連携これもRxとは微妙に独立していて、中身はIAsyncEnumerable。AsyncCTPのTaskをLinq的に扱おうとするものです。Taskだと1個しか返せないので複数返せるように、という。私はイマイチこれの必要性が分からなかったりします。ぶっちゃけIObservableで良くて、で、IObservableのほうが色々融通が利くので。なんかもう出来るから作ったし入れたよ、といったRxチームのノリがここから伺えます。フットワーク軽くて、その姿勢は大好きだけど、混乱します。7では標準搭載されていて、System.ObservableとMicrosoft.Phone.Reactiveを参照することで使えるようになります。標準搭載とは別に、上記のような最新版も提供されています。標準搭載と最新版の違いですが、安定度は断然標準搭載版です。MSDNにドキュメントがあるのも良い。標準搭載なので配信する際の容量が嵩まない。最新版のメリットはというと、勿論、機能面では豊富。デスクトップ版などとも完全にAPIの互換が取れます。バグの混入率は残念ながら結構高いので安定性は若干欠けます。bluesであるように、やはり非同期に対しての適用に強い。クラウド時代のデータプログラミングに非同期は避けられない、それを解決するソリューションとしてのRx。5.0には組み込みAsync入っちゃうしRxJSだって、jQueryに1.5から組み込みでDeferredが入るので、将来的には強い特徴にはならないのですが、未来の前に現実。5.0なんていつだよっていう。async/awaitよりも遥かに柔軟で強力だという印象を私は持っているので、直接競合するからってoutにはならないと思ってます。非同期じゃなくイベントのほうは、様々な側面を見せるので一概に言うのは難しい。時間を扱うテクノロジとしてのRxは、ベストな選択です。生Timerなんて使ってられません。Console.WriteLine(e.EventArgs.FullPath));FileSystemWatcherはファイルの変更を監視し、変更があった場合にイベントを飛ばしてくれる便利なクラスですが、例えば一度ファイルを保存する(変更がある)だけで、2,3個のイベントが同時に飛んできたりするなど処理が少し面倒だったりします。ルとみんな困ってるよ。いう場合にDateTimeを外部変数に保存しておいて比較を取るとかTimerで発火を調整するとか面倒くさいことをしなければなりません、が、RxならThrottleメソッドで一撃。Rxではイベントの発生が時間軸上に並んでいるので、イベントに対して時間系魔法をかけることが出来ます。Throttle!Sample!Delay!TimeInterval!その他色々。ないほど時間を扱うのが容易になりました。面倒くさい印象のあったポーリングなども楽勝です。他にイベントといったらセンサーの感知なども上げられます。7に標準搭載された理由にもなるかもですが、センサーで飛んでくる大量のイベントのフィルタリング・加工にRxは実に都合が良い。物理デバイスがないとテストできない、あってもそもそもテストしにくいセンサー系APIですが、Rxを使うことでイベントのモック生成・差し替えが容易になります。最後に挙げるイベント系といったら、GUI。