SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Hokuriku.NET C#
Rx編
February 11 th /March 17 th , 2012
鈴木孝明
Agenda
•
•
•
•
•
•
•

Rxの概要
オブザーバーパターン
LINQによる記述
時間/イベント/非同期のシーケンス化
HotとCold
スケジューラの利用
今日のまとめ
さぁ、Rxの世界へ!!

Rxの概要
Rx (Reactive Extensions) とは
• 値群を時間軸に乗ったシーケンスとして捉える
• 時間/イベント/非同期処理をLINQで記述

• .NET 3.5 SP1以降、SL 4以降、WP7で利用可能
• 特に非同期APIしかないSilverlight環境で威力を発揮
• Windows Phone 7にのみ標準搭載
• RxJSというJavaScript版もある

• Microsoftの正式なプロジェクト
時間軸を基にしたシーケンス
• IObservable<T>は時間軸に乗る非同期な値群
• これに乗せられるものはすべて統一的に扱える
• 例) タイマー/イベント/非同期処理

[出典] 連載 : Reactive Extensions (Rx) 入門 - @IT
時間軸シーケンスのイメージ
• ベルトコンベアのようなイメージで考える
•
•
•
•

モノが流れてくる (= IObservable<T>からの発行)
不純物を取り除く検査が行われる (= Where)
梱包作業が行われる (= Select)
配送される (= Subscribe)

Where

Select
ライブラリの入手
• NuGet Gallery - Rx-Main より取得
ライブラリの入手
• ダウンロードサイト より取得
• NuGet が使えない場合
Rxの基本はPush通知!!

オブザーバーパターン
オブザーバーパターンとは
• 疎結合のためのデザインパターン
• 具象クラス間の依存なしに状態変化を通知する
• 例) データ変更 → UI更新
• データがUIを知っている設計は極めて汎用性が低い

• 観測対象 (サブジェクト) と観測者 (オブザーバー) で抽象化
• 一般的にはインターフェース/イベントで実現
オブザーバーパターンの構成
基本インターフェース
• 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には標準搭載
Push型 vs Pull型
Push型

Pull型

• コネクションを張り、受信待機
• IObservable<T>

• 各々必要に応じて取得しに行く
• IEnumerable<T>
IObserver<T>の省略
• IObserver<T>を毎回実装するのは手間
• デリゲートを渡すことでオブザーバーの生成を隠蔽

拡張メソッド

• 隠蔽化によってコードの見え方が変わる
• 「IObserver<T>の登録」から「Subscribeで処理」へ
一人二役なSubject<T>
• IObservable<T>とIObserver<T>の両方を実装
• Rxにおけるイベント

• いくつかの亜種がある
Subject<T>
BehaviorSubject<T>

最も基本的なもの
初期値ありSubject<T>

ReplaySubject<T>

再発行時にリプレイ

AsyncSubject<T>

非同期処理を模倣
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で接続されたオブ
ザーバーに対して直接値を
発行
宣言的に書ける美しさ!!

LINQ による記述
LINQスタイルでの記述
• メソッド形式

• クエリ式形式
Where/Selectの内部実装
• IObserver<T>で受ける
• フィルタリング/射影

• IObservable<T>で返却
Source
.Where(…)
.Subscribe(observer);
時間軸上の値を統一的に扱おう!!

時間/イベント/非同期の
シーケンス化
イベントのシーケンス化
• EventHandler/EventHandler<T>形式から生成
• Observable.FromEventPatternメソッドを利用
• イベント通知はEventPattern<T>型 (Sender & EventArgs) で行われる
• リフレクションによるオーバーロードもある

• Action<T>/Func<T>など、独自形式から生成
• Observable.FromEventメソッドを利用
• 通知する型の形式変換も可能で、非常に柔軟性が高い
非同期処理のシーケンス化
• ToAsync/Startメソッドでデリゲートからの生成
• 引数を与えたり、戻り値を受けることも可能

• BeginXxx/EndXxx (APMパターン) からの生成
• FromAsyncPatternメソッドを利用

• OnCompletedが呼ばれるまでが非同期処理中
• 非同期処理の結果はOnCompletedの直前にOnNextで通知される
• 結果が何もない場合はUnit構造体 (voidの代替) が通知される

• 実行スレッドは既定でThreadPool上
• GUIアプリの場合、このままではUIに触れないので注意
IObservable<T>の性質を知ろう!!

HotとCold
Hot vs Cold
Hot Observable

Cold Observable

• すべてのIObserver<T>に対して
一度に同じ値を送信

