SlideShare une entreprise Scribd logo
1  sur  55
SINoALICE -シノアリス-
Google Cloud Firestoreを
用いた観戦機能の実現について
株式会社ポケラボ サーバーエンジニア
山口 拓郎
• 本公演のターゲット
• Google Cloud Firestoreに興味がある方
• シノアリスのリアルタイムバトルのシステムに興味がある方
はじめに
2
• 山口 拓郎(Takuro Yamaguchi)
• 2016年新卒エンジニアとしてポケラボに入社
• AKB48ステージファイター2 バトルフェスティバル
• SINoALICE -シノアリス-
• 新卒から現在に至るまでサーバーサイドエンジニアとして従事
自己紹介
3
本日の流れ
4
1.シノアリスとは
2.観戦機能とは
3.コロシアムのシステム紹介
4.発生した課題と解決方法について
1.シノアリスとは
5
シノアリスとは
6
シノアリスとは
7
• リアルタイム通信対戦『コロシアム』
について
• シノアリスのメインコンテンツである、
ギルド対抗バトル
• 最大15人のギルドメンバーと協力し、
対戦ギルドの”イノチ”を奪い合う
• 1回20分間の対戦で、より多くの”イノ
チ”を獲得した方の勝利
2. 観戦機能とは
8
観戦機能について(始まり)
9
• コロシアムで世界1位のギルドを決める
「WORLD GRAN COLOSSEUM」を開催
観戦機能について(始まり)
10
• コロシアムで世界1位のギルドを決める
「WORLD GRAN COLOSSEUM」を開催
• 実際に出場するお客様だけでなく
• 出場されないお客様にも一緒になって楽しんでもらえるよう
様々な検討を重ねた結果
• 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入
することとなりました
観戦機能について(始まり)
11
• コロシアムで世界1位のギルドを決める
「WORLD GRAN COLOSSEUM」を開催
• 実際に出場するお客様だけでなく
• 出場されないお客様にも一緒になって楽しんでもらえるよう
様々な検討を重ねた結果
• 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入
することとなりました
※開発画面
観戦機能について(始まり)
12
• コロシアムで世界1位のギルドを決める
「WORLD GRAN COLOSSEUM」を開催
• 実際に出場するお客様だけでなく
• 出場されないお客様にも一緒になって楽しんでもらえるよう
様々な検討を重ねた結果
• 世界一を決める激戦をみんなで観戦・応援できる仕組みを導入
することとなりました
観戦機能について(技術方針)
13
観戦機能について(技術方針)
14
観戦機能について(技術方針)
15
Cloud Firestore
観戦機能について(技術方針)
16
• 柔軟な階層型データ構造に対応
• リアルタイムアップデート
• Firebase Unity SDK から扱える
• シノアリスのアプリには既に導入済みだった
3. コロシアムのシステム紹介
17
コロシアムのシステム紹介(構成)
18
コロシアムのシステム紹介(構成)
19
● Unity 2018.4.2f1
● Apache / PHP(7.0)
● Amazon Aurora
MySQL
● Memcached
● CDN(Akamai)
コロシアムのシステム紹介(構成)
20
● ポケラボ謹製
リアルタイム通信サーバ
(通称「Reflector」)
○ Java
○ クライアントと常時接続
○ Appサーバが提供する
HTTPサービスを定期的に
実行
○ データストアとして
Hazelcastを利用
コロシアムのシステム紹介(状態同期)
21
1
1. App サーバへ現在の状態を取得す
る HTTP サービスを実行
コロシアムのシステム紹介(状態同期)
22
1
1. App サーバへ現在の状態を取得す
る HTTP サービスを実行
2. 現在の状態を Reflector に返却
2
コロシアムのシステム紹介(状態同期)
23
1
1. App サーバへ現在の状態を取得す
る HTTP サービスを実行
2. 現在の状態を Reflector に返却
3. App サーバから返却された状態を
Client に転送
2
3
コロシアムのシステム紹介(状態同期)
24
1
1. App サーバへ現在の状態を取得す
る HTTP サービスを実行
2. 現在の状態を Reflector に返却
3. App サーバから返却された状態を
Client に転送
4. 転送された状態を元に画面同期
2
3
4
コロシアムのシステム紹介(ユーザー行動)
25
1. 武器使用などのユーザーの行動メ
ッセージを送信
1
コロシアムのシステム紹介(ユーザー行動)
26
2
1. 武器使用などのユーザーの行動メ
ッセージを送信
2. App サーバへユーザーの行動を
登録する HTTP サービスを実行
1
コロシアムのシステム紹介(ユーザー行動)
27
2
1. 武器使用などのユーザーの行動メ
ッセージを送信
2. App サーバへユーザーの行動を
登録する HTTP サービスを実行
3. 行動に基づいた処理を実行、結果
を Reflector に返却
3
1
コロシアムのシステム紹介(ユーザー行動)
28
2
1. 武器使用などのユーザーの行動メ
ッセージを送信
2. App サーバへユーザーの行動を
登録する HTTP サービスを実行
3. 行動に基づいた処理を実行、結果
を Reflector に返却
4. 返却された結果を Client に転送
3
4
1
コロシアムのシステム紹介(Firestore導入:戦況)
29
コロシアムのシステム紹介(Firestore導入:戦況)
30
1. Reflector から App サーバへ
HTTP サービスを実行
1
コロシアムのシステム紹介(Firestore導入:戦況)
31
1. Reflector から App サーバへ
HTTP サービスを実行
2. 結果を Reflector に返却すると共
に Firestore へ書き込み
1
2
コロシアムのシステム紹介(Firestore導入:戦況)
32
1. Reflector から App サーバへ
HTTP サービスを実行
2. 結果を Reflector に返却すると共
に Firestore へ書き込み
3. Firestore 上のデータ読み取り
1
2
3
コロシアムのシステム紹介(Firestore導入:チャット)
33
コロシアムのシステム紹介(Firestore導入:チャット)
34
1. Client から App サーバへ
メッセージ送信
1
コロシアムのシステム紹介(Firestore導入:チャット)
35
1. Client から App サーバへ
メッセージ送信
2. 結果を Firestore へ書き込み
2
1
コロシアムのシステム紹介(Firestore導入:チャット)
36
1. Client から App サーバへ
メッセージ送信
2. 結果を Firestore へ書き込み
3. Firestore 上のデータ読み取り
2
3
1
Firesto 上のデータ構造(仕様)
37
• Cloud Firestore はNoSQL ドキュメント指向データベース
• データは「ドキュメント」に格納し
それが「コレクション」にまとめられる
Firesto 上のデータ構造
38
collection1
コロシアムの
基本情報
対戦開始時
ギルド情報
メンバー情報
イベント情報 など
collection2
ユーザーの
行動履歴
ユーザー1行動毎
ユーザーID
攻撃対象
ダメージ量 など
collection3 戦況状態履歴 約1秒毎
全ユーザーのHP
イノチ獲得量
イベント状態 など
collection4 チャット 発言毎
ユーザーアイコン
発言内容 など
Firesto 上のデータ構造
39
collection1
コロシアムの
基本情報
対戦開始時
ギルド情報
メンバー情報
イベント情報 など
collection2
ユーザーの
行動履歴
ユーザー1行動毎
ユーザーID
攻撃対象
ダメージ量 など
collection3 戦況状態履歴 約1秒毎
全ユーザーのHP
イノチ獲得量
イベント状態 など
collection4 チャット 発言毎
ユーザーアイコン
発言内容 など
Firesto 上のデータ構造
40
collection1
コロシアムの
基本情報
対戦開始時
ギルド情報
メンバー情報
イベント情報 など
collection2
ユーザーの
行動履歴
ユーザー1行動毎
ユーザーID
攻撃対象
ダメージ量 など
collection3 戦況状態履歴 約1秒毎
全ユーザーのHP
イノチ獲得量
イベント状態 など
collection4 チャット 発言毎
ユーザーアイコン
発言内容 など
Firesto 上のデータ構造
41
collection1
コロシアムの
基本情報
対戦開始時
ギルド情報
メンバー情報
イベント情報 など
collection2
ユーザーの
行動履歴
ユーザー1行動毎
ユーザーID
攻撃対象
ダメージ量 など
collection3 戦況状態履歴 約1秒毎
全ユーザーのHP
イノチ獲得量
イベント状態 など
collection4 チャット 発言毎
ユーザーアイコン
発言内容 など
Firesto 上のデータ構造
42
collection1
コロシアムの
基本情報
対戦開始時
ギルド情報
メンバー情報
イベント情報 など
collection2
ユーザーの
行動履歴
ユーザー1行動毎
ユーザーID
攻撃対象
ダメージ量 など
collection3 戦況状態履歴 約1秒毎
全ユーザーのHP
イノチ獲得量
イベント状態 など
collection4 チャット 発言毎
ユーザーアイコン
発言内容 など
4. 発生した課題と解決方法について
43
発生した課題と解決方法について
44
• PHP から Firestore への write時、一定のコストがかかっており
• 結果 Response Time の悪化が見られた
発生した課題と解決方法について
45
• Firestore への write が遅延するケースがあった
• PHP と Firestore を切り離すために Cloud functions を使用
発生した課題と解決方法について
46
• Firestore への write にかかる時間が安定しなかった
• PHP と Firestore を切り離すために、下記を実施
app
サーバ
戦況書き込み
app
サーバ
戦況書き込み
● Cloud functions
○ PHP → Firestore への書き込み遅延を回避するために使用
PHP から write するのではなく、Cloud Functions から write する
● Cloud Pub/Sub
○ Cloud functions のトリガーとして使用
発生した課題と解決方法について
47
• Firestore への write が遅延するケースがあった
• PHP と Firestore を切り離すために Cloud functions を使用
app
サーバ
戦況書き込み
app
サーバ
戦況書き込み
発生した課題と解決方法について
48
• Cloud functions からの write に切り替えた結果
Response Time は安定
発生した課題と解決方法について
49
• Cloud functions からの write に切り替えた結果
Response Time は安定
• 依然として Cloud Pub/Sub への書き込みコストがあった
発生した課題と解決方法について
50
• 依然として Cloud Pub/Sub への書き込みコストがあった
• google-cloud-batch daemon を使用
発生した課題と解決方法について
51
• 依然として Cloud Pub/Sub への書き込みコストがあった
• google-cloud-batch daemon を使用
Request
pub/sub 書き込み
daemon
未使用
発生した課題と解決方法について
52
• 依然として Cloud Pub/Sub への書き込みコストがあった
• google-cloud-batch daemon を使用
Request
pub/sub 書き込み
daemon
pub/sub 書き込み
queueに書き込み
Request
daemon
未使用
daemon
使用
発生した課題と解決方法について
53
• google-cloud-batch daemon で Cloud Pub/Sub への write
を行うようにした結果
• Response Time が、Firestore導入前と同等まで改善
まとめ
54
• Cloud Firestore は以下の特徴がある
• 柔軟な階層型データ構造に対応
• リアルタイムアップデート
• Firebase Unity SDK から扱える
• Firestore への書き込み時に一定のコストが発生したが
Cloud functions, batch daemon を使用することで
書き込み時のコストを抑えることが出来た
55

