Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Native ⇄ Unityアプリのアナリティクス
Search
aroshipup
September 11, 2019
Programming
1.1k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Native ⇄ Unityアプリのアナリティクス
グリーグループモバイルアプリ勉強会 Vol.1
https://gree.connpass.com/event/142728/
aroshipup
September 11, 2019
Other Decks in Programming
See All in Programming
symfony/aiとlaravel/boost
77web
0
130
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
1.5k
SLOをサービス品質の共通言語にするために 取り組んできたこと
wakana0222
0
500
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
860
初めてのKubernetes 本番運用でハマった話
oku053
0
130
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
2
270
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
140
「正の参照」と 「負の導出」で組む ハーネスエンジニアリング
cottpan
1
140
Apache Hive: そしてCloud Native Lakehouseへ
okumin
1
130
The Bowling Game- From Imperative to Functional Programming - Part 1
philipschwarz
PRO
0
330
ルールを書いて終わらせないハーネスエンジニアリング
yug1224
2
1.5k
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
240
Featured
See All Featured
Designing for Timeless Needs
cassininazir
1
370
The Hidden Cost of Media on the Web [PixelPalooza 2025]
tammyeverts
2
350
How GitHub (no longer) Works
holman
316
150k
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
Context Engineering - Making Every Token Count
addyosmani
9
1k
Ten Tips & Tricks for a 🌱 transition
stuffmc
0
150
Abbi's Birthday
coloredviolet
3
8.7k
Neural Spatial Audio Processing for Sound Field Analysis and Control
skoyamalab
0
370
Marketing to machines
jonoalderson
1
5.6k
The browser strikes back
jonoalderson
0
1.4k
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
65
56k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Transcript
Native ⇄ Unityアプリの アナリティクス 2019.9.11 グリーグループモバイルアプリ勉強会 Vol.1 増住 啓吾
自己紹介 • 増住 啓吾 • Wright Flyer Live Entertainment •
EN • 最近 • クライアントサイド • iOS Native • その他 • データ基盤周り • CNCF系
Native ⇄ Unityアプリ
None
Native Unity
Embedded Unity? Unity as a library? Unityアプリのframework化? And so on...
is 何 いずれにせよ、 世にあまり例のない形式(多分)
CASE: チュートリアル
画面遷移図 (一部抜粋)
背景 • 既存のデータ基盤は存在するが、サーバサイドのログベース のもの • チュートリアル突破率向上のため、より詳細な分析をしたい • そのために、クライアントサイドのイベントトラッキングを 本格的に増やしていく
クライアントサイドのイベントトラッキング = 「まあ、普通に考えれば使うよな」
「そのデータ、その形式で取る必要あるの?」
文化が違う アプリのアーキテクチャと同じように、 異なる文化圏のメンバーがMIXされたチーム
アナリティクス => Firebaseは”常識”ではない • グループ内の大勢を占めるゲーム事業ではほぼ使っていない ので、既存のデータ基盤と連携できないのではないか • そもそも、既存の形式のサーバサイドのログを増やしていけ ばいいのではないか •
Bigqueryにexportした時のスキーマが扱いづらそう といったような意見をいただく
「常識だから」ではなく 「なぜ使うか」を考える
• サーバサイドの開発工数削減 => 開発スピードUP! • サーバリソースは全てFirebase側 => サーバのパフォーマンス向上・コスト削減 • Firebase
(GCP) の他プロダクトとの連携 => Bigquery export, A/B Testing, In-App Messaging, ... メリットは?
実装
設計 • Unity側が依存する要素をなるべく減らしたい => Firebase ClientはNative側だけに持つ • UnityからNativeにEvent Paramsを通知し、Native側はそれ を整形してFirebase
Analyticsに送信する
Unity Unity Native Interface Native App (Swift / Kotlin) Native
App側へ 通知 イベント トラッキング 実行 Bridge イベント発生 Bridge部分 呼び出し Event Params JSON
• トラッキングするデータ構造がUnity, Nativeそれぞれに分散 しているので、運用が重要 • 非ENのメンバーや、事業部外のチームとの連携も必要なの で、スプシを地道に運用してます。。 データ構造の管理
TIPS
• イベントトラッキングのログをほぼリアルタイムで確認でき る • イベントのパラメタやユーザープロパティも表示 => 開発者以外が確認する際 (QAなど) のテストケースとして 設定しやすくなり、データの抜け漏れを防ぎやすくなる
Firebase DebugView
Firebase DebugView
BigQuery View • クエリによって生成する仮想テーブル =>データ集計処理不要 • 生成元が分割テーブルの場合、Partition Columnを参照した クエリで生成すればそのまま適用 =>
コストデメリットなし • スキーマが複雑なFirebase Analyticsのレコードの運用がラク に
クエリ行数: 165行 -> 6行
• Firebase AnalyticsはREALITYのような特殊な構造のアプリに おいても有効 • ただし、「普通そうだから」で導入してはいけない、「なぜ 使うか」がより重要になる • Unity⇄Native間のインターフェイスを適切に設計すること で、無駄な依存を作らずにシームレスに計測できる
まとめ