Suche senden
Hochladen
Rx入門
•
25 gefällt mir
•
27,789 views
Takaaki Suzuki
Folgen
2012/02/11 - 2012/03/17 Hokuriku.NET C# -Rx入門- セッション資料
Weniger lesen
Mehr lesen
Technologie
Sport
Melden
Teilen
Melden
Teilen
1 von 33
Jetzt herunterladen
Downloaden Sie, um offline zu lesen
Empfohlen
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAM
Yoshitaka HARA
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
型安全性入門
型安全性入門
Akinori Abe
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
例外設計における大罪
例外設計における大罪
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
Empfohlen
Cartographer を用いた 3D SLAM
Cartographer を用いた 3D SLAM
Yoshitaka HARA
ROSによる今後のロボティクスのあり方
ROSによる今後のロボティクスのあり方
Mori Ken
型安全性入門
型安全性入門
Akinori Abe
ドメイン駆動設計サンプルコードの徹底解説
ドメイン駆動設計サンプルコードの徹底解説
増田 亨
イミュータブルデータモデル(入門編)
イミュータブルデータモデル(入門編)
Yoshitaka Kawashima
例外設計における大罪
例外設計における大罪
Takuto Wada
それはYAGNIか? それとも思考停止か?
それはYAGNIか? それとも思考停止か?
Yoshitaka Kawashima
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
増田 亨
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
正規表現と正規言語
正規表現と正規言語
Hideaki Miyake
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
Ichigaku Takigawa
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
ゲームの中の人工知能
ゲームの中の人工知能
Youichiro Miyake
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Shintaro Fukushima
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
Hiroyuki Mori
縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう
株式会社グラフィシア
Weitere ähnliche Inhalte
Was ist angesagt?
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Koichiro Matsuoka
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
Ryuji Tsutsui
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
Yoshitaka Kawashima
正規表現と正規言語
正規表現と正規言語
Hideaki Miyake
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
Ichigaku Takigawa
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
NTT DATA Technology & Innovation
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ShunsukeNakamura17
ゲームの中の人工知能
ゲームの中の人工知能
Youichiro Miyake
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Takeshi Mikami
tf,tf2完全理解
tf,tf2完全理解
Koji Terada
テストコードの DRY と DAMP
テストコードの DRY と DAMP
Yusuke Kagata
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
Atsushi Nakamura
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
増田 亨
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
NTT DATA Technology & Innovation
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
Shintaro Fukushima
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
増田 亨
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
MITSUNARI Shigeo
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
mosa siru
Was ist angesagt?
(20)
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
SSII2022 [TS2] 自律移動ロボットのためのロボットビジョン〜 オープンソースの自動運転ソフトAutowareを解説 〜
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
Python 3.9からの新定番zoneinfoを使いこなそう
Python 3.9からの新定番zoneinfoを使いこなそう
イミュータブルデータモデルの極意
イミュータブルデータモデルの極意
正規表現と正規言語
正規表現と正規言語
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
機械学習と機械発見:自然科学研究におけるデータ利活用の再考
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
GraalVMの多言語実行機能が凄そうだったので試しにApache Sparkに組み込んで動かしてみたけどちょっとまだ早かったかもしれない(Open So...
Rustに触れて私のPythonはどう変わったか
Rustに触れて私のPythonはどう変わったか
ゲームの中の人工知能
ゲームの中の人工知能
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
tf,tf2完全理解
tf,tf2完全理解
テストコードの DRY と DAMP
テストコードの DRY と DAMP
世界一わかりやすいClean Architecture
世界一わかりやすいClean Architecture
正しいものを正しく作る塾-設計コース
正しいものを正しく作る塾-設計コース
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
AlloyDBを触ってみた!(第33回PostgreSQLアンカンファレンス@オンライン 発表資料)
機械学習品質管理・保証の動向と取り組み
機械学習品質管理・保証の動向と取り組み
ドメイン駆動設計の正しい歩き方
ドメイン駆動設計の正しい歩き方
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
マイクロにしすぎた結果がこれだよ!
マイクロにしすぎた結果がこれだよ!
Andere mochten auch
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
Hiroyuki Mori
縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう
株式会社グラフィシア
難しいよね、コードレビュー
難しいよね、コードレビュー
Shinichi Takahashi
メトロスタイルってなに?
メトロスタイルってなに?
ShinichiAoyagi
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Hiroyuki Mori
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
hiyohiyo
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
Mignon Style
コードレビュー用資料
コードレビュー用資料
Ayumu Itou
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
Fujikido
僕がやったXaml戦略
僕がやったXaml戦略
Hiroyuki Mori
Prism.Formsについて
Prism.Formsについて
一希 大田
Bluetoothでgo!
Bluetoothでgo!
Kouji Matsui
Andere mochten auch
(12)
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう
難しいよね、コードレビュー
難しいよね、コードレビュー
メトロスタイルってなに?
メトロスタイルってなに?
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
コードレビュー用資料
コードレビュー用資料
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
僕がやったXaml戦略
僕がやったXaml戦略
Prism.Formsについて
Prism.Formsについて
Bluetoothでgo!
Bluetoothでgo!
Ähnlich wie Rx入門
Rx Showcase
Rx Showcase
Takaaki Suzuki
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
Akihiro Ikezoe
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
Itaru Kitagawa
RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-
Takaaki Suzuki
RxSwift x Realm
RxSwift x Realm
Kosuke Usami
Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
serverless
serverless
Akira Otsuka
Influxdb ver0.9.5#yjdsw3
Influxdb ver0.9.5#yjdsw3
Yahoo!デベロッパーネットワーク
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
Yuta Okamoto
LineairDBの紹介
LineairDBの紹介
Sho Nakazono
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしよう
Fumihiko Shiroyama
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
chuck h
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
bitbank, Inc. Tokyo, Japan
ReactiveSignalR
ReactiveSignalR
Takaaki Suzuki
オブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみた
小林 弘明
Flowtype Introduction
Flowtype Introduction
Teppei Sato
トランザクションの並行処理制御
トランザクションの並行処理制御
Takashi Hoshino
RxSwift x APIKit
RxSwift x APIKit
Kosuke Usami
Ähnlich wie Rx入門
(20)
Rx Showcase
Rx Showcase
Reactive Systems と Back Pressure
Reactive Systems と Back Pressure
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-
RxSwift x Realm
RxSwift x Realm
Reactive Extensions v2.0
Reactive Extensions v2.0
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
serverless
serverless
Influxdb ver0.9.5#yjdsw3
Influxdb ver0.9.5#yjdsw3
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
LineairDBの紹介
LineairDBの紹介
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしよう
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
ReactiveSignalR
ReactiveSignalR
オブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみた
Flowtype Introduction
Flowtype Introduction
トランザクションの並行処理制御
トランザクションの並行処理制御
RxSwift x APIKit
RxSwift x APIKit
Mehr von Takaaki Suzuki
5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String Handler
Takaaki Suzuki
C# における Redis 徹底活用
C# における Redis 徹底活用
Takaaki Suzuki
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
30min Serverless xTuber
30min Serverless xTuber
Takaaki Suzuki
Tetris Algorithm
Tetris Algorithm
Takaaki Suzuki
C# 7 New Features
C# 7 New Features
Takaaki Suzuki
Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7
Takaaki Suzuki
C# 7 Current Status
C# 7 Current Status
Takaaki Suzuki
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm
Takaaki Suzuki
Sharing Deep Dive
Sharing Deep Dive
Takaaki Suzuki
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
Takaaki Suzuki
DeclarativeSql
DeclarativeSql
Takaaki Suzuki
Sevens Algorithm
Sevens Algorithm
Takaaki Suzuki
Friendly
Friendly
Takaaki Suzuki
WPF Interoperability
WPF Interoperability
Takaaki Suzuki
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Takaaki Suzuki
酒の肴はC# vNext
酒の肴はC# vNext
Takaaki Suzuki
Async History in .NET
Async History in .NET
Takaaki Suzuki
SignalR Tune-up
SignalR Tune-up
Takaaki Suzuki
Mehr von Takaaki Suzuki
(20)
5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String Handler
C# における Redis 徹底活用
C# における Redis 徹底活用
Inside FastEnum
Inside FastEnum
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
30min Serverless xTuber
30min Serverless xTuber
Tetris Algorithm
Tetris Algorithm
C# 7 New Features
C# 7 New Features
Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7
C# 7 Current Status
C# 7 Current Status
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm
Sharing Deep Dive
Sharing Deep Dive
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
DeclarativeSql
DeclarativeSql
Sevens Algorithm
Sevens Algorithm
Friendly
Friendly
WPF Interoperability
WPF Interoperability
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
酒の肴はC# vNext
酒の肴はC# vNext
Async History in .NET
Async History in .NET
SignalR Tune-up
SignalR Tune-up
Kürzlich hochgeladen
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
CRI Japan, Inc.
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
WSO2
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
atsushi061452
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Toru Tamaki
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Hiroshi Tomioka
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
CRI Japan, Inc.
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
Toru Tamaki
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
sn679259
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
iPride Co., Ltd.
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NTT DATA Technology & Innovation
Kürzlich hochgeladen
(12)
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
Utilizing Ballerina for Cloud Native Integrations
Utilizing Ballerina for Cloud Native Integrations
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
知識ゼロの営業マンでもできた!超速で初心者を脱する、悪魔的学習ステップ3選.pptx
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
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
Jetzt herunterladen