Contenu connexe

Tendances

Tendances (20)

Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
Microsoft Azureで描く未来 !CLR/H &Windows女子部 ー lesson1
 
データ活用を効率化するHadoop WebUIと権限管理改善事例
データ活用を効率化するHadoop WebUIと権限管理改善事例データ活用を効率化するHadoop WebUIと権限管理改善事例
データ活用を効率化するHadoop WebUIと権限管理改善事例
 
Azure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと DiveAzure Contract, Support, License ちょっと Dive
Azure Contract, Support, License ちょっと Dive
 
俺とHashiCorp
俺とHashiCorp俺とHashiCorp
俺とHashiCorp
 
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
AWS re:invent振り返りServerlessでサーバコスト以外もいろいろ削減
 
de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!de:code 2019 Cloud トラック 総まとめ!
de:code 2019 Cloud トラック 総まとめ!
 
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
TB / Day規模のゲーム向けデータパイプラインを開発運用する日々
 
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプラインREALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
REALITY低遅延モード配信を支えるリアルタイムサーバとデータパイプライン
 
Hadoop Operations #cwt2013
Hadoop Operations #cwt2013Hadoop Operations #cwt2013
Hadoop Operations #cwt2013
 
ダイ・ハード in the Kubernetes world
ダイ・ハード in the Kubernetes worldダイ・ハード in the Kubernetes world
ダイ・ハード in the Kubernetes world
 
