SlideShare uma empresa Scribd logo
1 de 20
Baixar para ler offline
UniRxでPUNを
使いやすくする
2015/08/04
@toRisouP
自己紹介
•  とりすーぷ(@toRisouP)
•  本業はWeb系でサーバサイドエンジニア
(最近はScalaを触ってる)
•  趣味でC#/Unity開発をやってます
•  最近はRxにハマってる
PUNの使いにくいところ
PUNの使いにくいところ
•  コールバックが型安全に扱えない
–  typoしてたり引数間違えてても コンパイラが教えてくれない
•  コールバックメソッドがIDEの補完に出てこない
–  マニュアル片手にいちいち調べる必要がありだるい
•  コールバックだらけになって処理が散らかる
–  一連の処理は一箇所に固めて書きたい
–  コルーチンで処理できたらいいのに
これら問題を払拭するライブラリ
PhotonRx
PhotonRx
•  UniRxと合わせて使うライブラリ
–  ObservableTriggerでコールバックを扱える
–  MITライセンス
–  https://github.com/TORISOUP/PhotonRx
UniRx is 何
•  Reactive Extensions for Unity
–  Microsoftが開発していた時魔法ライブラリ 
Reactive ExtensionsのUnity移植版
–  作者はneueccさん(日本人)
詳細は…
•  UniRxの解説だけで余裕で1時間かかるので
以下の資料を見てください
–  http://www.slideshare.net/torisoup/unity-unirx
PhotonRxの使い方
PhotonRxの使い方
•  PhotonRxをusingに加えてxxxAsObservableを
SubscribeすればOK
PhotonRxを使うメリット
型安全 & IDEの補完が効く
awaitっぽいこともできる
•  コルーチン上でイベント通知が来るまで待機する
•  非同期処理+手続き的な処理が書きやすくなる
←コルーチン
awaitっぽいこともできる
•  コルーチン上でイベント通知が来るまで待機できる
•  非同期処理+手続き的な処理が書きやすくなる
イベント待受の下準備
awaitっぽいこともできる
•  コルーチン上でイベント通知が来るまで待機する
•  非同期処理+手続き的な処理が書きやすくなる
Photon接続処理開始
awaitっぽいこともできる
•  コルーチン上でイベント通知が来るまで待機する
•  非同期処理+手続き的な処理が書きやすくなる
ログイン成否通知をコルーチン上で待つ
awaitっぽいこともできる
•  コルーチン上でイベント通知が来るまで待機する
•  非同期処理+手続き的な処理が書きやすくなる
成功/失敗時の処理
UniRx & PhotonRxで全て解決!
•  コールバックが型安全に扱えない
–  typoしてたり引数間違えてても コンパイラが教えてくれない
•  コールバックメソッドがIDEの補完に出てこない
–  マニュアル片手にいちいち調べる必要がありだるい
•  コールバックだらけになって処理が散らかる
–  一連の処理は一箇所に固めて書きたい
–  コルーチンで処理できたらいいのに
まとめ
•  PhotonRxを使うとPUNのダメなところが改善される
•  UniRxの学習コストがそもそも高いので導入は要件等
•  とは言えどUniRxは使いこなせれば相当便利なので
学習コストを払って(UniRxだけでも)導入すべき

Mais conteúdo relacionado

Mais procurados

Mais procurados (8)

VTC on Unity の 進捗について
VTC on Unity の 進捗についてVTC on Unity の 進捗について
VTC on Unity の 進捗について
 
イマドキのUbuntu活用法
イマドキのUbuntu活用法イマドキのUbuntu活用法
イマドキのUbuntu活用法
 
オープンソースの来し方行く末@OSC 2016 Okinawa
オープンソースの来し方行く末@OSC 2016 Okinawaオープンソースの来し方行く末@OSC 2016 Okinawa
オープンソースの来し方行く末@OSC 2016 Okinawa
 
「予測と体感の不一致」説によるVR酔いの説明と対策方法
「予測と体感の不一致」説によるVR酔いの説明と対策方法「予測と体感の不一致」説によるVR酔いの説明と対策方法
「予測と体感の不一致」説によるVR酔いの説明と対策方法
 
オープンソースの来し方行く末@OSC 2016 Hokkaido
オープンソースの来し方行く末@OSC 2016 Hokkaidoオープンソースの来し方行く末@OSC 2016 Hokkaido
オープンソースの来し方行く末@OSC 2016 Hokkaido
 
オープンソースの来し方行く末@OSC 2016 Nagaoka
オープンソースの来し方行く末@OSC 2016 Nagaokaオープンソースの来し方行く末@OSC 2016 Nagaoka
オープンソースの来し方行く末@OSC 2016 Nagaoka
 
VR道場 Unity × Oculus Touch ~VRで手を動かしてみよう~
VR道場 Unity × Oculus Touch ~VRで手を動かしてみよう~VR道場 Unity × Oculus Touch ~VRで手を動かしてみよう~
VR道場 Unity × Oculus Touch ~VRで手を動かしてみよう~
 
天体を静止画として 長時間撮影できる装置 の紹介
天体を静止画として長時間撮影できる装置 の紹介天体を静止画として長時間撮影できる装置 の紹介
天体を静止画として 長時間撮影できる装置 の紹介
 

