パラレルのデータ分析基盤について
今回はパラレル上のデータをどのように分析しているのかに関しての記事を書きたいと思います。
データ分析の専門知識を持ったメンバーがいない中、試行錯誤しながら今の形になっているので、これからデータ分析基盤を作ろうかと思ってる方や、どうやってPDCAを回しているんだろうみたいなことに興味のある方に見ていただければかと思います。
パラレルについて
パラレル自体についての詳細は共同代表の歳原が書いた記事を見ていただければかと思いますが、データ分析の観点から何が面白いのかを書きたいと思います。
パラレルの分析基盤を構成するサービスは下記です。
① BigQuery(Firebase Analytics、Cloud SQL)
② Redash
③ Adjust
① BigQuery
アプリケーション上でユーザーのアクションに紐づくデータは、永続化が必要であればCloud SQL、必要のないイベントデータはFirebase Analyticsを利用してイベントを集計しています。
どちらもGoogle製のサービスであるということもあり、BigQueryへのデータストックはシームレスに行えています。
BigQueryで一元管理をするためにやっていることは二つ。
● CloudSQLのデータをバッチ処理で一日一回BigQueryにエクスポート
● エクスポートが終わったデータを含めて中間テーブルを最新に更新
こうすることで、毎日朝の出社時にダッシュボードを更新するときには前日までの最新データが閲覧できるようになっています。
バッチ処理に関しては、Embulkを利用して毎朝CloudSQLのデータをBQにエクスポートしてますが、もっといい方法ある方ぜひ教えてください。
Embulkを利用して結構助かっているのはカラムを追加するだけであれば特にコードの修正が必要なく、新しくテーブル作成するときだけ気をつけていれば問題ないという点です。
中間テーブルに関しては最近始めたのですが、BQ上ではかなり簡単に中間テーブルが作成でき、スケジューリングするのも全てコンソール上で実現できてしまいます。
JOINなどが頻繁に発生するようなデータセットなどは中間テーブルとして作成しておき参照するようにするとかなり効率的なのではないでしょうか。
僕らはユーザーが急増してきたタイミングからDAUや日別の通話者数の取得に10分以上かかるようになってきてしまい、その改善として中間テーブルを作るようになりました。今では全期間で参照しても3秒程度で取得できるようになっていて大きなメリットがあります。
② Redash
Redashはダッシュボード表示やBigQueryを直接開かなくてもクエリを叩けるようにするために利用してます。
弊社メンバーは全員クエリを書くことができるため、全員がRedashの権限を持ってBigQueryのデータを叩くことができるようになっています。
元々はRedash上でCloudSQLのデータと、BigQueryのデータをインポートしてQuery Resultsを使ってRedash上でデータ結合などをしていたのですが、結構JOINがふえると実行時間も馬鹿にならなくなって上記で書いたようにBQにデータソースを一元管理するようにして中間テーブルを作るようになったという背景があります。
一部ですが、こんな感じでダッシュボード化しています。(データ見せろ!って方はDM下さい)
③ Adjust
今はまだプロモーションをやっていないのですが、これからプロモーションなどもしていくことを検討しているのでAdjustを入れています。
Adjustについてはまた広告などをやって色々つかめてきたらまた書きたいと思います。
利用している理由としては、広告経由のユーザーとオーガニックユーザーごとのリテンションの違いなどを知ったり、どの広告経由のユーザーが効果が高いのかなどを見るためです。
現状は広告ID(IDFAやGAID)を永続化して取得するのに使用しています。
気をつけたこと
1. 登録前ユーザーのID管理
オンボーディングのどこで離脱しているのかを見る必要があるかと思いますが、当然登録前のデータはDB上に存在していません。
そのため、アプリを最初に開いたタイミングで自前のユニークIDを発行してiOSならKeychainに保存することで新規ユーザーが登録前にどこで離脱しているのかを確認できるようにしています。その結果パラレルのオンボーディング突破率は驚異の95%です!
2. 複数デバイスの同一ユーザー管理
パラレルは同一アカウントでiPadとiPhoneを兼用しているユーザーが多くいます。そのため、Device、DeviceUser、Userテーブルと三つのテーブルを作成してデバイスが複数あったりしても、機種変更してもUserとDeviceがしっかりと紐づいて用途に合わせてデータを正確に抽出できるようにしています。
こうしておくと、データ分析はもちろん正確にできるようになりますが、プッシュ通知の送信管理などもデバイスごとに制御できたりなどいいことたくさんあるので是非おすすめです。
エンジニア募集
1. iOS/Androidネイティブエンジニア
2. ユーザー規模の多いリアルタイム通信経験者
3. DB負荷分散などの有識者
基本エンジニアさん全方位で採用してますので、
学生から玄人まで是非お気軽にご応募ください!
パラレルの技術スタックについては下記をご覧ください。
https://note.com/aokijou/n/n0e7fd2b45ea9
▼ こんな人におすすめ
1. トラクションの増えてきたプロダクトの開発を経験したい方
2. プロダクトの細部にまでこだわりと愛着が持てる方
3. 日本発のC向けアプリでグローバル進出を狙っている方
4. スモールチームで責任あるポジションで開発したい方
5. ゲーム好きな方
この記事が気に入ったらサポートをしてみませんか?