RxShowcase
-for ignote & i-Jupiter-

September 14th, 2012
xin9le
Profile Advertising
Name

鈴木孝明

Twitter Account
@xin9le

Award

Microsoft MVP for Visual C#

Blog

http://xin9le.net/

Hobby

Programming, Piano, Tennis, English
Advertising
@ITで連載中
連載:C# 5.0 & VB 11.0 新機能
「async/await非同期メソッド」入門

http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_index/
What’s
Reactive Extensions
First Experience Abo
簡単なサンプルでRxを体感

•
•

入力文字の遅延表示

Q : どれだけのコードで実現可能?
A : たった1行!!
About Sequence
時間/イベント/非同期処理をLINQの形式で記述

•
•

.NET 3.5 SP1以降、SL4以降、WP7で利用可能

•
•
•
•

•

IEnumerable<T>のLINQの拡張 (と考えてOK)

特に非同期APIしかないSilverlight環境で威力を発揮
Windows Phone 7にのみ標準搭載
RxJSというJavaScript版もある

Microsoftの正式なプロジェクト
Sequence How to G
データ群を「時間軸方向のまとまり」と考える

•
•

こう見做せるものはすべて統一的に扱える

[出典] 連載 : Reactive Extensions (Rx) 入門 - @IT
How to Get How to
1. NuGet Gallery – Rx-Main より取得
How to Get
2. ダウンロードサイトより取得

http://www.microsoft.com/download/en/details.aspx?id=28568
Basis for
Reactive Extensions
Observer Pattern St
•

疎結合のためのデザインパターン

•

具象クラス間の依存なしに状態変化を通知する
•

•

データ変更 → UI更新
データがUIを知っている設計は極めて汎用性が低い

•

観測対象 (サブジェクト) と観測者 (オブザーバー) で抽象化

•

一般的にはインターフェース/イベントで実現
Structure of Pattern
Basic Interface Push
IObserver<T> : 観測者

•

OnNext(T value)

状態の変更を通知

OnError(Exception error)

エラーの発生を通知

OnCompleted()

完了を通知

IObservable<T> : 観測対象

•

Subscribe(IObserver<T> observer)

通知先を登録

.NET Framework 4で新たに搭載された

•
•
•

.NET 3.5 SP1 / Silverlight 4環境ではRxライブラリが提供
Windows Phone 7には標準搭載
Push vs Pull LINQ S
Push型

Pull型

• 経路接続を行い受信待機
• IObservable<T>

• 各々必要に応じて取得
• IEnumerable<T>
LINQ Style Sequenc
•

メソッド形式

•

クエリ式形式
Sequence Image
ベルトコンベアのようなイメージで考える

•
•
•
•

•

モノが流れてくる (= IObservable<T>からの発行)
不純物を取り除く検査が行われる (= Where)
梱包作業が行われる (= Select)
配送される (= Subscribe)

Where

Select
Showcase
More Samples
•

効率的な表示更新

•

マウス位置のトラッキング

•

Web画像をスライド表示

•

TwitterのTimelineを表示
Today’s Summary
-これだけは覚えよう-
Summary Thanks
•

オブザーバーパターンによるPush通知が基本

•

値群を時間軸に乗ったシーケンスとして捉える

•

IObservable<T>とIObserver<T>で実現されている

•

時間/イベント/非同期処理をLINQで記述可能

•

.NET 3.5 SP1以降、SL4以降、WP7で利用可能
Thanks
Thank you for your attending.

Enjoy Happy Programming
with Reactive Extensions
Next Community
Come On!! Come All!!

Hokuriku.NET vol.10
2012/9/29

http://atnd.org/events/30789

RxShowcase -for ignote & i-Jupiter-