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
AI時代の仕事技芸論〜ソフトウェア開発で「遊ぶように働く」職人的熟達のすすめ(スクフェス仙台 2026バージョン)
kuranuki
0
650
PHP初心者セッション2026 〜生成AIでは見えない裏側を知る:今だからLAMPを通して仕組みを学ぶ〜
kashioka
0
480
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
950
LLMによるContent Moderationの本番運用の裏側と品質担保への挑戦
suikabar
3
860
技術記事、 専門家としてのプログラマ、 言語化
mizchi
14
7.5k
作るコストが小さくなった時代 幸せに働くために改めて考えたいこと 〜エンジニアとして価値を出し続けるために注視している二分野〜
yuppeeng
0
100
Hatena Engineer Seminar #37「言語モデルの活用に関する研究」
slashnephy
0
520
5分で問診!Composer セキュリティ健康診断
codmoninc
0
280
AIキャラアプリkaiwaの低遅延音声通話基盤をどう作ったか - AWS Gravitonで支える低遅延・低コストAI Agent基盤
mogamit
0
170
Performance Engineering for Everyone
elenatanasoiu
0
270
コーディングルールの鮮度を保ちたい for SRE NEXT 2026 / keep-fresh-go-internal-conventions-sre-next-2026
handlename
0
140
Snowflake Summitでの新機能 CoCo / CoWork / snowflake-summit-2026-overall-what-new-coco
tatsuhiro
1
230
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
51
53k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
530
Prompt Engineering for Job Search
mfonobong
0
380
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
590
Sharpening the Axe: The Primacy of Toolmaking
bcantrill
46
2.9k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
Music & Morning Musume
bryan
47
7.3k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.3k
Taking LLMs out of the black box: A practical guide to human-in-the-loop distillation
inesmontani
PRO
3
2.3k
The SEO identity crisis: Don't let AI make you average
varn
0
510
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
340
Optimizing for Happiness
mojombo
378
71k
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間のインターフェイスを適切に設計すること で、無駄な依存を作らずにシームレスに計測できる
まとめ