• それぞれのIObserver<T>に対して
個別に値を送信
Cold to Hot 変換
• 一時的に流れを堰き止める (IConnecableObservable<T>)
• その間に支流を作り、完成したら再放流
Rxの柔軟性はココにあり!!

スケジューラの利用
スケジューラの概要
• 処理をいつ/どこで実行するかを振り分ける

• IObservable<T>の生成メソッドに設定して利用
• 基本的にはメソッドのオーバーロードで指定可能
• 指定しないメソッドは暗黙にデフォルトが設定される

• スレッド切り替え
• Observable.ObserveOnメソッドで以降の動作スレッドを変更

• 柔軟性が確保される反面、パフォーマンスが悪い
• Observable.RangeはEnumerable.Rangeより数百倍遅い
スケジューラの種類
CurrentThreadScheduler

現在実行中のスレッド上で、キュー
に登録されたものから順に処理

ImmediateScheduler

現在実行中のスレッド上で、即座に
実行

NewThreadScheduler

それぞれ別スレッドで処理

EventLoopScheduler

指定されたスレッド上で処理

ThreadPoolScheduler

スレッドプール上で処理

TaskPoolScheduler

指定されたTaskFactory上で処理

SynchronizationContextScheduler

指定されたSynchronizationContext
に同期して処理

ControlScheduler

指定されたWinFormsコントロール
のあるメッセージループで処理

DispatcherScheduler

指定されたDispatcher上で処理
ココだけは押さえよう!!

今日のまとめ
まとめ
• オブザーバーパターンによるPush通知が基本
• 値群を時間軸に乗ったシーケンスとして捉える

• IObservable<T>とIObserver<T>で実現される
• 時間/イベント/非同期処理をLINQで記述可能
• メソッド形式/クエリ式形式どちらでも書ける
• メソッド形式の方ができることは多い
まとめ
• HotとColdという性質の違いがある
• Hot : すべてのIObserver<T>に対して一度に同じ値を送信
• Cold : それぞれのIObserver<T>に対して個別に値を送信

• スケジューラで柔軟性を提供している
• スレッドの切り替え
• 処理順序の変更
• パフォーマンスは大幅に低下する

• .NET 3.5 SP1以降、SL 4以降、WP7で利用可能
参考記事
• 連載 : Reactive Extensions (Rx) 入門

• Reactive Extensions入門「まとめ」
• Reactive Extensions再入門
• Rx入門 - インデックス
• neue.cc
Rx入門

Contenu connexe

Tendances

Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようtakeshi suto
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方Yoshiyasu SAEKI
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Web Services Japan
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)NTT DATA Technology & Innovation
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解MITSUNARI Shigeo
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1Y Watanabe
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門Masaya Dake
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことTakayuki Ishikawa
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersSeiya Mizuno
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案樽八 仲川
 
PowerApps JSONの使い道
PowerApps JSONの使い道PowerApps JSONの使い道
PowerApps JSONの使い道Nagao Hiroaki
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろうKota Mizushima
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪崇之 清水
 
Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習西岡 賢一郎
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugToshiaki Maki
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるMasatoshi Tada
 

Tendances (20)

Glue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみようGlue DataBrewでデータをクリーニング、加工してみよう
Glue DataBrewでデータをクリーニング、加工してみよう
 
ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方ストリーム処理を支えるキューイングシステムの選び方
ストリーム処理を支えるキューイングシステムの選び方
 
Amazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオンAmazon Athena 初心者向けハンズオン
Amazon Athena 初心者向けハンズオン
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
今こそ知りたいSpring Batch(Spring Fest 2020講演資料)
 
AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解AVX-512(フォーマット)詳解
AVX-512(フォーマット)詳解
 
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
JavaでWebサービスを作り続けるための戦略と戦術 JJUG-CCC-2018-Spring-g1
 
噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp噛み砕いてKafka Streams #kafkajp
噛み砕いてKafka Streams #kafkajp
 
SpringBootTest入門
SpringBootTest入門SpringBootTest入門
SpringBootTest入門
 
グラフデータベース入門
グラフデータベース入門グラフデータベース入門
グラフデータベース入門
 
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったことAWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
AWS導入から3年 AWSマルチアカウント管理で変わらなかったこと変えていったこと
 
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol BuffersApache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
 
脱RESTful API設計の提案
脱RESTful API設計の提案脱RESTful API設計の提案
脱RESTful API設計の提案
 
