読者です 読者をやめる 読者になる 読者になる

xin9le.net

Microsoft の製品/技術が大好きな Microsoft MVP な管理人の技術ブログです。

Rx

Rx入門 (29) - メソッドの別名を提供するRx-Aliases

Rx

これまで全然気付いてなかったのですが、NuGet パッケージマネージャを眺めていたら Rx-Aliases というパッケージがあることに気付きました。約 1 年程前からリリースされているようですが、ダウンロード数が 500 に到達していないあたりメジャーでない感じ…

Room metro #23 資料

2014年3月1日 (土) に開催されたRoom metro #23 大阪 & Windows Phone Arch特別編に参加してきました。関西方面の勉強会は初めて。これまでの勉強会ではお会いすることがなかったMVPさんや初めてお会いするエンジニアさんばかりで、とても刺激的でした。勉強…

Rx入門 (28) – Disposables名前空間まとめ

Rx

Rx入門を書いてから早2年。当時はVersion 1だったRxも今ではVersion 2。考え方は変わらないものの、いくつかObsoleteになってしまった機能もあり、参考にして頂いている方には多少なり申し訳なさがあります...。あれからC#自体にも言語機能として非同期処理 …

Hokuriku.NET vol.13 資料

2014年1月25日 (土) に開催されたHokuriku.NET vol.13 in 富山に参加してきました。運営側として、またLT担当として協力させて頂き、とても楽しく有意義な時間を提供できたのではないかと実感しています。参加して下さったすべての方に感謝申し上げますm( )m…

ReactiveSignalR

Happy Merry X'mas!! C# Advent Calendar 2013、23日目担当の@xin9leです。誰が何と言おうと23日目です。先の3連休を高校の同級生と夜通しカタンで遊び過ぎたせいで担当記事の公開が間に合わなかったなんてことは...あるようなないような...。関係各位、誠に…

非同期メソッド入門 (11) - Rxとの相互運用

Rx (=Reactive Extensions) は、イベントや非同期処理をLINQの形で統一的に記述できる準標準 (=.NET Frmaeworkに標準搭載されていないMicrosoft純正の) ライブラリです。これまでRxは.NET Framework 3.5 / .NET Framework 4環境下では非同期処理をするための…

Special Seminar #1 資料

8月の終わり、ignoteの代表取締役社長である@hIDDEN_xvさんから半ば強引に(謎)出張セミナーのお誘いを受けました。 @xin9le ウェルカム!— 那珂にしちゃんは大丈夫です (@hIDDEN_xv) 2012, 8月 30 @xin9le じゃ何か勉強会でもしましょうか!— 那珂にしちゃん…

Rx入門

Rx

非同期/イベント/時間に関する処理を LINQ の形式で簡潔かつ宣言的に記述することができるライブラリ、Reactive Extensions についての連載インデックス

Rx入門 (27) - 入力文字のサジェスト

Rx

昨今の検索ボックスは優秀で、当たり前のようにサジェスト機能が付いてますね。やはりサジェスト機能があると便利です。ということで、今回は文字入力におけるサジェストをやってみます。とはいえ、オートコンプリートを完璧に実装するのは結構手間なので今…

Hokuriku.NET C# -Rx入門- 資料

Hokuriku.NET C# Rx入門の資料を公開します。Rx入門の内容をベースに、C#/LINQを利用したコーディングができる方向けにRx全体をイチから紹介しました。参加された方で復習したい方、実践部分に触れたい方はぜひぜひ参考にしてください。また、間違ってるとこ…

Hokuriku.NET vol.9 資料

Hokuriku.NET vol.9のLTで発表したときの資料を公開します。「Rxって聞いたことあるけどどんなものか知らない」とか、「Rxって何?」と思っている人に興味を持って頂けたらいいなと思い、サンプルアプリ中心の内容にしました。興味を持たれた方は、ぜひRx入…

Rx入門 (26) - .NETイベントへの変換

Rx

以前、Rx入門 (11) - イベントのシーケンス化で.NETネイティブなイベントをIObservable<T>に変換する方法について触れました。「.NETイベントをIObservable<T>に変換できるなら、その逆もできていいんじゃないか?」と思った方、正解です!今回はIObservable<T>を.NET</t></t></t>…

Rx入門 (25) - デッドロックに注意

Rx

