RxShowcase -for ignote & i-Jupiter-

Post on 01-Jul-2015

293 views 1 download

description

2012/09/14 ignote & i-Jupiter訪問セミナー資料

Transcript of RxShowcase -for ignote & i-Jupiter-

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