クラウドネイティブガバナンスの実現
クラウドネイティブガバナンスの実現クラウドネイティブガバナンスの実現
クラウドネイティブガバナンスの実現
 
Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要Virtual Machine Scale Sets 概要
Virtual Machine Scale Sets 概要
 
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
Yahoo! JAPAN MeetUp #8 (インフラ技術カンファレンス)LT③
 
Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊Terraform Bootcamp - Azure Infrastructure as Code隊
Terraform Bootcamp - Azure Infrastructure as Code隊
 
de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版de:code 2019 Cloud トラック 総まとめ! 完全版
de:code 2019 Cloud トラック 総まとめ! 完全版
 
認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤認証/認可が実現する安全で高速分析可能な分析処理基盤
認証/認可が実現する安全で高速分析可能な分析処理基盤
 
RPKIやってみませんか?
RPKIやってみませんか?RPKIやってみませんか?
RPKIやってみませんか?
 
インフラ野郎AzureチームProX
インフラ野郎AzureチームProXインフラ野郎AzureチームProX
インフラ野郎AzureチームProX
 
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
Kubernetes on Azure ~Azureで便利にKubernetesを利用する~
 
20161210 jawsai
20161210 jawsai20161210 jawsai
20161210 jawsai
 

Similaire à SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について

Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
Takahiko Ito
 
わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門
伸男 伊藤
 

Similaire à SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について (20)

Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
Rescale ScaleX講習会 ~AWSクラウド環境におけるHPC利用
 