IObservable<T>は時間軸を基本としたデータを扱うことができます。これまでも述べてきたように、その枠内で非同期処理を扱うことができます。そして、非同期処理で忘れてはならないのがデッドロックです。Rxにおいてもデッドロックが発生するケースがもちろんあ</t>…

Rx入門 (24) - まとめてDispose

Rx

「Hot Observableなどに関連付けした複数のオブザーバーを一括して解除したい!」と思ったことはありませんか?今回はこれの実装を少しばかり簡単にする方法について見ていきたいと思います。 List<T>などを利用する場合 まず、一般的なコレクションを利用した</t>…

Rx入門 (23) - メソッドチェイン中の例外

Rx

今回はメソッドチェイン中に例外が発生した場合について見ていきます。これまでの連載中は基本的に例外は起こらないものとして解説してきたので、OnErrorメソッドはほとんど使っていませんでした。とは言え例外発生時の挙動について知っておくことは重要なの…

Rx入門 (22) - TwitterのTimelineを表示

Rx

今回はTwitterのタイムラインを表示するサンプルを紹介します。なんという事はなく、WebClientクラスのDownloadStringAsyncメソッドをRxに乗せてみた、というやつです。Twitterからのタイムライン取得はAtomフィードを利用しています。 サンプルコード まず…

Rx入門 (21) - Webの画像をスライド表示

Rx

