SlideShare une entreprise Scribd logo
1  sur  13
@yone64
 たとえばInfoQ
http://www.infoq.com/jp/news/2013/09/reactive-programming-emerging
 時間や外部の入力とともに変化する値や計算を、ユーザ自身
がプログラムするのではなく、システム(言語自体やライブラリ)
がユーザからは見えないところで反応(reactive)してくれると
いうもの
◦ よく例に挙げられるのはExcel
B2の値が変わると、C2の値も
自動的に変わる
 Reactive Programmingの概念を実現する2つの方
法
◦ 値が必要になった時に、毎回計算を行う(Pull型)
 描画Frameごとに実行されるMain Loopがあるプログラム形式
向け。
◦ ソースが変更されたときに、再計算を行う(Push型)
・Event Drivenなプログラム形式向け。
↑ Reactive Extensionsはこちら
 Reactive Programmingを関数型の手法で実現す
る。
 時間に変化する値(behavior)や、時間離散的なイベ
ント(Event)を入力とする
3 x => x * 2
6
x => x * 2
3
4
1
6
8
2
 時間軸に乗ってプログラムの外部からくる値や通知な
ら何でも
◦ 画面入力
◦ タイマー通知
◦ キーボード・マウス操作
◦ 外部センサーの値
◦ サーバ通信結果
◦ etc...
 Target Framework
◦ .NET Framework 4.0 and 4.5
◦ .NET for Windows Store apps
◦ Silverlight 5
◦ Windows Phone 7.1
 残念ながら標準ライブラリには含まれていません
◦ NuGetでインストールしましょう
 Observerパターン(GoF)
◦ IObservable<T> (変更を通知する側)
 IDisposable Subscribe(IObserver<T> observer);
◦ IObserver<T> (通知を受け取る側)
 void OnCompleted();
 void OnError(Exception error);
 void OnNext(T value);
 LINQとは
◦ 値の集合(IEnumerable<T>)に対する集合操作
 Rx = IObservable<T> + LINQ
◦ 時間的に離散している値の集合と、それに対する、集合操作
Select Where
Select Where
IE<T>
IO<T>
MoveNext/Current
OnNext
DEMO
 Demo1(サジェスト)
◦ 連続する入力は無視する。
◦ Web問い合わせは非同期で行う
 UIスレッドを止めない
 Demo2(Drag)
◦ MouseDownの後に、MouseMoveのイベントを購読
◦ MouseUpで購読終了
◦ MouseDown座標と、MouseMove座標の組み合わせがほ
しい
 ReactiveProperty
◦ xaml系UIとのDataBindingと、IObservable<T>との変換
を、いい感じにしてくれるライブラリ。
 RxJava
◦ https://github.com/Netflix/RxJava
 RxJS
◦ https://github.com/Reactive-Extensions/RxJS
などなど

Contenu connexe

Similaire à Reactive extensions

Reactive cocoaをかじってみた。
Reactive cocoaをかじってみた。Reactive cocoaをかじってみた。
Reactive cocoaをかじってみた。
孝文 田村
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
NilOne Ltd.
 

Similaire à Reactive extensions (20)

mercurial-users.jp speech at OSC2013 Tokyo/Spring
mercurial-users.jp speech at OSC2013 Tokyo/Springmercurial-users.jp speech at OSC2013 Tokyo/Spring
mercurial-users.jp speech at OSC2013 Tokyo/Spring
 
AWS Lambda Update
AWS Lambda UpdateAWS Lambda Update
AWS Lambda Update
 
Reactive cocoaをかじってみた。
Reactive cocoaをかじってみた。Reactive cocoaをかじってみた。
Reactive cocoaをかじってみた。
 
Reactive
ReactiveReactive
Reactive
 
Uapcfb
UapcfbUapcfb
Uapcfb
 
20180721 First Challenge Logicflow
20180721 First Challenge Logicflow20180721 First Challenge Logicflow
20180721 First Challenge Logicflow
 
ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版ReduxとSwiftの組み合わせ:改訂版
ReduxとSwiftの組み合わせ:改訂版
 
IBM Bluemix OpenWhisk: IBM Seminar 2016, Tokyo, Japan: The Future of Cloud Pr...
IBM Bluemix OpenWhisk: IBM Seminar 2016, Tokyo, Japan: The Future of Cloud Pr...IBM Bluemix OpenWhisk: IBM Seminar 2016, Tokyo, Japan: The Future of Cloud Pr...
IBM Bluemix OpenWhisk: IBM Seminar 2016, Tokyo, Japan: The Future of Cloud Pr...
 
Angularreflex20141210
Angularreflex20141210Angularreflex20141210
Angularreflex20141210
 
OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理OSSを利用したプロジェクト管理
OSSを利用したプロジェクト管理
 
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介中規模Androidアプリ開発の過程に生じた問題と対策の紹介
中規模Androidアプリ開発の過程に生じた問題と対策の紹介
 
20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回20150227 イタンジプログラミング講座テキスト第4回
20150227 イタンジプログラミング講座テキスト第4回
 
2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料2012 05-19第44回cocoa勉強会発表資料
2012 05-19第44回cocoa勉強会発表資料
 
JAWS DAYS 2019
JAWS DAYS 2019JAWS DAYS 2019
JAWS DAYS 2019
 
20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson20181215 PowerApps + Flow Handson
20181215 PowerApps + Flow Handson
 
スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤スマートニュースの世界展開を支えるログ解析基盤
スマートニュースの世界展開を支えるログ解析基盤
 
20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow20180630 data transformationusinglogicflow
20180630 data transformationusinglogicflow
 
SubversionとSugarsync
SubversionとSugarsyncSubversionとSugarsync
SubversionとSugarsync
 
LogicFlow 概要
LogicFlow 概要LogicFlow 概要
LogicFlow 概要
 
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
わんくま名古屋 #37 (20151114) Windows 10 UWP アプリ開発入門(実践編)
 

Reactive extensions