Soumettre la recherche
Mettre en ligne
Rxに入門しようとしている
•
1 j'aime
•
3,015 vues
onotchi_
Suivre
Rxに触れて数日、現時点までに覚えたこと、感じたことをまとめました
Lire moins
Lire la suite
Technologie
Signaler
Partager
Signaler
Partager
1 sur 14
Recommandé
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
async/await のしくみ
async/await のしくみ
信之 岩永
Recommandé
UniRx勉強会 reactive extensions inside(公開用)
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
linq.js - Linq to Objects for JavaScript
linq.js - Linq to Objects for JavaScript
Yoshifumi Kawai
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
Reactive Extensionsで非同期処理を簡単に
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
Inside FastEnum
Inside FastEnum
Takaaki Suzuki
async/await のしくみ
async/await のしくみ
信之 岩永
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
Rx入門
Rx入門
Takaaki Suzuki
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Mono is Dead
Mono is Dead
melpon
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
The History of Reactive Extensions
The History of Reactive Extensions
Yoshifumi Kawai
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
Final LINQ Extensions
Final LINQ Extensions
Kouji Matsui
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
LINQ in Unity
LINQ in Unity
Yoshifumi Kawai
動的なILの生成と編集
動的なILの生成と編集
terurou
Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
Contenu connexe
Tendances
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
Yoshifumi Kawai
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Yoshifumi Kawai
Rx入門
Rx入門
Takaaki Suzuki
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
Unity Technologies Japan K.K.
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi
Mono is Dead
Mono is Dead
melpon
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Uehara Junji
Async design with Unity3D
Async design with Unity3D
Kouji Hosoda
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
Takaaki Suzuki
The History of Reactive Extensions
The History of Reactive Extensions
Yoshifumi Kawai
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
YujiSoftware
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Mitsuru Kariya
Final LINQ Extensions
Final LINQ Extensions
Kouji Matsui
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
LINQ in Unity
LINQ in Unity
Yoshifumi Kawai
動的なILの生成と編集
動的なILの生成と編集
terurou
Reactive Extensions v2.0
Reactive Extensions v2.0
Yoshifumi Kawai
Tendances
(20)
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
What, Why, How Create OSS Libraries - 過去に制作した30のライブラリから見るC#コーディングテクニックと個人OSSの...
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
C#次世代非同期処理概観 - Task vs Reactive Extensions
C#次世代非同期処理概観 - Task vs Reactive Extensions
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
History & Practices for UniRx UniRxの歴史、或いは開発(中)タイトルの用例と落とし穴の回避法
Rx入門
Rx入門
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Mono is Dead
Mono is Dead
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Java One 2012 Tokyo JVM Lang. BOF(Groovy)
Async design with Unity3D
Async design with Unity3D
今日からできる!簡単 .NET 高速化 Tips
今日からできる!簡単 .NET 高速化 Tips
The History of Reactive Extensions
The History of Reactive Extensions
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
JEP280: Java 9 で文字列結合の処理が変わるぞ!準備はいいか!? #jjug_ccc
Effective Modern C++ 勉強会#3 Item16
Effective Modern C++ 勉強会#3 Item16
Final LINQ Extensions
Final LINQ Extensions
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
LINQ in Unity
LINQ in Unity
動的なILの生成と編集
動的なILの生成と編集
Reactive Extensions v2.0
Reactive Extensions v2.0
Rxに入門しようとしている
1.
Rxに入門しようとしている オノッチ(@onotchi_)
2.
Rx(Reactive Extentions)とは? LINQの一種 LINQ to
Events LINQ to Asynchronous(非同期)
3.
ターゲットは? 時間 async array event Time
4.
何が出来る? 新しいイベントを合成できる Click + Click
= Double Click MouseDown + MouseMove + MouseUp = Drag Time event
5.
IEnumerable<T> と IObservable<T> pull
IEnumerable<T> IEnumerator<T> GetEnumerator MoveNext MoveNext MoveNext
6.
IEnumerable<T> と IObservable<T> push IObservable<T> IObserver<T> OnNext
OnNext OnNext Subscribe
7.
様々な言語で実装 C#: Rx.NET C#(Unity): UniRx Java:
RxJava JavaScript: RxJS Scala: RxScala Clojure: RxClojure C++: RxCpp Ruby: Rx.rb Python: RxPY Groovy: RxGroovy JRuby: RxJRuby Kotlin: RxKotlin Swift: RxSwift
8.
どれかを覚えたら( ・∀・)イイ!!
9.
実際のソース Unityでダブルクリック処理(※)を Rxの有/無で記述してみる ※簡略化のため、実際はダブルマウスダウン?を処理
10.
Not Rx using System; using
UnityEngine; public class DoubleClick : MonoBehaviour { private int _clickCount = 0; private long _ticks = 0L; // Use this for initialization private void Start() { } // Update is called once per frame private void Update() { if (Input.GetMouseButtonDown(0)) { this._clickCount++; if (this._clickCount == 1) { //1回目のクリック this._ticks = DateTime.Now.Ticks; } else if (this._clickCount == 2) { //2回目のクリック if (DateTime.Now.Ticks - this._ticks <= 5000000L) //Ticksはナノ秒 500ミリ秒 = 5000000ナノ秒 { //1回目のクリックとの時間差が500ミリ秒以内の場合はダブルクリックとする Debug.Log("★★double click : Normal"); this._clickCount = 0; } else { //このクリックを1回目のクリックとみなす this._clickCount = 1; this._ticks = DateTime.Now.Ticks; } } } } } ・要メンバ変数 ・ifのネスト 等 ↓ ソースが長くなる
11.
Rx public void Start() { this.UpdateAsObservable() .Where(_
=> Input.GetMouseButtonDown(0)) .TimeInterval() .Skip(1) .First(x => x.Interval.TotalMilliseconds <= 500) .RepeatUntilDisable(this.gameObject) .Subscribe(x => Debug.Log("★★double click : Rx")); } ワンライナー!
12.
面白そう Buffer メッセージを一定個数ごとにまとめる Throttle 一定時間以内にまとめて値が来たら落ち着くまで待ってから最後の値を取得
13.
参考 連載:Reactive Extensions(Rx)入門 http://www.atmarkit.co.jp/fdotnet/introrx/index/ ReactiveX http://reactivex.io/
14.
ご静聴ありがとうございました