Upload
takaaki-suzuki
View
293
Download
1
Embed Size (px)
DESCRIPTION
2012/09/14 ignote & i-Jupiter訪問セミナー資料
Citation preview
RxShowcase-for ignote & i-Jupiter-
September 14th, 2012
xin9le
AdvertisingProfileName鈴木孝明
Twitter Account@xin9le
AwardMicrosoft MVP for Visual C#
Bloghttp://xin9le.net/
HobbyProgramming, Piano, Tennis, English
Advertising
@ITで連載中
連載:C# 5.0 & VB 11.0 新機能
「async/await非同期メソッド」入門
http://www.atmarkit.co.jp/fdotnet/chushin/masterasync_index/
What’sReactive Extensions
• 簡単なサンプルでRxを体感
• 入力文字の遅延表示
Q : どれだけのコードで実現可能?
A : たった1行!!
First Experience About
• 時間/イベント/非同期処理をLINQの形式で記述
• IEnumerable<T>のLINQの拡張 (と考えてOK)
• .NET 3.5 SP1以降、SL4以降、WP7で利用可能
• 特に非同期APIしかないSilverlight環境で威力を発揮
• Windows Phone 7にのみ標準搭載
• RxJSというJavaScript版もある
• Microsoftの正式なプロジェクト
About Sequence
• データ群を「時間軸方向のまとまり」と考える
• こう見做せるものはすべて統一的に扱える
Sequence
[出典] 連載 : Reactive Extensions (Rx) 入門 - @IT
How to Get
1. NuGet Gallery – Rx-Main より取得
How to Get How to Get
2. ダウンロードサイトより取得http://www.microsoft.com/download/en/details.aspx?id=28568
How to Get
Basis forReactive Extensions
• 疎結合のためのデザインパターン
• 具象クラス間の依存なしに状態変化を通知する
• データ変更 → UI更新
• データがUIを知っている設計は極めて汎用性が低い
• 観測対象 (サブジェクト) と観測者 (オブザーバー) で抽象化
• 一般的にはインターフェース/イベントで実現
Observer Pattern Structure
Structure of Pattern
• IObserver<T> : 観測者
• IObservable<T> : 観測対象
• .NET Framework 4で新たに搭載された
• .NET 3.5 SP1 / Silverlight 4環境ではRxライブラリが提供
• Windows Phone 7には標準搭載
Basic Interface Push vs
OnNext(T value) 状態の変更を通知
OnError(Exception error) エラーの発生を通知
OnCompleted() 完了を通知
Subscribe(IObserver<T> observer) 通知先を登録
Push vs Pull LINQ Style
• 経路接続を行い受信待機
• IObservable<T>
• 各々必要に応じて取得
• IEnumerable<T>
Push型 Pull型
• メソッド形式
• クエリ式形式
LINQ Style Sequence Image
• ベルトコンベアのようなイメージで考える
• モノが流れてくる (= IObservable<T>からの発行)
• 不純物を取り除く検査が行われる (= Where)
• 梱包作業が行われる (= Select)
• 配送される (= Subscribe)
Sequence Image
Where Select
Showcase
• 効率的な表示更新
• マウス位置のトラッキング
• Web画像をスライド表示
• TwitterのTimelineを表示
More Samples
Today’s Summary-これだけは覚えよう-
• オブザーバーパターンによるPush通知が基本
• 値群を時間軸に乗ったシーケンスとして捉える
• IObservable<T>とIObserver<T>で実現されている
• 時間/イベント/非同期処理をLINQで記述可能
• .NET 3.5 SP1以降、SL4以降、WP7で利用可能
Summary Thanks
Enjoy Happy Programmingwith Reactive Extensions
ThanksThank you for your attending.
Next CommunityCome On!! Come All!!
Hokuriku.NET vol.102012/9/29
http://atnd.org/events/30789