PowerApps JSONの使い道
PowerApps JSONの使い道PowerApps JSONの使い道
PowerApps JSONの使い道
 
メタプログラミングって何だろう
メタプログラミングって何だろうメタプログラミングって何だろう
メタプログラミングって何だろう
 
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
Amazon DynamoDB(初心者向け 超速マスター編)JAWSUG大阪
 
Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習Amazon SageMakerでカスタムコンテナを使った学習
Amazon SageMakerでカスタムコンテナを使った学習
 
Java8でRDBMS作ったよ
Java8でRDBMS作ったよJava8でRDBMS作ったよ
Java8でRDBMS作ったよ
 
Spring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsugSpring Bootで変わる Javaアプリ開発! #jsug
Spring Bootで変わる Javaアプリ開発! #jsug
 
とにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みるとにかく分かりづらいTwelve-Factor Appの解説を試みる
とにかく分かりづらいTwelve-Factor Appの解説を試みる
 

En vedette

2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化Hiroyuki Mori
 
縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう株式会社グラフィシア
 
難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビューShinichi Takahashi
 
メトロスタイルってなに?
メトロスタイルってなに?メトロスタイルってなに?
メトロスタイルってなに?ShinichiAoyagi
 
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへWpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへHiroyuki Mori
 
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpphiyohiyo
 
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争Mignon Style
 
コードレビュー用資料
コードレビュー用資料コードレビュー用資料
コードレビュー用資料Ayumu Itou
 
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門Fujikido
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略Hiroyuki Mori
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて一希 大田
 

En vedette (12)

2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化2013 11-09 デスクトップ・アプリの価値を高めるモダン化
2013 11-09 デスクトップ・アプリの価値を高めるモダン化
 
縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう縁取りでアプリの文字を見やすくしよう
縁取りでアプリの文字を見やすくしよう
 
難しいよね、コードレビュー
難しいよね、コードレビュー難しいよね、コードレビュー
難しいよね、コードレビュー
 
メトロスタイルってなに?
メトロスタイルってなに?メトロスタイルってなに?
メトロスタイルってなに?
 
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへWpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
Wpf・silverlightのアニメーションからwindowsストアアプリのアニメーションへ
 
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
今更始める Win32 + DirectWrite #pronamaclrhsapporocpp
 
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
〜 デザイン脳×プログラミング脳 〜 デザイナーとプログラマーの72時間戦争
 
コードレビュー用資料
コードレビュー用資料コードレビュー用資料
コードレビュー用資料
 
C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門C#/WPFで作るデスクトップマスコット入門
C#/WPFで作るデスクトップマスコット入門
 
僕がやったXaml戦略
僕がやったXaml戦略僕がやったXaml戦略
僕がやったXaml戦略
 
Prism.Formsについて
Prism.FormsについてPrism.Formsについて
Prism.Formsについて
 
Bluetoothでgo!
Bluetoothでgo!Bluetoothでgo!
Bluetoothでgo!
 

Similaire à Rx入門

Reactive Systems と Back Pressure
Reactive Systems と Back PressureReactive Systems と Back Pressure
Reactive Systems と Back PressureAkihiro Ikezoe
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたItaru Kitagawa
 
RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-Takaaki Suzuki
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0Yoshifumi Kawai
 
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会   reactive extensions inside(公開用)UniRx勉強会   reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)wilfrem
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiYuta Okamoto
 
LineairDBの紹介
LineairDBの紹介LineairDBの紹介
LineairDBの紹介Sho Nakazono
 
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようRxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようFumihiko Shiroyama
 
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmchuck h
 
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptYoshifumi Kawai
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 bitbank, Inc. Tokyo, Japan
 
オブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみたオブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみた小林 弘明
 
Flowtype Introduction
Flowtype IntroductionFlowtype Introduction
Flowtype IntroductionTeppei Sato
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御Takashi Hoshino
 

Similaire à Rx入門 (20)

Rx Showcase
Rx ShowcaseRx Showcase
Rx Showcase
 
Reactive Systems と Back Pressure
Reactive Systems と Back PressureReactive Systems と Back Pressure
Reactive Systems と Back Pressure
 
サーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみたサーバサイドエンジニアが 1年間まじめにSPAやってみた
サーバサイドエンジニアが 1年間まじめにSPAやってみた
 
RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-RxShowcase -for ignote & i-Jupiter-
RxShowcase -for ignote & i-Jupiter-
 
RxSwift x Realm
RxSwift x RealmRxSwift x Realm
RxSwift x Realm
 
