SlideShare a Scribd company logo
Submit Search
Upload
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
Report
Share
gree_tech
gree_tech
Follow
•
0 likes
•
626 views
1
of
55
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
•
0 likes
•
626 views
Report
Share
Download Now
Download to read offline
Engineering
GREE Tech Conference 2021 で発表された資料です。 https://techcon.gree.jp/2021/session/Session-8
Read more
gree_tech
gree_tech
Follow
Recommended
俺的 Ignite update 萌えポイント portal&arm, compute, network - by
俺的 Ignite update 萌えポイント portal&arm, compute, network -
Yui Ashikaga
1K views
•
47 slides
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~ by
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
gree_tech
2.3K views
•
21 slides
SparkやBigQueryなどを用いたモバイルゲーム分析環境 by
SparkやBigQueryなどを用いたモバイルゲーム分析環境
yuichi_komatsu
5.3K views
•
58 slides
コンテナ時代にインフラエンジニアは何をするのか by
コンテナ時代にインフラエンジニアは何をするのか
gree_tech
2.2K views
•
32 slides
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT① by
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT①
Yahoo!デベロッパーネットワーク
2.5K views
•
50 slides
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介 by
[SAPPORO CEDEC] サービスの効果を高めるグリー内製ツールの技術と紹介
gree_tech
4.7K views
•
72 slides
More Related Content
What's hot
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1 by
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Yasuaki Matsuda
1.3K views
•
82 slides
データ活用を効率化するHadoop WebUIと権限管理改善事例 by
データ活用を効率化するHadoop WebUIと権限管理改善事例
Masahiro Kiura
2.5K views
•
28 slides
Azure Contract, Support, License ちょっと Dive by
Azure Contract, Support, License ちょっと Dive
Yui Ashikaga
1.2K views
•
49 slides
俺とHashiCorp by
俺とHashiCorp
Toru Makabe
1.8K views
•
31 slides
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減 by
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
gree_tech
739 views
•
18 slides
de:code 2019 Cloud トラック 総まとめ! by
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
1K views
•
85 slides
What's hot
(20)
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1 by Yasuaki Matsuda
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Yasuaki Matsuda
•
1.3K views
データ活用を効率化するHadoop WebUIと権限管理改善事例 by Masahiro Kiura
データ活用を効率化するHadoop WebUIと権限管理改善事例
Masahiro Kiura
•
2.5K views
Azure Contract, Support, License ちょっと Dive by Yui Ashikaga
Azure Contract, Support, License ちょっと Dive
Yui Ashikaga
•
1.2K views
俺とHashiCorp by Toru Makabe
俺とHashiCorp
Toru Makabe
•
1.8K views
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減 by gree_tech
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
gree_tech
•
739 views
de:code 2019 Cloud トラック 総まとめ! by Minoru Naito
de:code 2019 Cloud トラック 総まとめ!
Minoru Naito
•
1K views
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々 by gree_tech
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
gree_tech
•
4.1K views
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン by gree_tech
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
gree_tech
•
2.7K views
Hadoop Operations #cwt2013 by Cloudera Japan
Hadoop Operations #cwt2013
Cloudera Japan
•
5.9K views
ダイ・ハード in the Kubernetes world by Toru Makabe
ダイ・ハード in the Kubernetes world
Toru Makabe
•
9.7K views
クラウドネイティブガバナンスの実現 by Minoru Naito
クラウドネイティブガバナンスの実現
Minoru Naito
•
574 views
Virtual Machine Scale Sets 概要 by Yui Ashikaga
Virtual Machine Scale Sets 概要
Yui Ashikaga
•
2.4K views
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③ by Yahoo!デベロッパーネットワーク
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
Yahoo!デベロッパーネットワーク
•
2.8K views
Terraform Bootcamp - Azure Infrastructure as Code隊 by Toru Makabe
Terraform Bootcamp - Azure Infrastructure as Code隊
Toru Makabe
•
21.7K views
de:code 2019 Cloud トラック 総まとめ! 完全版 by Minoru Naito
de:code 2019 Cloud トラック 総まとめ! 完全版
Minoru Naito
•
1.6K views
認証/認可が実現する安全で高速分析可能な分析処理基盤 by Masahiro Kiura
認証/認可が実現する安全で高速分析可能な分析処理基盤
Masahiro Kiura
•
7.3K views
RPKIやってみませんか? by gree_tech
RPKIやってみませんか?
gree_tech
•
1.4K views
インフラ野郎AzureチームProX by Toru Makabe
インフラ野郎AzureチームProX
Toru Makabe
•
2K views
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~ by Yoshimasa Katakura
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Yoshimasa Katakura
•
1.3K views
20161210 jawsai by ManaMurakami1
20161210 jawsai
ManaMurakami1
•
589 views
Similar to SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用 by
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale Japan株式会社
825 views
•
68 slides
深層学習ライブラリのプログラミングモデル by
深層学習ライブラリのプログラミングモデル
Yuta Kashino
99.4K views
•
31 slides
Python languageupdate (2004) by
Python languageupdate (2004)
泰 増田
491 views
•
16 slides
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019] by
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
DeNA
2.3K views
•
72 slides
さくらのナレッジの運営から見えるもの by
さくらのナレッジの運営から見えるもの
法林浩之
754 views
•
53 slides
Firefox と Mozilla のテクノロジー by
Firefox と Mozilla のテクノロジー
dynamis
577 views
•
75 slides
Similar to SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
(20)
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用 by Rescale Japan株式会社
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale Japan株式会社
•
825 views
深層学習ライブラリのプログラミングモデル by Yuta Kashino
深層学習ライブラリのプログラミングモデル
Yuta Kashino
•
99.4K views
Python languageupdate (2004) by 泰 増田
Python languageupdate (2004)
泰 増田
•
491 views
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019] by DeNA
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
DeNA
•
2.3K views
さくらのナレッジの運営から見えるもの by 法林浩之
さくらのナレッジの運営から見えるもの
法林浩之
•
754 views
Firefox と Mozilla のテクノロジー by dynamis
Firefox と Mozilla のテクノロジー
dynamis
•
577 views
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~ by Daisuke Masubuchi
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
Daisuke Masubuchi
•
437 views
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~ by 日本マイクロソフト株式会社
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
日本マイクロソフト株式会社
•
575 views
Windows 10 RS4 Insider Preview by Tomokazu Kizawa
Windows 10 RS4 Insider Preview
Tomokazu Kizawa
•
131 views
Spring tools4 by Takuya Iwatsuka
Spring tools4
Takuya Iwatsuka
•
10.7K views
Hadoop conference Japan 2011 by Takahiko Ito
Hadoop conference Japan 2011
Takahiko Ito
•
1.9K views
Firefox 3.1 In Depth (?) by dynamis
Firefox 3.1 In Depth (?)
dynamis
•
436 views
Firefox で快適 WordPress 生活 by dynamis
Firefox で快適 WordPress 生活
dynamis
•
624 views
ISUCONの勝ち方 YAPC::Asia Tokyo 2015 by Masahiro Nagano
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
Masahiro Nagano
•
54.6K views
Wg for ai_dev_ops_20180713 by Yutaka Terasawa
Wg for ai_dev_ops_20180713
Yutaka Terasawa
•
232 views
わんくまT84 kinect深度情報処理入門 by 伸男 伊藤
わんくまT84 kinect深度情報処理入門
伸男 伊藤
•
4.7K views
AnsibleでAzureの インフラを管理する話 + α by yaegashi
AnsibleでAzureの インフラを管理する話 + α
yaegashi
•
477 views
Firefox 3 と Web の変化 by dynamis
Firefox 3 と Web の変化
dynamis
•
541 views
Room metro Tokyo #3 発表資料です。 by Manato KAMEYA
Room metro Tokyo #3 発表資料です。
Manato KAMEYA
•
2.7K views
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】 by GMO GlobalSign Holdings K.K.
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
GMO GlobalSign Holdings K.K.
•
28K views
More from gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
725 views
•
36 slides
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
229 views
•
13 slides
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
1K views
•
18 slides
アプリ起動時間高速化 ~推測するな、計測せよ~ by
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
1.9K views
•
84 slides
長寿なゲーム事業におけるアプリビルドの効率化 by
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
347 views
•
116 slides
Cloud Spanner をより便利にする運用支援ツールの紹介 by
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
681 views
•
31 slides
More from gree_tech
(20)
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜 by gree_tech
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
gree_tech
•
725 views
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介 by gree_tech
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
gree_tech
•
229 views
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表 by gree_tech
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
gree_tech
•
1K views
アプリ起動時間高速化 ~推測するな、計測せよ~ by gree_tech
アプリ起動時間高速化 ~推測するな、計測せよ~
gree_tech
•
1.9K views
長寿なゲーム事業におけるアプリビルドの効率化 by gree_tech
長寿なゲーム事業におけるアプリビルドの効率化
gree_tech
•
347 views
Cloud Spanner をより便利にする運用支援ツールの紹介 by gree_tech
Cloud Spanner をより便利にする運用支援ツールの紹介
gree_tech
•
681 views
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介 by gree_tech
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
gree_tech
•
595 views
海外展開と負荷試験 by gree_tech
海外展開と負荷試験
gree_tech
•
593 views
翻訳QAでのテスト自動化の取り組み by gree_tech
翻訳QAでのテスト自動化の取り組み
gree_tech
•
304 views
組み込み開発のテストとゲーム開発のテストの違い by gree_tech
組み込み開発のテストとゲーム開発のテストの違い
gree_tech
•
571 views
サーバーフレームワークに潜んでる脆弱性検知ツール紹介 by gree_tech
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
gree_tech
•
209 views
データエンジニアとアナリストチーム兼務になった件について by gree_tech
データエンジニアとアナリストチーム兼務になった件について
gree_tech
•
308 views
シェアドサービスとしてのデータテクノロジー by gree_tech
シェアドサービスとしてのデータテクノロジー
gree_tech
•
432 views
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて- by gree_tech
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
gree_tech
•
1K views
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話 by gree_tech
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
gree_tech
•
1.1K views
比較サイトの検索改善(SPA から SSR に変換) by gree_tech
比較サイトの検索改善(SPA から SSR に変換)
gree_tech
•
691 views
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行 by gree_tech
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
gree_tech
•
2.9K views
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜 by gree_tech
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
gree_tech
•
395 views
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮) by gree_tech
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
gree_tech
•
751 views
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方- by gree_tech
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
gree_tech
•
445 views
Recently uploaded
図解で理解するvetKD by
図解で理解するvetKD
ryoo toku
84 views
•
22 slides
3Dプリンタでロボット作るよ#1_黎明編 by
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
19 views
•
7 slides
SSH超入門 by
SSH超入門
Toru Miyahara
48 views
•
21 slides
lt.pptx by
lt.pptx
tomochamarika
50 views
•
13 slides
how query cost affects search behavior translated in JP by
how query cost affects search behavior translated in JP
Tobioka Ken
9 views
•
16 slides
AIで始めるRustプログラミング #SolDevHub by
AIで始めるRustプログラミング #SolDevHub
K Kinzal
20 views
•
25 slides
Recently uploaded
(7)
図解で理解するvetKD by ryoo toku
図解で理解するvetKD
ryoo toku
•
84 views
3Dプリンタでロボット作るよ#1_黎明編 by Yoshihiro Shibata
3Dプリンタでロボット作るよ#1_黎明編
Yoshihiro Shibata
•
19 views
SSH超入門 by Toru Miyahara
SSH超入門
Toru Miyahara
•
48 views
lt.pptx by tomochamarika
lt.pptx
tomochamarika
•
50 views
how query cost affects search behavior translated in JP by Tobioka Ken
how query cost affects search behavior translated in JP
Tobioka Ken
•
9 views
AIで始めるRustプログラミング #SolDevHub by K Kinzal
AIで始めるRustプログラミング #SolDevHub
K Kinzal
•
20 views
robotics42.pptx by Natsutani Minoru
robotics42.pptx
Natsutani Minoru
•
166 views
SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について
1.
SINoALICE -シノアリス- Google Cloud
Firestoreを 用いた観戦機能の実現について 株式会社ポケラボ サーバーエンジニア 山口 拓郎
2.
• 本公演のターゲット • Google
Cloud Firestoreに興味がある方 • シノアリスのリアルタイムバトルのシステムに興味がある方 はじめに 2
3.
• 山口 拓郎(Takuro
Yamaguchi) • 2016年新卒エンジニアとしてポケラボに入社 • AKB48ステージファイター2 バトルフェスティバル • SINoALICE -シノアリス- • 新卒から現在に至るまでサーバーサイドエンジニアとして従事 自己紹介 3
4.
本日の流れ 4 1.シノアリスとは 2.観戦機能とは 3.コロシアムのシステム紹介 4.発生した課題と解決方法について
5.
1.シノアリスとは 5
6.
シノアリスとは 6
7.
シノアリスとは 7 • リアルタイム通信対戦『コロシアム』 について • シノアリスのメインコンテンツである、 ギルド対抗バトル •
最大15人のギルドメンバーと協力し、 対戦ギルドの”イノチ”を奪い合う • 1回20分間の対戦で、より多くの”イノ チ”を獲得した方の勝利
8.
2. 観戦機能とは 8
9.
観戦機能について(始まり) 9 • コロシアムで世界1位のギルドを決める 「WORLD GRAN
COLOSSEUM」を開催
10.
観戦機能について(始まり) 10 • コロシアムで世界1位のギルドを決める 「WORLD GRAN
COLOSSEUM」を開催 • 実際に出場するお客様だけでなく • 出場されないお客様にも一緒になって楽しんでもらえるよう 様々な検討を重ねた結果 • 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入 することとなりました
11.
観戦機能について(始まり) 11 • コロシアムで世界1位のギルドを決める 「WORLD GRAN
COLOSSEUM」を開催 • 実際に出場するお客様だけでなく • 出場されないお客様にも一緒になって楽しんでもらえるよう 様々な検討を重ねた結果 • 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入 することとなりました ※開発画面
12.
観戦機能について(始まり) 12 • コロシアムで世界1位のギルドを決める 「WORLD GRAN
COLOSSEUM」を開催 • 実際に出場するお客様だけでなく • 出場されないお客様にも一緒になって楽しんでもらえるよう 様々な検討を重ねた結果 • 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入 することとなりました
13.
観戦機能について(技術方針) 13
14.
観戦機能について(技術方針) 14
15.
観戦機能について(技術方針) 15
16.
Cloud Firestore 観戦機能について(技術方針) 16 • 柔軟な階層型データ構造に対応 •
リアルタイムアップデート • Firebase Unity SDK から扱える • シノアリスのアプリには既に導入済みだった
17.
3. コロシアムのシステム紹介 17
18.
コロシアムのシステム紹介(構成) 18
19.
コロシアムのシステム紹介(構成) 19 ● Unity 2018.4.2f1 ●
Apache / PHP(7.0) ● Amazon Aurora MySQL ● Memcached ● CDN(Akamai)
20.
コロシアムのシステム紹介(構成) 20 ● ポケラボ謹製 リアルタイム通信サーバ (通称「Reflector」) ○ Java ○
クライアントと常時接続 ○ Appサーバが提供する HTTPサービスを定期的に 実行 ○ データストアとして Hazelcastを利用
21.
コロシアムのシステム紹介(状態同期) 21 1 1. App サーバへ現在の状態を取得す る
HTTP サービスを実行
22.
コロシアムのシステム紹介(状態同期) 22 1 1. App サーバへ現在の状態を取得す る
HTTP サービスを実行 2. 現在の状態を Reflector に返却 2
23.
コロシアムのシステム紹介(状態同期) 23 1 1. App サーバへ現在の状態を取得す る
HTTP サービスを実行 2. 現在の状態を Reflector に返却 3. App サーバから返却された状態を Client に転送 2 3
24.
コロシアムのシステム紹介(状態同期) 24 1 1. App サーバへ現在の状態を取得す る
HTTP サービスを実行 2. 現在の状態を Reflector に返却 3. App サーバから返却された状態を Client に転送 4. 転送された状態を元に画面同期 2 3 4
25.
コロシアムのシステム紹介(ユーザー行動) 25 1. 武器使用などのユーザーの行動メ ッセージを送信 1
26.
コロシアムのシステム紹介(ユーザー行動) 26 2 1. 武器使用などのユーザーの行動メ ッセージを送信 2. App
サーバへユーザーの行動を 登録する HTTP サービスを実行 1
27.
コロシアムのシステム紹介(ユーザー行動) 27 2 1. 武器使用などのユーザーの行動メ ッセージを送信 2. App
サーバへユーザーの行動を 登録する HTTP サービスを実行 3. 行動に基づいた処理を実行、結果 を Reflector に返却 3 1
28.
コロシアムのシステム紹介(ユーザー行動) 28 2 1. 武器使用などのユーザーの行動メ ッセージを送信 2. App
サーバへユーザーの行動を 登録する HTTP サービスを実行 3. 行動に基づいた処理を実行、結果 を Reflector に返却 4. 返却された結果を Client に転送 3 4 1
29.
コロシアムのシステム紹介(Firestore導入:戦況) 29
30.
コロシアムのシステム紹介(Firestore導入:戦況) 30 1. Reflector から
App サーバへ HTTP サービスを実行 1
31.
コロシアムのシステム紹介(Firestore導入:戦況) 31 1. Reflector から
App サーバへ HTTP サービスを実行 2. 結果を Reflector に返却すると共 に Firestore へ書き込み 1 2
32.
コロシアムのシステム紹介(Firestore導入:戦況) 32 1. Reflector から
App サーバへ HTTP サービスを実行 2. 結果を Reflector に返却すると共 に Firestore へ書き込み 3. Firestore 上のデータ読み取り 1 2 3
33.
コロシアムのシステム紹介(Firestore導入:チャット) 33
34.
コロシアムのシステム紹介(Firestore導入:チャット) 34 1. Client から
App サーバへ メッセージ送信 1
35.
コロシアムのシステム紹介(Firestore導入:チャット) 35 1. Client から
App サーバへ メッセージ送信 2. 結果を Firestore へ書き込み 2 1
36.
コロシアムのシステム紹介(Firestore導入:チャット) 36 1. Client から
App サーバへ メッセージ送信 2. 結果を Firestore へ書き込み 3. Firestore 上のデータ読み取り 2 3 1
37.
Firesto 上のデータ構造(仕様) 37 • Cloud
Firestore はNoSQL ドキュメント指向データベース • データは「ドキュメント」に格納し それが「コレクション」にまとめられる
38.
Firesto 上のデータ構造 38 collection1 コロシアムの 基本情報 対戦開始時 ギルド情報 メンバー情報 イベント情報 など collection2 ユーザーの 行動履歴 ユーザー1行動毎 ユーザーID 攻撃対象 ダメージ量
など collection3 戦況状態履歴 約1秒毎 全ユーザーのHP イノチ獲得量 イベント状態 など collection4 チャット 発言毎 ユーザーアイコン 発言内容 など
39.
Firesto 上のデータ構造 39 collection1 コロシアムの 基本情報 対戦開始時 ギルド情報 メンバー情報 イベント情報 など collection2 ユーザーの 行動履歴 ユーザー1行動毎 ユーザーID 攻撃対象 ダメージ量
など collection3 戦況状態履歴 約1秒毎 全ユーザーのHP イノチ獲得量 イベント状態 など collection4 チャット 発言毎 ユーザーアイコン 発言内容 など
40.
Firesto 上のデータ構造 40 collection1 コロシアムの 基本情報 対戦開始時 ギルド情報 メンバー情報 イベント情報 など collection2 ユーザーの 行動履歴 ユーザー1行動毎 ユーザーID 攻撃対象 ダメージ量
など collection3 戦況状態履歴 約1秒毎 全ユーザーのHP イノチ獲得量 イベント状態 など collection4 チャット 発言毎 ユーザーアイコン 発言内容 など
41.
Firesto 上のデータ構造 41 collection1 コロシアムの 基本情報 対戦開始時 ギルド情報 メンバー情報 イベント情報 など collection2 ユーザーの 行動履歴 ユーザー1行動毎 ユーザーID 攻撃対象 ダメージ量
など collection3 戦況状態履歴 約1秒毎 全ユーザーのHP イノチ獲得量 イベント状態 など collection4 チャット 発言毎 ユーザーアイコン 発言内容 など
42.
Firesto 上のデータ構造 42 collection1 コロシアムの 基本情報 対戦開始時 ギルド情報 メンバー情報 イベント情報 など collection2 ユーザーの 行動履歴 ユーザー1行動毎 ユーザーID 攻撃対象 ダメージ量
など collection3 戦況状態履歴 約1秒毎 全ユーザーのHP イノチ獲得量 イベント状態 など collection4 チャット 発言毎 ユーザーアイコン 発言内容 など
43.
4. 発生した課題と解決方法について 43
44.
発生した課題と解決方法について 44 • PHP から
Firestore への write時、一定のコストがかかっており • 結果 Response Time の悪化が見られた
45.
発生した課題と解決方法について 45 • Firestore への
write が遅延するケースがあった • PHP と Firestore を切り離すために Cloud functions を使用
46.
発生した課題と解決方法について 46 • Firestore への
write にかかる時間が安定しなかった • PHP と Firestore を切り離すために、下記を実施 app サーバ 戦況書き込み app サーバ 戦況書き込み ● Cloud functions ○ PHP → Firestore への書き込み遅延を回避するために使用 PHP から write するのではなく、Cloud Functions から write する ● Cloud Pub/Sub ○ Cloud functions のトリガーとして使用
47.
発生した課題と解決方法について 47 • Firestore への
write が遅延するケースがあった • PHP と Firestore を切り離すために Cloud functions を使用 app サーバ 戦況書き込み app サーバ 戦況書き込み
48.
発生した課題と解決方法について 48 • Cloud functions
からの write に切り替えた結果 Response Time は安定
49.
発生した課題と解決方法について 49 • Cloud functions
からの write に切り替えた結果 Response Time は安定 • 依然として Cloud Pub/Sub への書き込みコストがあった
50.
発生した課題と解決方法について 50 • 依然として Cloud
Pub/Sub への書き込みコストがあった • google-cloud-batch daemon を使用
51.
発生した課題と解決方法について 51 • 依然として Cloud
Pub/Sub への書き込みコストがあった • google-cloud-batch daemon を使用 Request pub/sub 書き込み daemon 未使用
52.
発生した課題と解決方法について 52 • 依然として Cloud
Pub/Sub への書き込みコストがあった • google-cloud-batch daemon を使用 Request pub/sub 書き込み daemon pub/sub 書き込み queueに書き込み Request daemon 未使用 daemon 使用
53.
発生した課題と解決方法について 53 • google-cloud-batch daemon
で Cloud Pub/Sub への write を行うようにした結果 • Response Time が、Firestore導入前と同等まで改善
54.
まとめ 54 • Cloud Firestore
は以下の特徴がある • 柔軟な階層型データ構造に対応 • リアルタイムアップデート • Firebase Unity SDK から扱える • Firestore への書き込み時に一定のコストが発生したが Cloud functions, batch daemon を使用することで 書き込み時のコストを抑えることが出来た
55.
55