SlideShare a Scribd company logo
UniRx - Reactive Extensions for Unity
2014/04/19
Yoshifumi Kawai - @neuecc
Self Introduction
@仕事
株式会社グラニ 取締役CTO
C# 5.0 + .NET Framework 4.5 + ASP.NET MVC 5
最先端C#によるハイパフォーマンスWebアプリケーション
@個人活動
Microsoft MVP for Visual C#
Web http://neue.cc/
Twitter @neuecc
linq.js - http://linqjs.codeplex.com/ とか作ってます
Unity
Game Engine but Not Only for Game Use
Unityとは
押しも押されぬゲームエンジン
http://japan.unity3d.com/
最近は公式に3Dだけじゃなく2Dもサポートされた
クロスプラットフォーム(PC/iOS/Android/Windows Phone/
Windows Store/etc...)
国内でも事例多数(iOS版ドラクエ8などなど)
C#で書ける! ※但しバージョン的には3.0相当
ゲーム以外の用途にも
映像の出力先としてのUnity
VR(Oculus Rift)やNUI(Kinect, Leap Motion)などデバイスがあっ
ても、何に表示するの?何を表現するの?
そこの最有力候補としてのUnity
強力な開発環境、3D表現、AssetStore、そしてシェア
多くのデバイスがUnity用のSDKを用意している
メディアアート
ProcessingやopenFrameworksなどのフィールドへ (期待)
Async in Unity
Coroutine is not good practice for asynchronous operation
Unityの非同期
通信処理はyield returnで待機できる
コールバック地獄にならない!
すばら!すばら!
と思ったことは一度もありません:)
IEnumerator OnMouseDown()
{
var www = new WWW("http://bing.com/");
yield return www; // これで待機
Debug.Log(www.text);
}
yieldの問題点
戻り値が返せない
例外処理ができない
IEnumerator GetGoogle()
{
var www = new WWW("http://google.com/");
yield return www;
// 戻り値を返せない!!! www.text is どこ
}
IEnumerator OnMouseDown()
{
// このコードはコンパイルエラー
// yieldはtry-catchで囲めないので例外処理できない!
try
{
yield return StartCoroutine(GetGoogle());
}
catch
{
}
}
これにより処理が分離できないという問題が
発生する。一つのIEnumeratorにダラダラと書
き連ねるしかなくなってしまう
あるいはコールバック
IEnumerator GetGoogle(Action<string> onCompleted, Action<Exception> onError)
{
var www = new WWW("http://google.com/");
yield return www;
if (!www.error) onError(new Exception(www.error));
else onCompleted(www.text);
}
IEnumerator OnMouseDown()
{
string result;
Exception error;
yield return StartCoroutine(GetGoogle(x => result = x, x => error = x));
string result2;
Exception error2;
yield return StartCoroutine(GetGoogle(x => result2 = x, x => error2 = x));
}
結局コールバック地獄かよ!
(yieldで完了待機できるので多少マシだけどとはいえ酷い)
async Task<string> RunAsync()
{
try
{
var v = await new HttpClient().GetStringAsync("http://google.co.jp/");
var v2 = await new HttpClient().GetStringAsync("http://google.co.jp/");
return v + v2;
}
catch (Exception ex)
{
Debug.WriteLine(ex);
throw;
}
}
C# 5.0(async/await)なら?
yield(await)が戻り値を返して受け取れる
例外がtry-catchできる
非同期メソッドが戻り値を返せる
Unity 5.0
2014年秋ぐらいに多分リリース!
Monoのバージョンは新しくなりません!
つまりC#も古い(3.0)のままです!
asyncは来ない!知ってた!この先も期待できない!
The future of scripting in Unity
http://blogs.unity3d.com/2014/05/20/the-future-of-scripting-in-
unity/
今まで出遅れていたのを一気に取り戻そう作戦
Future、って感じでまだまだかなり時間かかりそうだ
Reactive Programming
Reactive Programming #とは
近年注目のアーキテクチャスタイル
昔からあったといえばあったけど、原理原則やライブラリが充実し
てきたので、最近一気に華開いた感ある
The Rective Manifesto http://www.reactivemanifesto.org/
Reactive Streams http://www.reactive-streams.org/
Principles of Reactive Programming
https://www.coursera.org/course/reactive
Martin Odersky(Creator of Scala)
Eric Meijer(Creator of Reactive Extensions)
Roland Kuhn(Akka Tech Lead)
Gartner’s Hype Cycle
2013 Application Architecture/Application Development
On the Rise - Reactive Programming
Reactive Extensions
.NETでのReactive Programmingライブラリ
https://rx.codeplex.com
Microsoftのプロジェクトだったけど現在はOSS化している
LINQスタイルでイベントや非同期が処理できる
他言語への移植
RxJava(RxNetよりむしろ注目されてるぐらい)
https://github.com/Netflix/RxJava 2070 Stars
RxJS(Microsoft自身によるもの)
https://github.com/Reactive-Extensions/RxJS 1021 Stars
UniRx - Reactive Extensions for Unity
というのを作りました、本日公開!
ほとんど(8割ぐらい)は自前で書いた
公式のRxはヘヴィすぎてUnityの古いC#で動かしきれない
iOSはAOTの問題もあって回避頑張れる気がしない
ので自前で書くことに。
Available Now(?)
GitHub - https://github.com/neuecc/UniRx/
AssetStore(無料)
http://u3d.as/content/neuecc/uni-rx-reactive-extensions-for-
unity/7tT
Curing Your Asynchronous
Programming Blues
Rx saves your life & codes
RxによるUnityの非同期通信
// xが完了したらそれでy、完了したらzのダウンロードの連鎖のフローをLINQクエリ式で
var query = from x in ObservableWWW.Get("http://google.co.jp/")
from y in ObservableWWW.Get(x)
from z in ObservableWWW.Get(y)
select new { x, y, z };
// Subscribe = "最後に全部まとまったあとの"コールバック(ネストしないから処理が楽)
query.Subscribe(x => Debug.Log(x), ex => Debug.LogException(ex));
// もしくはCoroutineに変換して待機も可能(ToCoroutine is yieldable!)
yield return StartCoroutine(query.Do(x => Debug.Log(x)).ToCoroutine());
etc, etc....
// AとBを同時並列に走らせて一個にまとめる
var query = Observable.Zip(
ObservableWWW.Get("http://google.co.jp/"),
ObservableWWW.Get("http://bing.com/"),
(google, bing) => new { google, bing });
// エラーが起きたらリトライ処理を入れる
var cancel = ObservableWWW.Get("http://hogehgoe")
.OnErrorRetry((Exception ex) => Debug.LogException(ex),
retryCount: 3, delay: TimeSpan.FromSeconds(1))
.Subscribe(Debug.Log);
// キャンセルしたい場合は戻り値のDisposeを呼ぶだけ
cancel.Dispose();
// などなど、100近くの演算子をメソッドチェーン形式で繋げることができる
// あらゆる実行フローを完全にコントロールできる
ところでObservableWWWは、
UniRxに同梱されている、Rxの
形式にラップ済みのWWWクラ
スで通信可能なメソッドです
Orchestrate MultiThreading
and LINQ to MonoBehaviour Message Events
UniRx solves MultiThreading problems
// なんか重たい処理を別スレッドで開始するStartメソッド
var heavyMethod1 = Observable.Start(() =>
{
Thread.Sleep(TimeSpan.FromSeconds(3));
return 1;
});
var heavyMethod2 = Observable.Start(() =>
{
Thread.Sleep(TimeSpan.FromSeconds(3));
return 1;
});
// Zipで両方並列に走らせながら連結して
heavyMethod1.Zip(heavyMethod2, (x, y) => new { x, y })
.ObserveOnMainThread() // MainThreadに戻す!
.Subscribe(x =>
{
(GameObject.Find("myGuiText")).guiText.text = x.ToString();
});
他スレッドと待ち合わせ
MainThreadに戻して、そ
れ以降のフローは
GameObjectにアクセス可
能にする
ObserveOnMainThread
Subscribe後の戻り値を
Disposeするだけでキャン
セル可能、などなど、多種
のメソッドがマルチスレッ
ド処理を支援する
AsyncA AsyncB
SelectMany - 直列の結合
AsyncA
Zip - 並列の結合
AsyncB
Result
AsyncA AsyncB
AsyncC
Result
AsyncA().SelectMany(a => AsyncB(a))
.Zip(AsyncC(), (b, c) => new { b, c });
SelectMany + Zip - 合成の例
var asyncQuery = from a in AsyncA()
from b in AsyncB(a)
from c in AsyncC(a, b)
select new { a, b, c };
多重from(SelectMany)
AsyncA AsyncB AsyncC Result
Extra Gems
Unity用の各支援メソッド
// Observable.EveryUpdate
// 毎フレーム毎に値を発行する
Observable.EveryUpdate()
.Subscribe(_ =>
Debug.Log(DateTime.Now.ToString()));
// ObservableMonoBehaviour
public class Hoge : ObservableMonoBehaviour
{
public override void Awake()
{
// 全てのMessageEventがRxで扱う形式で取得できる
var query = this.OnMouseDownAsObservable()
.SelectMany(_ => this.OnMouseDragAsObservable())
.TakeUntil(this.OnMouseUpAsObservable());
}
}
Unity用の各支援メソッド
// 入れ物を用意して
public class LogCallback
{
public string Condition;
public string StackTrace;
public UnityEngine.LogType LogType;
}
public static class LogHelper
{
static Subject<LogCallback> subject;
public static IObservable<LogCallback> LogCallbackAsObservable()
{
if (subject == null)
{
subject = new Subject<LogCallback>();
// callback内でSubjectに発行してあげるように作ることでRxにコンバート可能
UnityEngine.Application.RegisterLogCallback((condition, stackTrace, type) =>
{
subject.OnNext(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = ty
});
}
return subject.AsObservable();
}
}
Unityに多くあるデリゲートによるコールバックを
IObservable<T>に変換するとかなりイケテル!
Unity用の各支援メソッド
// 入れ物を用意して
public class LogCallback
{
public string Condition;
public string StackTrace;
public UnityEngine.LogType LogType;
}
public static class LogHelper
{
static Subject<LogCallback> subject;
public static IObservable<LogCallback> LogCallbackAsObservable()
{
if (subject == null)
{
subject = new Subject<LogCallback>();
// callback内でSubjectに発行してあげるように作ることでRxにコンバート可能
UnityEngine.Application.RegisterLogCallback((condition, stackTrace, type) =>
{
subject.OnNext(new LogCallback { Condition = condition, StackTrace = stackTrace, LogType = ty
});
}
return subject.AsObservable();
}
}
Unityに多くあるデリゲートによるコールバックを
IObservable<T>に変換するとかなりイケテル!
// 各処理が分離して記述可能になる、また合成処理が可能、などのメリットあり
LogHelper.LogCallbackAsObservable()
.Where(x => x.LogType == LogType.Warning)
.Subscribe();
LogHelper.LogCallbackAsObservable()
.Where(x => x.LogType == LogType.Error)
.Subscribe();
センサー is IObservable<T>
IObservable<T>は時間軸上に並ぶシーケンス
詳しくはググッて私の適当な記事読んでください
http://www.atmarkit.co.jp/fdotnet/introrx/index/
Kinect, Leap Motionなどなど
は、イベントシーケンスとみなせてRxと相性が非常にいい!
というわけでUniRxで扱ってみてください
まだメソッド足りないかもなのでIssueに入れてもらうとうれすぃ
Conclusion
まとめ
IEnumeratorを非同期処理に使うのはいけてない
そしてC# 5.0(async/await)は来ない!
そこでUniRx
なぜTaskじゃなくてRxなのか?
Taskはawaitがなければ機能的に弱くて使いやすくはない
マルチスレッド処理やイベント処理など多数の機能も!
Available Now(?)
GitHub - https://github.com/neuecc/UniRx/
AssetStore – http://u3d.as/content/neuecc/uni-rx-reactive-
extensions-for-unity/7tT

More Related Content

What's hot (20)

PDF
The History of Reactive Extensions
Yoshifumi Kawai
 
PDF
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
 
PDF
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
PDF
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
PDF
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
 
PDF
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
PDF
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
PDF
How to Make Own Framework built on OWIN
Yoshifumi Kawai
 
PDF
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
 
PDF
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
 
PDF
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
 
PDF
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
PDF
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
PDF
The History of LINQ
Yoshifumi Kawai
 
PDF
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
 
PDF
基礎からのCode Contracts
Yoshifumi Kawai
 
PPTX
C# 8.0 非同期ストリーム
信之 岩永
 
PPTX
Deep Dive C# 6.0
信之 岩永
 
PDF
An Internal of LINQ to Objects
Yoshifumi Kawai
 
PDF
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
 
The History of Reactive Extensions
Yoshifumi Kawai
 
AWS + Windows(C#)で構築する.NET最先端技術によるハイパフォーマンスウェブアプリケーション開発実践
Yoshifumi Kawai
 
The Usage and Patterns of MagicOnion
Yoshifumi Kawai
 
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai
 
Metaprogramming Universe in C# - 実例に見るILからRoslynまでの活用例
Yoshifumi Kawai
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
Yoshifumi Kawai
 
How to Make Own Framework built on OWIN
Yoshifumi Kawai
 
.NET最先端技術によるハイパフォーマンスウェブアプリケーション
Yoshifumi Kawai
 
Introduction to NotifyPropertyChangedGenerator
Yoshifumi Kawai
 
Multipeer connectivityを使った 動画のリアルタイム端末間共有
Imajin Kawabe
 
ZeroFormatter/MagicOnion - Fastest C# Serializer/gRPC based C# RPC
Yoshifumi Kawai
 
Unityによるリアルタイム通信とMagicOnionによるC#大統一理論の実現
Yoshifumi Kawai
 
The History of LINQ
Yoshifumi Kawai
 
Implements OpenTelemetry Collector in DotNet
Yoshifumi Kawai
 
基礎からのCode Contracts
Yoshifumi Kawai
 
C# 8.0 非同期ストリーム
信之 岩永
 
Deep Dive C# 6.0
信之 岩永
 
An Internal of LINQ to Objects
Yoshifumi Kawai
 
C++でCプリプロセッサを作ったり速くしたりしたお話
Kinuko Yasuda
 

Viewers also liked (20)

PDF
Reactive Programming by UniRx for Asynchronous & Event Processing
Yoshifumi Kawai
 
PPTX
はじめてのUniRx
torisoup
 
PDF
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
Toru Nayuki
 
PDF
Interactive UI with UniRx
Yuto Iwashita
 
PPTX
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
 
PDF
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Unity Technologies Japan K.K.
 
PPTX
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
 
PDF
async/await不要論
bleis tift
 
PPTX
未来のプログラミング技術をUnityで -UniRx-
torisoup
 
PDF
LINQ in Unity
Yoshifumi Kawai
 
PDF
Binary Reading in C#
Yoshifumi Kawai
 
PDF
UniRx - Reactive Extensions for Unity(EN)
Yoshifumi Kawai
 
PDF
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
 
PDF
テスト駆動開発へようこそ
Shuji Watanabe
 
PPTX
Unityでlinqを使おう
Yuuki Takada
 
PDF
Gtmf2011 2011.06.07 slideshare
Hiroki Omae
 
PPTX
良くわかるMeta
daichi horio
 
PDF
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
 
PPTX
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
Unity Technologies Japan K.K.
 
PDF
Reactive extensions入門v0.1
一希 大田
 
Reactive Programming by UniRx for Asynchronous & Event Processing
Yoshifumi Kawai
 
はじめてのUniRx
torisoup
 
「ずいぶんとダサいライティングを使っているのね」〜UniRxを用いた物理ベースライティング制御〜
Toru Nayuki
 
Interactive UI with UniRx
Yuto Iwashita
 
若輩エンジニアから見たUniRxを利用したゲーム開発
Hirohito Morinaga
 
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
Unity Technologies Japan K.K.
 
RuntimeUnitTestToolkit for Unity
Yoshifumi Kawai
 
async/await不要論
bleis tift
 
未来のプログラミング技術をUnityで -UniRx-
torisoup
 
LINQ in Unity
Yoshifumi Kawai
 
Binary Reading in C#
Yoshifumi Kawai
 
UniRx - Reactive Extensions for Unity(EN)
Yoshifumi Kawai
 
Reactive Extensionsで非同期処理を簡単に
Yoshifumi Kawai
 
テスト駆動開発へようこそ
Shuji Watanabe
 
Unityでlinqを使おう
Yuuki Takada
 
Gtmf2011 2011.06.07 slideshare
Hiroki Omae
 
良くわかるMeta
daichi horio
 
【Unite 2017 Tokyo】ScriptableObjectを使ってプログラマーもアーティストも幸せになろう
Unity Technologies Japan K.K.
 
【Unite 2017 Tokyo】Ultimate Bowl 2017 -Timeline機能を活用したリアルタイムデモのメイキング-
Unity Technologies Japan K.K.
 
Reactive extensions入門v0.1
一希 大田
 
Ad

Similar to UniRx - Reactive Extensions for Unity (20)

PPTX
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
 
PDF
UniRx の1歩目
infinite_loop
 
PDF
俺はUniRxで行く
Kakohiroyuki
 
PDF
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
PDF
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
 
PDF
脱UniRx&Croutineから始めるUniTask
Euglenaching
 
PDF
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
PDF
UniRxでPUNを使いやすくする
torisoup
 
PDF
UniRx完全に理解した
torisoup
 
PDF
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
 
PDF
Async design with Unity3D
Kouji Hosoda
 
PDF
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Kohei Kadowaki
 
PDF
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
Ryota Murohoshi
 
PDF
Observableで非同期処理
torisoup
 
PDF
Reactive Extensions v2.0
Yoshifumi Kawai
 
PPTX
UniRxHandsOnVol1
Shoji Oshima
 
PDF
Weeyble async 181009_tukky
shotaueda3
 
PDF
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
 
PPTX
Reactive
Akihiro Ikezoe
 
PDF
UniTask入門
torisoup
 
UniRx勉強会 reactive extensions inside(公開用)
wilfrem
 
UniRx の1歩目
infinite_loop
 
俺はUniRxで行く
Kakohiroyuki
 
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai
 
C#次世代非同期処理概観 - Task vs Reactive Extensions
Yoshifumi Kawai
 
脱UniRx&Croutineから始めるUniTask
Euglenaching
 
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai
 
UniRxでPUNを使いやすくする
torisoup
 
UniRx完全に理解した
torisoup
 
UnityでC#を勉強しはじめた私の主張
Ryota Murohoshi
 
Async design with Unity3D
Kouji Hosoda
 
ゲーム開発初心者の僕がUnity + WebSocketで何か作ってみた
Kohei Kadowaki
 
JXUGのLTだけれどもUnity+iOS+LINQの話をしようと思う!
Ryota Murohoshi
 
Observableで非同期処理
torisoup
 
Reactive Extensions v2.0
Yoshifumi Kawai
 
UniRxHandsOnVol1
Shoji Oshima
 
Weeyble async 181009_tukky
shotaueda3
 
Unityで関数型言語ぽく書く 如法会#1
NAKAOKU Takahiro
 
Reactive
Akihiro Ikezoe
 
UniTask入門
torisoup
 
Ad

More from Yoshifumi Kawai (13)

PDF
A quick tour of the Cysharp OSS
Yoshifumi Kawai
 
PDF
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Yoshifumi Kawai
 
PDF
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
 
PDF
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
PDF
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
PDF
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
 
PDF
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
 
PPTX
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
 
PDF
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Yoshifumi Kawai
 
PDF
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Yoshifumi Kawai
 
PPTX
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
 
PDF
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
 
PDF
History & Practices for UniRx(EN)
Yoshifumi Kawai
 
A quick tour of the Cysharp OSS
Yoshifumi Kawai
 
A Brief History of UniRx/UniTask, IUniTaskSource in Depth
Yoshifumi Kawai
 
Building the Game Server both API and Realtime via c#
Yoshifumi Kawai
 
Unity C#と.NET Core(MagicOnion) C# そしてKotlinによるハーモニー
Yoshifumi Kawai
 
Deep Dive async/await in Unity with UniTask(EN)
Yoshifumi Kawai
 
True Cloud Native Batch Workflow for .NET with MicroBatchFramework
Yoshifumi Kawai
 
Memory Management of C# with Unity Native Collections
Yoshifumi Kawai
 
RuntimeUnitTestToolkit for Unity(English)
Yoshifumi Kawai
 
How to make the Fastest C# Serializer, In the case of ZeroFormatter
Yoshifumi Kawai
 
Photon Server Deep Dive - View from Implmentation of PhotonWire, Multiplayer ...
Yoshifumi Kawai
 
Clash of Oni Online - VR Multiplay Sword Action
Yoshifumi Kawai
 
LINQPad with LINQ to BigQuery - Desktop Client for BigQuery
Yoshifumi Kawai
 
History & Practices for UniRx(EN)
Yoshifumi Kawai
 

Recently uploaded (7)

PDF
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
PDF
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PDF
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
PDF
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
PDF
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
PDF
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
PDF
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 
[Hardening Designers Confernece 2025]ランサムウェアでの見えざるログ・見えるログ
kataware
 
Hyperledger Fabric最新v3.x系での機能強化、変更点にキャッチアップ!
LFDT Tokyo Meetup
 
PostgreSQL18新機能紹介(db tech showcase 2025 発表資料)
NTT DATA Technology & Innovation
 
プライバシ保護のためのインターネットアーキテクチャの進化 (2025-07-11)
Jun Kurihara
 
20250710_Devinで切り拓くDB革命_〜価値創出に集中せよ〜.pdf
Masaki Yamakawa
 
Hyperledger Fabric公式サンプル fabric-samples徹底解説
LFDT Tokyo Meetup
 
人気ブロックチェーン基盤「Hyperledger Fabric」最新版を動かしてみた!
LFDT Tokyo Meetup
 

UniRx - Reactive Extensions for Unity