Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
EN
Uploaded by
Takaaki Suzuki
28,819 views
Rx入門
2012/02/11 - 2012/03/17 Hokuriku.NET C# -Rx入門- セッション資料
Technology
◦
Sports
◦
Read more
25
Save
Share
Embed
Embed presentation
Download
Downloaded 54 times
1
/ 33
2
/ 33
3
/ 33
4
/ 33
5
/ 33
6
/ 33
7
/ 33
8
/ 33
9
/ 33
10
/ 33
11
/ 33
12
/ 33
13
/ 33
14
/ 33
15
/ 33
16
/ 33
17
/ 33
18
/ 33
19
/ 33
20
/ 33
21
/ 33
22
/ 33
23
/ 33
24
/ 33
25
/ 33
26
/ 33
27
/ 33
28
/ 33
29
/ 33
30
/ 33
31
/ 33
32
/ 33
33
/ 33
More Related Content
PDF
ChatGPTは思ったほど賢くない
by
Carnot Inc.
PPTX
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
PDF
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
PDF
例外設計における大罪
by
Takuto Wada
PDF
こわくない Git
by
Kota Saito
PDF
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
PPTX
トランザクションの設計と進化
by
Kumazaki Hiroki
ChatGPTは思ったほど賢くない
by
Carnot Inc.
BuildKitによる高速でセキュアなイメージビルド
by
Akihiro Suda
ビジネスパーソンのためのDX入門講座エッセンス版
by
Tokoroten Nakayama
例外設計における大罪
by
Takuto Wada
こわくない Git
by
Kota Saito
フロー効率性とリソース効率性について #xpjug
by
Itsuki Kuroda
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
by
Yoshifumi Kawai
トランザクションの設計と進化
by
Kumazaki Hiroki
What's hot
PDF
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
PDF
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
PDF
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
PDF
Twitterのsnowflakeについて
by
moai kids
PDF
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
PDF
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
PDF
条件付き確率場の推論と学習
by
Masaki Saito
PDF
マルチコアを用いた画像処理
by
Norishige Fukushima
PDF
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
by
Life Robotics
PDF
分散システムの限界について知ろう
by
Shingo Omura
PDF
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
PDF
オンラインゲームの仕組みと工夫
by
Yuta Imai
PDF
概念モデルって難しいですよね
by
Takuya Kawabe
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
MLflowによる機械学習モデルのライフサイクルの管理
by
Takeshi Yamamuro
PDF
アジャイルな見積りと計画づくり勉強会
by
Arata Fujimura
PDF
ワタシはSingletonがキライだ
by
Tetsuya Kaneuchi
PDF
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
PDF
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
PPTX
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
「のどが渇いた」というユーザーに何を出す? ユーザーの「欲しい」に惑わされない、本当のインサイトを見つけるUXデザイン・UXリサーチ
by
Yoshiki Hayama
Rustに触れて私のPythonはどう変わったか
by
ShunsukeNakamura17
導入から 10 年、PHP の trait は滅びるべきなのか その適切な使いどころと弱点、将来について
by
shinjiigarashi
Twitterのsnowflakeについて
by
moai kids
オススメのJavaログ管理手法 ~コンテナ編~(Open Source Conference 2022 Online/Spring 発表資料)
by
NTT DATA Technology & Innovation
【Unite Tokyo 2019】Understanding C# Struct All Things
by
UnityTechnologiesJapan002
条件付き確率場の推論と学習
by
Masaki Saito
マルチコアを用いた画像処理
by
Norishige Fukushima
協働ロボットCOROの開発における形式的仕様記述KMLの開発と適用
by
Life Robotics
分散システムの限界について知ろう
by
Shingo Omura
WebAssemblyのWeb以外のことぜんぶ話す
by
Takaya Saeki
オンラインゲームの仕組みと工夫
by
Yuta Imai
概念モデルって難しいですよね
by
Takuya Kawabe
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
MLflowによる機械学習モデルのライフサイクルの管理
by
Takeshi Yamamuro
アジャイルな見積りと計画づくり勉強会
by
Arata Fujimura
ワタシはSingletonがキライだ
by
Tetsuya Kaneuchi
Cognitive Complexity でコードの複雑さを定量的に計測しよう
by
Shuto Suzuki
何となく勉強した気分になれるパーサ入門
by
masayoshi takahashi
ネットストーカー御用達OSINTツールBlackBirdを触ってみた.pptx
by
Shota Shinogi
Viewers also liked
PDF
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
by
Hiroyuki Mori
PDF
縁取りでアプリの文字を見やすくしよう
by
株式会社グラフィシア
PPTX
難しいよね、コードレビュー
by
Shinichi Takahashi
PPTX
メトロスタイルってなに?
by
ShinichiAoyagi
PDF
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
by
Hiroyuki Mori
PDF
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
by
hiyohiyo
PDF
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
by
Mignon Style
PDF
コードレビュー用資料
by
Ayumu Itou
PPTX
C#/WPFで作るデスクトップマスコット入門
by
Fujikido
PDF
僕がやったXaml戦略
by
Hiroyuki Mori
PDF
Prism.Formsについて
by
一希 大田
PDF
Bluetoothでgo!
by
Kouji Matsui
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
by
Hiroyuki Mori
縁取りでアプリの文字を見やすくしよう
by
株式会社グラフィシア
難しいよね、コードレビュー
by
Shinichi Takahashi
メトロスタイルってなに?
by
ShinichiAoyagi
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
by
Hiroyuki Mori
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
by
hiyohiyo
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
by
Mignon Style
コードレビュー用資料
by
Ayumu Itou
C#/WPFで作るデスクトップマスコット入門
by
Fujikido
僕がやったXaml戦略
by
Hiroyuki Mori
Prism.Formsについて
by
一希 大田
Bluetoothでgo!
by
Kouji Matsui
Similar to Rx入門
PDF
Rx Showcase
by
Takaaki Suzuki
PDF
RxShowcase -for ignote & i-Jupiter-
by
Takaaki Suzuki
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
PDF
MlnagoyaRx
by
Shoichi Kakamu
PPTX
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
PDF
Reactive Extensions v2.0
by
Yoshifumi Kawai
PPTX
Rxに入門しようとしている
by
onotchi_
PDF
歌舞伎座tech発表資料 RxJSの中を追う
by
wilfrem
PDF
MlnagoyaRx02
by
mega80b
PDF
Reactive Extensionsはじめました
by
一希 大田
PPTX
Reactive
by
Akihiro Ikezoe
PPTX
オブジェクト指向な人がRx swiftを試してみた
by
小林 弘明
PPTX
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
PDF
Sansan様 登壇資料
by
Daisuke Nagata
PPTX
今日から始めよう UniRx
by
Yu Takahashi
PDF
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
PDF
俺はUniRxで行く
by
Kakohiroyuki
PPTX
Reactive extensions
by
yone64
PDF
UniRx完全に理解した
by
torisoup
PDF
Reactive Extensionの紹介
by
Dev Ogiwara
Rx Showcase
by
Takaaki Suzuki
RxShowcase -for ignote & i-Jupiter-
by
Takaaki Suzuki
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
by
Yoshifumi Kawai
MlnagoyaRx
by
Shoichi Kakamu
UniRx勉強会 reactive extensions inside(公開用)
by
wilfrem
Reactive Extensions v2.0
by
Yoshifumi Kawai
Rxに入門しようとしている
by
onotchi_
歌舞伎座tech発表資料 RxJSの中を追う
by
wilfrem
MlnagoyaRx02
by
mega80b
Reactive Extensionsはじめました
by
一希 大田
Reactive
by
Akihiro Ikezoe
オブジェクト指向な人がRx swiftを試してみた
by
小林 弘明
未来のプログラミング技術をUnityで -UniRx-
by
torisoup
Sansan様 登壇資料
by
Daisuke Nagata
今日から始めよう UniRx
by
Yu Takahashi
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
by
Yoshifumi Kawai
俺はUniRxで行く
by
Kakohiroyuki
Reactive extensions
by
yone64
UniRx完全に理解した
by
torisoup
Reactive Extensionの紹介
by
Dev Ogiwara
More from Takaaki Suzuki
PDF
5 分で学ぶ Interpolated String Handler
by
Takaaki Suzuki
PDF
C# における Redis 徹底活用
by
Takaaki Suzuki
PDF
Inside FastEnum
by
Takaaki Suzuki
PDF
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
PDF
30min Serverless xTuber
by
Takaaki Suzuki
PPTX
Tetris Algorithm
by
Takaaki Suzuki
PPTX
C# 7 New Features
by
Takaaki Suzuki
PPTX
Live Coding で学ぶ C# 7
by
Takaaki Suzuki
PPTX
C# 7 Current Status
by
Takaaki Suzuki
PPTX
4 Colors Othello’s Algorithm
by
Takaaki Suzuki
PPTX
Sharing Deep Dive
by
Takaaki Suzuki
PDF
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
by
Takaaki Suzuki
PDF
DeclarativeSql
by
Takaaki Suzuki
PDF
Sevens Algorithm
by
Takaaki Suzuki
PDF
Friendly
by
Takaaki Suzuki
PDF
WPF Interoperability
by
Takaaki Suzuki
PDF
Universal Appとは? -デバイスに依存しないアプリケーション開発-
by
Takaaki Suzuki
PDF
酒の肴はC# vNext
by
Takaaki Suzuki
PDF
Async History in .NET
by
Takaaki Suzuki
PDF
SignalR Tune-up
by
Takaaki Suzuki
5 分で学ぶ Interpolated String Handler
by
Takaaki Suzuki
C# における Redis 徹底活用
by
Takaaki Suzuki
Inside FastEnum
by
Takaaki Suzuki
今日からできる!簡単 .NET 高速化 Tips
by
Takaaki Suzuki
30min Serverless xTuber
by
Takaaki Suzuki
Tetris Algorithm
by
Takaaki Suzuki
C# 7 New Features
by
Takaaki Suzuki
Live Coding で学ぶ C# 7
by
Takaaki Suzuki
C# 7 Current Status
by
Takaaki Suzuki
4 Colors Othello’s Algorithm
by
Takaaki Suzuki
Sharing Deep Dive
by
Takaaki Suzuki
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
by
Takaaki Suzuki
DeclarativeSql
by
Takaaki Suzuki
Sevens Algorithm
by
Takaaki Suzuki
Friendly
by
Takaaki Suzuki
WPF Interoperability
by
Takaaki Suzuki
Universal Appとは? -デバイスに依存しないアプリケーション開発-
by
Takaaki Suzuki
酒の肴はC# vNext
by
Takaaki Suzuki
Async History in .NET
by
Takaaki Suzuki
SignalR Tune-up
by
Takaaki Suzuki
Rx入門
1.
Hokuriku.NET C# Rx編 February 11
th /March 17 th , 2012 鈴木孝明
2.
Agenda • • • • • • • Rxの概要 オブザーバーパターン LINQによる記述 時間/イベント/非同期のシーケンス化 HotとCold スケジューラの利用 今日のまとめ
3.
さぁ、Rxの世界へ!! Rxの概要
4.
Rx (Reactive Extensions)
とは • 値群を時間軸に乗ったシーケンスとして捉える • 時間/イベント/非同期処理をLINQで記述 • .NET 3.5 SP1以降、SL 4以降、WP7で利用可能 • 特に非同期APIしかないSilverlight環境で威力を発揮 • Windows Phone 7にのみ標準搭載 • RxJSというJavaScript版もある • Microsoftの正式なプロジェクト
5.
時間軸を基にしたシーケンス • IObservable<T>は時間軸に乗る非同期な値群 • これに乗せられるものはすべて統一的に扱える •
例) タイマー/イベント/非同期処理 [出典] 連載 : Reactive Extensions (Rx) 入門 - @IT
6.
時間軸シーケンスのイメージ • ベルトコンベアのようなイメージで考える • • • • モノが流れてくる (=
IObservable<T>からの発行) 不純物を取り除く検査が行われる (= Where) 梱包作業が行われる (= Select) 配送される (= Subscribe) Where Select
7.
ライブラリの入手 • NuGet Gallery
- Rx-Main より取得
8.
ライブラリの入手 • ダウンロードサイト より取得 •
NuGet が使えない場合
9.
Rxの基本はPush通知!! オブザーバーパターン
10.
オブザーバーパターンとは • 疎結合のためのデザインパターン • 具象クラス間の依存なしに状態変化を通知する •
例) データ変更 → UI更新 • データがUIを知っている設計は極めて汎用性が低い • 観測対象 (サブジェクト) と観測者 (オブザーバー) で抽象化 • 一般的にはインターフェース/イベントで実現
11.
オブザーバーパターンの構成
12.
基本インターフェース • 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には標準搭載
13.
Push型 vs Pull型 Push型 Pull型 •
コネクションを張り、受信待機 • IObservable<T> • 各々必要に応じて取得しに行く • IEnumerable<T>
14.
IObserver<T>の省略 • IObserver<T>を毎回実装するのは手間 • デリゲートを渡すことでオブザーバーの生成を隠蔽 拡張メソッド •
隠蔽化によってコードの見え方が変わる • 「IObserver<T>の登録」から「Subscribeで処理」へ
15.
一人二役なSubject<T> • IObservable<T>とIObserver<T>の両方を実装 • Rxにおけるイベント •
いくつかの亜種がある Subject<T> BehaviorSubject<T> 最も基本的なもの 初期値ありSubject<T> ReplaySubject<T> 再発行時にリプレイ AsyncSubject<T> 非同期処理を模倣
16.
IObservable<T>の生成メソッド • Observable静的クラスに数多く提供されている • IObservable<T>を毎回実装するのは手間 •
定型句なものは生成メソッドを使って楽をする Observable.Range(3, 5); 3から始まり1ずつインクリ メントされた5つの値を返す Observable.Repeat(1, 3); 1を3回発行 Observable.Create(observer => { observer.OnNext(100); observer.OnCompleted(); return () => { … }; // Disposer }; Subscribeで接続されたオブ ザーバーに対して直接値を 発行
17.
宣言的に書ける美しさ!! LINQ による記述
18.
LINQスタイルでの記述 • メソッド形式 • クエリ式形式
19.
Where/Selectの内部実装 • IObserver<T>で受ける • フィルタリング/射影 •
IObservable<T>で返却 Source .Where(…) .Subscribe(observer);
20.
時間軸上の値を統一的に扱おう!! 時間/イベント/非同期の シーケンス化
21.
イベントのシーケンス化 • EventHandler/EventHandler<T>形式から生成 • Observable.FromEventPatternメソッドを利用 •
イベント通知はEventPattern<T>型 (Sender & EventArgs) で行われる • リフレクションによるオーバーロードもある • Action<T>/Func<T>など、独自形式から生成 • Observable.FromEventメソッドを利用 • 通知する型の形式変換も可能で、非常に柔軟性が高い
22.
非同期処理のシーケンス化 • ToAsync/Startメソッドでデリゲートからの生成 • 引数を与えたり、戻り値を受けることも可能 •
BeginXxx/EndXxx (APMパターン) からの生成 • FromAsyncPatternメソッドを利用 • OnCompletedが呼ばれるまでが非同期処理中 • 非同期処理の結果はOnCompletedの直前にOnNextで通知される • 結果が何もない場合はUnit構造体 (voidの代替) が通知される • 実行スレッドは既定でThreadPool上 • GUIアプリの場合、このままではUIに触れないので注意
23.
IObservable<T>の性質を知ろう!! HotとCold
24.
Hot vs Cold Hot
Observable Cold Observable • すべてのIObserver<T>に対して 一度に同じ値を送信 • それぞれのIObserver<T>に対して 個別に値を送信
25.
Cold to Hot
変換 • 一時的に流れを堰き止める (IConnecableObservable<T>) • その間に支流を作り、完成したら再放流
26.
Rxの柔軟性はココにあり!! スケジューラの利用
27.
スケジューラの概要 • 処理をいつ/どこで実行するかを振り分ける • IObservable<T>の生成メソッドに設定して利用 •
基本的にはメソッドのオーバーロードで指定可能 • 指定しないメソッドは暗黙にデフォルトが設定される • スレッド切り替え • Observable.ObserveOnメソッドで以降の動作スレッドを変更 • 柔軟性が確保される反面、パフォーマンスが悪い • Observable.RangeはEnumerable.Rangeより数百倍遅い
28.
スケジューラの種類 CurrentThreadScheduler 現在実行中のスレッド上で、キュー に登録されたものから順に処理 ImmediateScheduler 現在実行中のスレッド上で、即座に 実行 NewThreadScheduler それぞれ別スレッドで処理 EventLoopScheduler 指定されたスレッド上で処理 ThreadPoolScheduler スレッドプール上で処理 TaskPoolScheduler 指定されたTaskFactory上で処理 SynchronizationContextScheduler 指定されたSynchronizationContext に同期して処理 ControlScheduler 指定されたWinFormsコントロール のあるメッセージループで処理 DispatcherScheduler 指定されたDispatcher上で処理
29.
ココだけは押さえよう!! 今日のまとめ
30.
まとめ • オブザーバーパターンによるPush通知が基本 • 値群を時間軸に乗ったシーケンスとして捉える •
IObservable<T>とIObserver<T>で実現される • 時間/イベント/非同期処理をLINQで記述可能 • メソッド形式/クエリ式形式どちらでも書ける • メソッド形式の方ができることは多い
31.
まとめ • HotとColdという性質の違いがある • Hot
: すべてのIObserver<T>に対して一度に同じ値を送信 • Cold : それぞれのIObserver<T>に対して個別に値を送信 • スケジューラで柔軟性を提供している • スレッドの切り替え • 処理順序の変更 • パフォーマンスは大幅に低下する • .NET 3.5 SP1以降、SL 4以降、WP7で利用可能
32.
参考記事 • 連載 :
Reactive Extensions (Rx) 入門 • Reactive Extensions入門「まとめ」 • Reactive Extensions再入門 • Rx入門 - インデックス • neue.cc
Download