今回は、Web上の画像をダウンロードしてスライドショー形式で表示するサンプルを紹介します。先日自然気胸で入院していたときに@ch3cooh先生作のWindows Phone 7アプリ某時計に触発されて作ったものの一部で、super bijin-tokeiの画像を3秒間隔 (1分間隔でな…

Rx入門 (20) - Drag & Dropでの落書き

Rx

今回はDrag & Dropでキャンバスに落書きを行うサンプルを紹介します。通常のDrag & Drop処理と比較して、どれほど簡単に書けるのか比較してみましょう。 Rxを利用しないDrag & Drop処理 まず、Rxを利用しない場合のサンプルコードを示します。以下のように、…

Rx入門 (19) - マウス位置のトラッキング

Rx

今回は、ボタン上の一部でマウス位置のトラッキングを行うというだけの (つまんない) サンプルを紹介します。CAD系のソフトだとステータスバーにマウスの座標位置が表示されるものがありますが、そう言ったケースで応用が利くかもしれません。 サンプルコー…

Rx入門 (18) - 効率的な表示更新

Rx

今回は、Explorerなどでよく見かけるMaster-Detailパターンでの効率的な表示更新のサンプルを紹介します。「とあるオブジェクトの一覧がリストに表示されていて、選択されているものの内容の詳細が横に表示される」というアレです。 詳細表示の描画に時間が…

Rx入門 (17) - 入力文字の遅延表示

Rx

しばらく空いてしまいましたが、落ち穂拾いと称してマッタリのんびりゆったりとやっていこうと思います。今回からはRxを利用した簡単な応用例をいくつか載せて行こうと思います。サンプルコードはサンプルコード集の中に随時追加して行きますので、ぜひ実際…

Rx入門 (16) - おわりに

Rx

ここまで15回に渡ってRxについて見てきました。今回もTPLのとき同様、個人的に勉強したことの備忘録でしかありませんが、読まれた方々が少しでもRxについて興味を持ってくださったり、理解を深めるキッカケになっていれば幸いです。 ソフトウェアエンジニア…

Rx入門 (15) - スケジューラの利用

Rx

今回で入門記事の連載も (一応名ばかりの) 最後です。今回はスケジューラの利用について見ていきます。残念ながら、これについてはだいぶ自信がありません。今わかっている範囲、そうだろうと思っている範囲で書きます。 スケジューラ スケジューラとは、処…

Rx入門 (14) - Cold to Hot変換

Rx

Push型配信の特徴は情報の分配 (同じデータを複数の購読者に送信すること) です。しかし、前回の内容の通り、ColdなObservableでは分配をすることができません。Rxの旨みを最大限に引き出すためには、ColdなObservableをHotなObservableに変換する必要があり…

Rx入門 (13) - HotとCold

Rx

IObservable<T>には、HotとColdと呼ばれる2つの性質があります。実はこれまで触れてきた記事のサンプルにもHotなものとColdなものが出てきていました。これらの性質の違いを把握することはRxを利用する上で非常に重要です。今回はこれらについて見ていきます。 </t>…

Rx入門 (12) - 非同期処理のシーケンス化

Rx

今回は、同期メソッドを非同期に実行し、それをIObservable<T>シーケンスとして受ける方法や、非同期処理として提供されているメソッドをIObservable<T>シーケンスに変換する方法ついて見ていきたいと思います。これが使えるようになれば、きっと非同期処理も怖く</t></t>…

Rx入門 (11) - イベントのシーケンス化

Rx

Rx入門 (2) - オブザーバーパターンの最後にもチラッと書きましたが、イベントはオブザーバーパターンの一実装です。なので、イベントをIObservable<T>に乗せ、イベントに対応する処理を記述することができます。そこで今回は、イベントをIObservable<T>シーケンス</t></t>…

Rx入門 (10) - 時間のシーケンス化

Rx

前回までで、IObservable<T>に対してLINQスタイルでの記述ができることを見てきました。これから3回ほどは、時間/イベント/非同期処理をIObservable<T>としてみなし、情報を通知する方法について触れていきます。 MouseMoveなどの各種イベント、一定間隔で発行され</t></t>…

Rx入門 (9) - Where/Selectの自作

Rx

前回はLINQの記述を用いて、流れてくるデータをフィルタリング (Where) したり、変換 (Select) したりしました。今回はこれらを自作することで、より理解を深めてみようと思います。 実装へのアプローチ IObservable<T>がIObserver<T>に情報を流すというのが、Rxで</t></t>…

Rx入門 (8) - LINQスタイルでの記述

Rx

今回はRxの特徴のひとつであるLINQスタイルでの記述について触れてみます。みんな大好きなLINQ、これができると世界がまた変わります。 情報伝播のイメージ 今回はLINQの中でも特に基本的なWhere/Select文を取り上げてみます。前回の「山から湧き出る水」イ…

Rx入門 (7) - IObservable<T>の生成

Rx

「Rx入門 (4) - IObserver<T>の省略」では、受信側であるIObserver<T>を省略した書き方について取り上げました。その記事の冒頭で「送信側はさておき...」と送信側のことは棚に上げていましたが、そうは言ってもやはり送信側もIObservable<T>をいちいち実装するのは手</t></t></t>…

Rx入門 (6) - Subject<T>の亜種

Rx

前回は、Rxの動作確認などを楽にしてくれるSubject<T>について触れました。今回はこれの亜種を紹介します。 ReplaySubject<T> ひとつ目はReplaySubject<T>です。ReplaySubject<T>は、OnNextが呼び出されたときに値を通知すると同時にその値をキャッシュします。新たにSub</t></t></t></t>…

Rx入門 (5) - Subject<T>の利用

Rx

前回はIObserver<T>の生成を隠蔽し、より簡略化した記法を学びました。今回はさらにIObservable<T>も簡略化してみます。 一人二役のSubject<T> Rxのライブラリ (System.Reactive.dll) にあるSystem.Reactive.Subjects名前空間の中に、Subject<T>というクラスがあります。</t></t></t></t>…

Rx入門 (4) - IObserver<T>の省略

Rx

前々回のオブザーバーパターンの例では、IObservable<T>とIObserver<T>の具象クラスをそれぞれ実装しました。しかし、送信側はさておき、挙動が変わりやすい受信側がいちいちIObserver<T>を実装するのは現実的ではありません。そこで今回は、IObserver<T>の省略について</t></t></t></t>…

Rx入門 (3) - Push型とPull型

Rx

今回はPush型とPull型の考え方について見ていきます。Push/Pullと言われても何のこっちゃですが、データの流れ方のことです。 Push型 Push型配信の典型的な例に、携帯電話のキャリアメールがあります。携帯電話が定期的にサーバーにメールを確認しに行くので…

Rx入門 (2) - オブザーバーパターン

Rx

Rxの根幹となる考え方はオブザーバーパターンです。まずはこのオブザーバーパターンについて見て行きます。 オブザーバーパターンの概要 オブジェクト指向プログラミングにおいては、「あるオブジェクトが変化したとき、その変更に合わせて他のオブジェクト…

Rx入門 (1) - はじめに

Rx

近年のアプリケーションの高度化は凄まじいものがあります。ユーザーはその進化にどんどん慣れていき、より新しいもの、かっこいいもの、快適なものを求めるようになります。特に "快適" というのは非常に重要な要素で、使っていてストレスの溜まるようなア…