Enviar pesquisa
Carregar
UniRxHandsOnVol1
•
Transferir como PPTX, PDF
•
4 gostaram
•
2,893 visualizações
S
Shoji Oshima
Seguir
UniRxHandsOnVol1の資料です
Leia menos
Leia mais
Engenharia
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 56
Baixar agora
Recomendados
Map
Map
kikairoya
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
「いい検索」を考える
「いい検索」を考える
Shuryo Uchida
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
Yahoo!デベロッパーネットワーク
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
toshihiro ichitani
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
Recomendados
Map
Map
kikairoya
心理的安全性を 0から80ぐらいに上げた話
心理的安全性を 0から80ぐらいに上げた話
Yusuke Hisatsu
「いい検索」を考える
「いい検索」を考える
Shuryo Uchida
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
「YDNの広告のCTRをオンライン学習で予測してみた」#yjdsw4
Yahoo!デベロッパーネットワーク
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
スマホマーケットの概要と、マーケティングの失敗例と改善 (アナリティクス アソシエーション 特別セミナー)
Tokoroten Nakayama
アジャイル開発はWhyから始まる
アジャイル開発はWhyから始まる
toshihiro ichitani
WebSocketのキホン
WebSocketのキホン
You_Kinjoh
組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門
Norishige Fukushima
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
WebSig24/7
高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)
Takahiro Yamaguchi
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなし
Yasunori Nihei
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)
Takahiro Yamaguchi
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
Startup Science - Pivotとは何か?
Startup Science - Pivotとは何か?
Masa Tadokoro
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
toshihiro ichitani
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
Developers Summit
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
LEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartup
Itsuki Kuroda
解説!30分で分かるLEAN ANALYTICS
解説!30分で分かるLEAN ANALYTICS
しくみ製作所
UniRx の1歩目
UniRx の1歩目
infinite_loop
高解像度スタートアップガイド Part3
高解像度スタートアップガイド Part3
Takahiro Yamaguchi
Extreme Management Center を活用したネットワークの見える化
Extreme Management Center を活用したネットワークの見える化
エクストリーム ネットワークス / Extreme Networks Japan
HoloLens参考書読書会 vol9
HoloLens参考書読書会 vol9
Shoji Oshima
Mais conteúdo relacionado
Mais procurados
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
WebSig24/7
高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)
Takahiro Yamaguchi
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなし
Yasunori Nihei
Riderはいいぞ!
Riderはいいぞ!
UnityTechnologiesJapan002
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)
Takahiro Yamaguchi
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Tokoroten Nakayama
Startup Science - Pivotとは何か?
Startup Science - Pivotとは何か?
Masa Tadokoro
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
toshihiro ichitani
インタフェース完全に理解した
インタフェース完全に理解した
torisoup
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
Unity Technologies Japan K.K.
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
dcubeio
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
Developers Summit
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
Masahito Zembutsu
LEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartup
Itsuki Kuroda
解説!30分で分かるLEAN ANALYTICS
解説!30分で分かるLEAN ANALYTICS
しくみ製作所
UniRx の1歩目
UniRx の1歩目
infinite_loop
高解像度スタートアップガイド Part3
高解像度スタートアップガイド Part3
Takahiro Yamaguchi
Mais procurados
(20)
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
上司が信用できない会社の内部統制~第32回WebSig会議「便利さと、怖さと、心強さと〜戦う会社のための社内セキュリティ 2013年のスタンダードとは?!...
高解像度スタートアップガイド Part2(Part3へ続く)
高解像度スタートアップガイド Part2(Part3へ続く)
エンジニアも知っておきたいAI倫理のはなし
エンジニアも知っておきたいAI倫理のはなし
Riderはいいぞ!
Riderはいいぞ!
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
高解像度スタートアップガイド Part1(Part2/3へ続く)
高解像度スタートアップガイド Part1(Part2/3へ続く)
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
チャットコミュニケーションの問題と心理的安全性の課題 #EOF2019
Startup Science - Pivotとは何か?
Startup Science - Pivotとは何か?
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
多様な働き⽅のチームでどうやって アジャイルにやるの?(雁行陣開発)
インタフェース完全に理解した
インタフェース完全に理解した
Unityでパフォーマンスの良いUIを作る為のTips
Unityでパフォーマンスの良いUIを作る為のTips
こんなに使える!今どきのAPIドキュメンテーションツール
こんなに使える!今どきのAPIドキュメンテーションツール
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
【B-4】オープンソース開発で、フリー静的解析ツールを使ってみる
IT系エンジニアのためのプレゼンテーション入門
IT系エンジニアのためのプレゼンテーション入門
LEANSTARTUPアンチパターン #devlove #leanstartup
LEANSTARTUPアンチパターン #devlove #leanstartup
解説!30分で分かるLEAN ANALYTICS
解説!30分で分かるLEAN ANALYTICS
UniRx の1歩目
UniRx の1歩目
高解像度スタートアップガイド Part3
高解像度スタートアップガイド Part3
Semelhante a UniRxHandsOnVol1
Extreme Management Center を活用したネットワークの見える化
Extreme Management Center を活用したネットワークの見える化
エクストリーム ネットワークス / Extreme Networks Japan
HoloLens参考書読書会 vol9
HoloLens参考書読書会 vol9
Shoji Oshima
RT ミドルウェアの IoT プラットフォームへの適用
RT ミドルウェアの IoT プラットフォームへの適用
Device WebAPI Consortium
IoT共創ラボ発表資料_TIS_20180327
IoT共創ラボ発表資料_TIS_20180327
Shingo Mori
ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)
aitc_jp
xRLT02_Holoで大量にモデルを出してみる
xRLT02_Holoで大量にモデルを出してみる
Shoji Oshima
「未知の脅威」を検出するために -Securitydays2015 imatrixセミナー@KITTE-
「未知の脅威」を検出するために -Securitydays2015 imatrixセミナー@KITTE-
imatrix_share
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Seongduk Cheon
2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析
aitc_jp
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
Daiyu Hatakeyama
国内外AIコンペティションからみるAI技術者のキャリアパスの潮流およびAIコンペサイトSIGNATEにおけるAWS活用事例
国内外AIコンペティションからみるAI技術者のキャリアパスの潮流およびAIコンペサイトSIGNATEにおけるAWS活用事例
秀 齊藤
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
Nobuyuki Matsui
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoT
Nobuyuki Matsui
ソフトウェアベンチャーのサポートエンジニア
ソフトウェアベンチャーのサポートエンジニア
Hideto Masuoka
Enterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashi
Tomohiro Igarashi
20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか
Shingo Mori
20180130 設計イベント
20180130 設計イベント
Atsushi Takayasu
リースまるみえくん
リースまるみえくん
CREATIVEHOPE / C-LAB
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo!デベロッパーネットワーク
Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629
Shigeki Morizane
Semelhante a UniRxHandsOnVol1
(20)
Extreme Management Center を活用したネットワークの見える化
Extreme Management Center を活用したネットワークの見える化
HoloLens参考書読書会 vol9
HoloLens参考書読書会 vol9
RT ミドルウェアの IoT プラットフォームへの適用
RT ミドルウェアの IoT プラットフォームへの適用
IoT共創ラボ発表資料_TIS_20180327
IoT共創ラボ発表資料_TIS_20180327
ソフトウェアジャパン2018 ITフォーラムセッション(3)
ソフトウェアジャパン2018 ITフォーラムセッション(3)
xRLT02_Holoで大量にモデルを出してみる
xRLT02_Holoで大量にモデルを出してみる
「未知の脅威」を検出するために -Securitydays2015 imatrixセミナー@KITTE-
「未知の脅威」を検出するために -Securitydays2015 imatrixセミナー@KITTE-
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
Amazon SageMakerを使った機械学習モデル管理運用システム構築事例
2018年12月15日 AITC女子会 会話の記録と分析
2018年12月15日 AITC女子会 会話の記録と分析
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
AI for Media 2018 Update セミナー: 株式会社ユニゾンシステム: スピーチ AI を活用した文字起こしプラットホームの活用
国内外AIコンペティションからみるAI技術者のキャリアパスの潮流およびAIコンペサイトSIGNATEにおけるAWS活用事例
国内外AIコンペティションからみるAI技術者のキャリアパスの潮流およびAIコンペサイトSIGNATEにおけるAWS活用事例
Jazug-8th: Azure AKS & FIWARE & Robot
Jazug-8th: Azure AKS & FIWARE & Robot
JTF2018 FIWARE x robot x IoT
JTF2018 FIWARE x robot x IoT
ソフトウェアベンチャーのサポートエンジニア
ソフトウェアベンチャーのサポートエンジニア
Enterprise hacknight 1-igarashi
Enterprise hacknight 1-igarashi
20190313_SDGsや社会課題にxRはどう活かせるか
20190313_SDGsや社会課題にxRはどう活かせるか
20180130 設計イベント
20180130 設計イベント
リースまるみえくん
リースまるみえくん
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)セッション①
Netadashi Meetup #6 20170629
Netadashi Meetup #6 20170629
UniRxHandsOnVol1
1.
Copyright © 2018
TIS Inc. All rights reserved. 戦略技術センター 大島昇時 緩く触って覚える ゼロからしっかり覚える
2.
Copyright © 2018
TIS Inc. All rights reserved. 自己紹介 名前 : 大島昇時 ハンドル : さんすうP @Sansuusetto 所属 : TIS株式会社 戦略技術センター 1
3.
Copyright © 2018
TIS Inc. All rights reserved. ・三菱のグループ会社で、組み込み系エンジニア約4年 ・映像系の中小で、マネージャ、映像制作、VRゲーム制作約3年 ・TISに2018/02入社。xRの研究開発を行う 2 経歴
4.
Copyright © 2018
TIS Inc. All rights reserved. Agenda 導入編 ・UniRxとは ・UniRxで出来ること 基本編 ・Subject, OnNext, Subscribe ・Lesson_01 ・ストリーム ・オペレータ ・Lesson_02 応用編 ・Lesson_03 ・Lesson_04 3
5.
Copyright © 2018
TIS Inc. All rights reserved. 導入編 4
6.
Copyright © 2018
TIS Inc. All rights reserved. はじめに UniRxは非常に便利なライブラリです。 ただし、銀の弾丸的な効果を期待しないでください。 突然設計がきれいになったり、生産性が上がったりは しません。 UniRxを使いこなし、有効なパターンを学ぶことで、きれい な設計で高い生産性を発揮することが出来るようになります。 とても便利なライブラリなので、まずはUniRxで出来ること を知り、興味を持って触ってみましょう! 5
7.
Copyright © 2018
TIS Inc. All rights reserved. ハンズオン資料 イベントページ https://techcircle.connpass.com/event/96518/ パワポ資料 HandsOnのProject https://github.com/sansuu/UniRxHandsOnVol1 6
8.
Copyright © 2018
TIS Inc. All rights reserved. UniRxとは neueccさんが作成された(現在もアップデート中)Unity向けの ReactiveExtensions (*1) ライブラリ。 UnityAssetStoreにて、無料でダウンロード可能。 *1:Rx(ReactiveExtensions) C#向けの非同期処理ライブラリ。 Rx ≒ event 機能的にはeventの上位互換。 7
9.
Copyright © 2018
TIS Inc. All rights reserved. UniRxで出来ること 下記は、UniRxでできることのほんの一部です。 ・メソッドチェーンでイベントに対する処理を美しく書ける ・PureClass(*1)でUpdate処理を実行できる ・PureClassでCoroutineを実行できる ・Coroutine使わなくてもTimer処理ができる ・変数を触っている感覚でイベントの配信が実装できる ・uGUIのイベント処理が非常に簡潔に書ける ・イベントの購読側で、イベントに対するフィルタをかけるのが 得意(Where,Skip,Repeat,Select...) ・複数のイベントを合成したり、一つのイベントを 分岐させたりできる *1:MonoBehaviourを継承していないClass 8
10.
Copyright © 2018
TIS Inc. All rights reserved. UniRxでコードが簡潔に書ける例 9 <お題> アプリ立ち上げた5秒後以降、毎秒ログを出力する。 15秒経過後はログ出力を停止する。
11.
Copyright © 2018
TIS Inc. All rights reserved. UniRxを使わない記述例 10
12.
Copyright © 2018
TIS Inc. All rights reserved. UniRxでの記述例 11
13.
Copyright © 2018
TIS Inc. All rights reserved. 12 どうでしょうか? 無駄なメソッドが減って、コードが簡潔になりましたね。 まずは、なんかUniRx便利そうだなーというのを 感じていただけると嬉しいです。
14.
Copyright © 2018
TIS Inc. All rights reserved. 基本編 ― Subject, OnNext, Subscribe ― 13
15.
Copyright © 2018
TIS Inc. All rights reserved. イベントの基本 UniRxはイベントの拡張です。 以下の図は基本的なイベントの概念なので覚えておきましょう 14 Subject Subscribe 観察者A (Observer) 観察者B 観察者C Subject Notify 観察者A (Observer) 観察者B 観察者C
16.
Copyright © 2018
TIS Inc. All rights reserved. 単語を覚えよう 15 単語 直訳 Subject 主題 Observable 観察可能 Observer 観察者 Subscribe 購読する UniRxを覚える上で、避けては通れない頻出単語がありま す。とりあえずこれだけは覚えておきましょう。
17.
Copyright © 2018
TIS Inc. All rights reserved. eventとUniRx 16 結果は同じ 基本的な書き方は、大きく変わらない event UniRx
18.
Copyright © 2018
TIS Inc. All rights reserved. UniRxの基本構文(SubscribeとOnNext) 17 Subjectの定義 Subjectの購読+受信時の振る舞い定義 Observerにメッセージを流す
19.
Copyright © 2018
TIS Inc. All rights reserved. Subjectってなに? 18 IObserverとIObservableを実装したClass。 SubjectにOnNext等で値を渡すことで、 Subjectの購読者(Observer)にメッセージを通知する。 OnCompleted OnError OnNext Subscribe Subject IObserver IObservable 図で表すとこう
20.
Copyright © 2018
TIS Inc. All rights reserved. Subjectってなに? 19 Subject Subscribe 観察者A (Observer) 観察者B 観察者C Subject OnNext OnError OnCompleted 観察者A (Observer) 観察者B 観察者C 前述の図で表すと以下のようになる。
21.
Copyright © 2018
TIS Inc. All rights reserved. とりあえず自分で作ってみよう 20 SubjectがUniRxの基本と説明しましたが、深堀すると実は 結構難しい概念です。(Hot,Cold,スケジューラ等) 今回はその辺りすっ飛ばして、とりあえず触ってみましょう。
22.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_01 21 以下をSubjectとObserverの2つのClassに分解する。 「Assets/UniRxHandsOn/Projects/02_Lesson/01_Lesson_01」 以下にScene及びClassが格納されているので、それを利用すること
23.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_01― 解答例 ― 22
24.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_01― 解説 ― 23 Subjectそのものを外部に公開した場合、 外部からSubjectそのものを触れてしまう ので、ちゃんとカプセル化しましょう
25.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_01― Betterな解答例 ― 24 Point Subjectは外部に公開せず、 IObservableのInterfaceを公開する
26.
Copyright © 2018
TIS Inc. All rights reserved. OnCompletedとOnError 25 OnCompleted OnError OnNext Subscribe Subject IObserver IObservable IF 役割 OnCompleted ストリームの停止及び完了通知 OnError ストリームの停止及びエラー通知 OnNext メッセージの変化通知
27.
Copyright © 2018
TIS Inc. All rights reserved. OnCompletedの挙動 26 OnCompleted, OnErrorを通知した場合、 以降のOnNextは通知されない
28.
Copyright © 2018
TIS Inc. All rights reserved. OnCompleted, OnErrorの振る舞いを定義す る 27
29.
Copyright © 2018
TIS Inc. All rights reserved. SubscribeIFの定義 28
30.
Copyright © 2018
TIS Inc. All rights reserved. 基本編 ― ストリーム ― 29
31.
Copyright © 2018
TIS Inc. All rights reserved. ストリームって? 30 Rxで扱うメッセージの流れのこと。 メッセージは後述のオペレータによって加工され、 Subscribeした際に登録した処理を行う。 メッセージ Subject 加工 処理 上記メッセージの流れをストリームという
32.
Copyright © 2018
TIS Inc. All rights reserved. ストリームって?(コードで) 31 ①メッセージをストリームに流す ②Subscribe時に登録した処理を行う
33.
Copyright © 2018
TIS Inc. All rights reserved. ストリームソース 32 メッセージを発行するソースとなる物をストリームソースと 呼ぶ。 Rxではストリームソースを用意しないと何も始まりません。 以下はUniRxにおけるストリームソースの一部です。 ・Subject ・ReactiveProperty ・UniRx.Triggers~
34.
Copyright © 2018
TIS Inc. All rights reserved. ストリームソース ―ReactiveProperty― 33 変数にSubjectの機能を追加したもの。 値の変更を通知してくれる変数みたいなもの。 非常に使い勝手が良いので、覚えておきましょう。
35.
Copyright © 2018
TIS Inc. All rights reserved. ストリームソース ―ReactiveProperty― 34 ReactivePropertyのValueを変更した時点で ストリームにメッセージが流れる Subject→ReactiveProperty IObservable→IReadOnlyReactiveProperty に変更しただけ 購読側は基本的に変わらない
36.
Copyright © 2018
TIS Inc. All rights reserved. ストリームソース ―ReactiveProperty― 35 先ほどのコードを実行すると、実行結果は下記のようになり ます。 ReactivePropertyは、Subscribe時に必ず値をPushする 設計となっているため注意が必要です。 これを無視したい場合、後述のオペレータが活躍します
37.
Copyright © 2018
TIS Inc. All rights reserved. 基本編 ― オペレータ ― 36
38.
Copyright © 2018
TIS Inc. All rights reserved. オペレータって? 37 ストリームに流れるメッセージを加工するための機能。 UniRxにはオペレータが大量に用意されています。 以下はほんの一部。 オペレータ できること Where 条件を満たすメッセージを通す Select メッセージを変換する Skip メッセージを指定数スキップする Take ストリームを先頭から指定した件数までで切る
39.
Copyright © 2018
TIS Inc. All rights reserved. オペレータとメソッドチェーン 38 オペレータは下記の様にメソッドチェーンで繋ぐ事ができま す。 それは、下記の様にすべてのオペレータが、IObservable の拡張メソッドとして定義され、IObservableを返す設計 となっているからです。 上記の記法により、Where<T>が、 IObservableの拡張メソッドとして定義される
40.
Copyright © 2018
TIS Inc. All rights reserved. IObservableのIF 39 つまり、IObservableのIFはSubscribeだけでなく 実体としては大量のオペレータIFを定義しているということ OnCompleted OnError OnNext Subscribe Where Select Skip Take ・ ・ ・ Subject IObserver IObservable OnCompleted OnError OnNext Subscribe Subject IObserver IObservable
41.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_02 40 以下のストリームから、偶数(0を除く)の2乗をログ出力す るObserverをオペレータを用いて作成する 「Assets/UniRxHandsOn/Projects/02_Lesson/02_Lesson_02」 以下にScene及びClassが格納されているので、それを利用すること 実行結果 (以降も続く)
42.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_02― 解答例 ― 41
43.
Copyright © 2018
TIS Inc. All rights reserved. 休憩 42
44.
Copyright © 2018
TIS Inc. All rights reserved. 応用編 43
45.
Copyright © 2018
TIS Inc. All rights reserved. uGUIイベントをストリームに変換する 44 下記の様にして、uGUIイベントをストリームに変換するこ とができる。 IObservable同様にUnityEventの拡張メソッドとして定義されている onClick(UnityEvent)をストリームに変換
46.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_03 45 uGUIイベントをストリームに変換し、下記の機能を作成す る。 Sliderの値を表示する DropDownListで選んだColorを 表示する タイマーログ停止 タイマーログ開始 「Assets/UniRxHandsOn/Projects/02_Lesson/03_Lesson_03」 以下にScene及びClassが格納されているので、それを利用すること
47.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_03 ― 解答例 ― 46 各UnityEventをストリームに変換 してuGUIに対する処理を行う
48.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_03 ― 補足 ― 47 1秒ごとにストリームに メッセージを流すストリームソース Timer停止のため、 ストリームを解放する
49.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_04 48 UniRxを利用して、プレイヤーのコントロール機能を作成す る。 プレイヤーコントロールの仕様 ・アローキーで前後左右移動する(走る) ・スペースキーでジャンプする ・「C」キーでしゃがむ(しゃがみ歩き可能) ・LeftShiftキーで歩く 「Assets/UniRxHandsOn/Projects/02_Lesson/04_Lesson_04」 以下にScene及びClassが格納されているので、それを利用すること
50.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_04 49 参考動画
51.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_04 ― 前提 ― 50 本演習では、StandardAssetsのClassをUniRx化したClass にて、キャラクターの移動処理(Model)を行う。 移動量及び、状態を受け取 るIFとなっている 毎フレーム移動量及び、状態を投げる仕様のため、 Inputの状態を常に最新に更新する必要がある
52.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_04 ― 解答例 ― 51
53.
Copyright © 2018
TIS Inc. All rights reserved. Lesson_04 ― 解説 ― 52 UpdateAsObservableは毎フレーム ストリームにメッセージを流す ストリームソース Select内でInputを取得することで true/false何れの場合でもストリー ムにメッセージを流せる
54.
Copyright © 2018
TIS Inc. All rights reserved. まとめ 53 ・ストリームに流れるメッセージの種類は下記の3種類 OnNext, OnError, OnCompleted ・ストリームにオペレータを挟むことで、メッセージを 加工できる ・IObservableはIFの拡張により、メソッドチェーンで 繋げることができる ・上記をうまく使うことで、どの様な条件で何をしたいか 明確なコードとなり、可読性が向上する
55.
Copyright © 2018
TIS Inc. All rights reserved. 参考資料 54 敬称略 • neue cc blog(neue cc) • UniRx入門シリーズ 目次(torisouP)
56.
THANK YOU
Baixar agora