Destaque

Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1
一希 大田
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
Yoshifumi Kawai
 

Destaque (8)

なぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuriなぜリアクティブは重要か #ScalaMatsuri
なぜリアクティブは重要か #ScalaMatsuri
 
Reactive extensions入門v0.1
Reactive extensions入門v0.1Reactive extensions入門v0.1
Reactive extensions入門v0.1
 
未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-未来のプログラミング技術をUnityで -UniRx-
未来のプログラミング技術をUnityで -UniRx-
 
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
【Unite 2017 Tokyo】「黒騎士と白の魔王」にみるC#で統一したサーバー/クライアント開発と現実的なUniRx使いこなし術
 
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
ZeroFormatterに見るC#で最速のシリアライザを作成する100億の方法
 
NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#NextGen Server/Client Architecture - gRPC + Unity + C#
NextGen Server/Client Architecture - gRPC + Unity + C#
 
RuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for UnityRuntimeUnitTestToolkit for Unity
RuntimeUnitTestToolkit for Unity
 
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
「黒騎士と白の魔王」gRPCによるHTTP/2 - API, Streamingの実践
 

Semelhante a UniRxでPUNを使いやすくする

Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
Tetsuya Morimoto
 

Semelhante a UniRxでPUNを使いやすくする (11)

今日から始めよう UniRx
今日から始めよう UniRx今日から始めよう UniRx
今日から始めよう UniRx
 
of_protocol_tremaday5
of_protocol_tremaday5of_protocol_tremaday5
of_protocol_tremaday5
 
チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾チケット管理システム大決戦第二弾
チケット管理システム大決戦第二弾
 
Python3 プログラミング勉強会
Python3 プログラミング勉強会Python3 プログラミング勉強会
Python3 プログラミング勉強会
 
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
etckeeperをopenSUSEの公式リポジトリに入れたいぞ! Ver.2
 
Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境Portacle : Common Lispのオールインワン開発環境
Portacle : Common Lispのオールインワン開発環境
 
mruby for embedded systems
mruby for embedded systemsmruby for embedded systems
mruby for embedded systems
 
非同期系統の基礎
非同期系統の基礎非同期系統の基礎
非同期系統の基礎
 
High performance python computing for data science
High performance python computing for data scienceHigh performance python computing for data science
High performance python computing for data science
 
できる!並列・並行プログラミング
できる!並列・並行プログラミングできる!並列・並行プログラミング
できる!並列・並行プログラミング
 
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
ビビッド・パワポ・オペレーションβ ~エンジニアのための、ゆるふわパワポ術~(qpstudy 2013.01 LT)
 

Mais de torisoup

Mais de torisoup (19)

Doozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_ltDoozy UI 使おうぜ! #unity_lt
Doozy UI 使おうぜ! #unity_lt
 
MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~MagicOnion~C#でゲームサーバを開発しよう~
MagicOnion~C#でゲームサーバを開発しよう~
 
MagicOnion入門
MagicOnion入門MagicOnion入門
MagicOnion入門
 
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunityUnityで作ったゲームをDLカードで配布してみた話 #roppongiunity
Unityで作ったゲームをDLカードで配布してみた話 #roppongiunity
 
ARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しようARでVRアバターを表示するシステムを構築しよう
ARでVRアバターを表示するシステムを構築しよう
 
インタフェース完全に理解した
インタフェース完全に理解したインタフェース完全に理解した
インタフェース完全に理解した
 
【Unity】 Behavior TreeでAIを作る
 【Unity】 Behavior TreeでAIを作る 【Unity】 Behavior TreeでAIを作る
【Unity】 Behavior TreeでAIを作る
 
Observableで非同期処理
Observableで非同期処理Observableで非同期処理
Observableで非同期処理
 
ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx ObserverパターンからはじめるUniRx
ObserverパターンからはじめるUniRx
 
Unityでオニオンアーキテクチャ
UnityでオニオンアーキテクチャUnityでオニオンアーキテクチャ
Unityでオニオンアーキテクチャ
 
Photon Cloud ことはじめ
Photon Cloud ことはじめPhoton Cloud ことはじめ
Photon Cloud ことはじめ
 
アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」アバター生放送支援アプリ「アバれぽ」
アバター生放送支援アプリ「アバれぽ」
 
コールバックと戦う話
コールバックと戦う話コールバックと戦う話
コールバックと戦う話
 
UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話UnityとNCMBでユーザ管理を実装してみた話
UnityとNCMBでユーザ管理を実装してみた話
 
Task vs Observable
Task vs ObservableTask vs Observable
Task vs Observable
 
Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話Unityでオンラインゲーム作った話
Unityでオンラインゲーム作った話
 
Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介Unity開発で使える設計の話+Zenjectの紹介
Unity開発で使える設計の話+Zenjectの紹介
 
みくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウみくみくまうすについて&Unity で使えるコーディングノウハウ
みくみくまうすについて&Unity で使えるコーディングノウハウ
 
Unity講習会(初級)
Unity講習会(初級)Unity講習会(初級)
Unity講習会(初級)
 

UniRxでPUNを使いやすくする