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だけでも)導入すべき

UniRxでPUNを使いやすくする