深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル深層学習ライブラリのプログラミングモデル
深層学習ライブラリのプログラミングモデル
 
Python languageupdate (2004)
Python languageupdate (2004)Python languageupdate (2004)
Python languageupdate (2004)
 
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
運用中のゲームにAIを導入するには〜プロジェクト推進・ユースケース・運用〜 [DeNA TechCon 2019]
 
さくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるものさくらのナレッジの運営から見えるもの
さくらのナレッジの運営から見えるもの
 
Firefox と Mozilla のテクノロジー
Firefox と Mozilla のテクノロジーFirefox と Mozilla のテクノロジー
Firefox と Mozilla のテクノロジー
 
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
 
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
【de:code 2020】 2020 年も最高のゲームをつくろう! Game Stack でゲーム開発をしよう! ~ マルチプレイサーバー編 ~
 
Windows 10 RS4 Insider Preview
Windows 10 RS4 Insider PreviewWindows 10 RS4 Insider Preview
Windows 10 RS4 Insider Preview
 
Spring tools4
Spring tools4Spring tools4
Spring tools4
 
Hadoop conference Japan 2011
Hadoop conference Japan 2011Hadoop conference Japan 2011
Hadoop conference Japan 2011
 
Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)Firefox 3.1 In Depth (?)
Firefox 3.1 In Depth (?)
 
Firefox で快適 WordPress 生活
Firefox で快適 WordPress 生活Firefox で快適 WordPress 生活
Firefox で快適 WordPress 生活
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713Wg for ai_dev_ops_20180713
Wg for ai_dev_ops_20180713
 
わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門わんくまT84 kinect深度情報処理入門
わんくまT84 kinect深度情報処理入門
 
AnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + αAnsibleでAzureの インフラを管理する話 + α
AnsibleでAzureの インフラを管理する話 + α
 
Firefox 3 と Web の変化
Firefox 3 と Web の変化Firefox 3 と Web の変化
Firefox 3 と Web の変化
 
Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。Room metro Tokyo #3 発表資料です。
Room metro Tokyo #3 発表資料です。
 
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
Unityで PhotonCloudを使ってリアルタイム・マルチプレイヤーゲームを作っちゃおう【導入編】
 

Plus de gree_tech

Plus de gree_tech (20)

アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
アナザーエデンPC版リリースへの道のり 〜WFSにおけるマルチプラットフォーム対応の取り組み〜
 
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
GREE VR Studio Laboratory「XR-UX Devプロジェクト」の成果紹介
 
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
REALITYアバターを様々なメタバースで活躍させてみた - GREE VR Studio Laboratory インターン研究成果発表
 
アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~アプリ起動時間高速化 ~推測するな、計測せよ~
アプリ起動時間高速化 ~推測するな、計測せよ~
 
長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化長寿なゲーム事業におけるアプリビルドの効率化
長寿なゲーム事業におけるアプリビルドの効率化
 
Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介Cloud Spanner をより便利にする運用支援ツールの紹介
Cloud Spanner をより便利にする運用支援ツールの紹介
 
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
WFSにおけるCloud SpannerとGKEを中心としたGCP導入事例の紹介
 
海外展開と負荷試験
海外展開と負荷試験海外展開と負荷試験
海外展開と負荷試験
 
翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み翻訳QAでのテスト自動化の取り組み
翻訳QAでのテスト自動化の取り組み
 
組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い組み込み開発のテストとゲーム開発のテストの違い
組み込み開発のテストとゲーム開発のテストの違い
 
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介サーバーフレームワークに潜んでる脆弱性検知ツール紹介
サーバーフレームワークに潜んでる脆弱性検知ツール紹介
 
データエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件についてデータエンジニアとアナリストチーム兼務になった件について
データエンジニアとアナリストチーム兼務になった件について
 
シェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジーシェアドサービスとしてのデータテクノロジー
シェアドサービスとしてのデータテクノロジー
 
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
「ドキュメント見つからない問題」をなんとかしたい - 横断検索エンジン導入の取り組みについて-
 
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
「Atomic Design × Nuxt.js」コンポーネント毎に責務の範囲を明確にしたら幸せになった話
 
比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)比較サイトの検索改善(SPA から SSR に変換)
比較サイトの検索改善(SPA から SSR に変換)
 
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
コードの自動修正によって実現する、機能開発を止めないフレームワーク移行
 
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
「やんちゃ、足りてる?」〜ヤンマガWebで挑戦を続ける新入りエンジニア〜
 
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
法人向けメタバースプラットフォームの開発の裏側をのぞいてみた(仮)
 
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
基調講演 -グリーが目指すエンジニアのあり方、チームのあり方-
 

SINoALICE -シノアリス- Google Cloud Firestoreを用いた観戦機能の実現について