Reactive Extensions v2.0
Reactive Extensions v2.0Reactive Extensions v2.0
Reactive Extensions v2.0
 
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会   reactive extensions inside(公開用)UniRx勉強会   reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
 
serverless
serverlessserverless
serverless
 
Influxdb ver0.9.5#yjdsw3
Influxdb ver0.9.5#yjdsw3Influxdb ver0.9.5#yjdsw3
Influxdb ver0.9.5#yjdsw3
 
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumiリアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
リアクティブ・アーキテクチャ ~大規模サービスにおける必要性と課題〜 #devsumi
 
LineairDBの紹介
LineairDBの紹介LineairDBの紹介
LineairDBの紹介
 
Rxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしようRxjavaとoptionalで関数型androidしよう
Rxjavaとoptionalで関数型androidしよう
 
Redux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElmRedux, Relay, HorizonあるいはElm
Redux, Relay, HorizonあるいはElm
 
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScriptlinq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
 
仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践 仮想通貨取引所 bitbank の IaC の導入と実践
仮想通貨取引所 bitbank の IaC の導入と実践
 
ReactiveSignalR
ReactiveSignalRReactiveSignalR
ReactiveSignalR
 
オブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみたオブジェクト指向な人がRx swiftを試してみた
オブジェクト指向な人がRx swiftを試してみた
 
Flowtype Introduction
Flowtype IntroductionFlowtype Introduction
Flowtype Introduction
 
トランザクションの並行処理制御
トランザクションの並行処理制御トランザクションの並行処理制御
トランザクションの並行処理制御
 
RxSwift x APIKit
RxSwift x APIKitRxSwift x APIKit
RxSwift x APIKit
 

Plus de Takaaki Suzuki

5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String Handler5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String HandlerTakaaki Suzuki
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用Takaaki Suzuki
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 TipsTakaaki Suzuki
 
30min Serverless xTuber
30min Serverless xTuber30min Serverless xTuber
30min Serverless xTuberTakaaki Suzuki
 
Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7Takaaki Suzuki
 
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm4 Colors Othello’s Algorithm
4 Colors Othello’s AlgorithmTakaaki Suzuki
 
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 20174 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017Takaaki Suzuki
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Takaaki Suzuki
 

Plus de Takaaki Suzuki (20)

5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String Handler5 分で学ぶ Interpolated String Handler
5 分で学ぶ Interpolated String Handler
 
C# における Redis 徹底活用
C# における Redis 徹底活用C# における Redis 徹底活用
C# における Redis 徹底活用
 
Inside FastEnum
Inside FastEnumInside FastEnum
Inside FastEnum
 
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
 
30min Serverless xTuber
30min Serverless xTuber30min Serverless xTuber
30min Serverless xTuber
 
Tetris Algorithm
Tetris AlgorithmTetris Algorithm
Tetris Algorithm
 
C# 7 New Features
C# 7 New FeaturesC# 7 New Features
C# 7 New Features
 
Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7Live Coding で学ぶ C# 7
Live Coding で学ぶ C# 7
 
C# 7 Current Status
C# 7 Current StatusC# 7 Current Status
C# 7 Current Status
 
4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm4 Colors Othello’s Algorithm
4 Colors Othello’s Algorithm
 
Sharing Deep Dive
Sharing Deep DiveSharing Deep Dive
Sharing Deep Dive
 
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 20174 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
4 Colors Othello’s Algorithm @仙台 IT 文化祭 2017
 
DeclarativeSql
DeclarativeSqlDeclarativeSql
DeclarativeSql
 
Sevens Algorithm
Sevens AlgorithmSevens Algorithm
Sevens Algorithm
 
Friendly
FriendlyFriendly
Friendly
 
WPF Interoperability
WPF InteroperabilityWPF Interoperability
WPF Interoperability
 
Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-Universal Appとは? -デバイスに依存しないアプリケーション開発-
Universal Appとは? -デバイスに依存しないアプリケーション開発-
 
酒の肴はC# vNext
酒の肴はC# vNext酒の肴はC# vNext
酒の肴はC# vNext
 
Async History in .NET
Async History in .NETAsync History in .NET
Async History in .NET
 
SignalR Tune-up
SignalR Tune-upSignalR Tune-up
SignalR Tune-up
 

Dernier

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Danieldanielhu54
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 

Dernier (9)

論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
Postman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By DanielPostman LT Fukuoka_Quick Prototype_By Daniel
Postman LT Fukuoka_Quick Prototype_By Daniel
 
スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 

Rx入門