ものがたり(旧)

atsushieno.hatenablog.com に続く

mono-reactive v0.1 released

昨年末の冬休み中に思い立って着手し、冬休みが明けてからも週末に時間をとって実装していたのですが、Reactive Extensions (Rx)のmono用の実装としてmono-reactiveを開発していましたが、今日バージョン0.1として公開することにしました。(ソースの公開自体はgithubで前々から行っていますが、ダウンロードページにバイナリを置いておきました。)

Rxについての入門的な情報は、ごく一部の人たちwの努力によって、日本語でも割と充実しているので、丸投げしたいと思います。連載:Reactive Extensions(Rx)入門のシリーズはちゃんと読みたい人にいいかも。

mono-reactiveは、version 0.1の時点では、System.Reactive.dllの実装ということになります。本家Rxには、MSTestのRx向け拡張であるRx-Testingと呼ばれるライブラリ (Microsoft.Reactive.Testing.dll) があるのですが、mono-reactiveには、NUnitを対象とするMono.Reactive.Testing.dllが存在します*1

mono-reactiveは、mono(-core)で動作することを第一の目標として作られましたが、MonoTouchやMono for Androidでも動作するようになっています(のはず)。Mono for Android用にはcsprojが用意されています。Button.ClickにObservable.FromEvent()を仕掛ける程度のことは出来ました。

mono-reactive 0.1は、MSDNにあるドキュメントにあったSystem.Reactive.dllの型を全て実装した (feature complete) バージョンということになります。System.Reactive.Linq.Observableだけでメソッドが100以上あるとか…

実用性はまだまだ分かりません。実装したもののテストしていないものが多々あります。Rx 101 Samplesなんかも全部動かしたりはしていません。テストのマトリックスのようなものは書き残していて、まあRx 101と同じくらいの数のNUnitテストは書いているつもりにはなっています。

というわけで、Rxに興味がある人やいじっている人は、ぜひ一度試してみてくださいませ。と言ってもRx使ってる人って大半がWPF/SL/WP7だからユーザー層がかぶらないんですけどねー。本家Rxとmono-reactiveで挙動が違うものとか、github issuesその他で教えてもらえると助かります。

追記: いくつか修正を加えた0.1.1を公開しました。

*1:まだRx-Testingに完全対応はしていません。実際に書いているテストではHistoricalSchedulerを使っていたり…