【React Native】【Expo】分析ツールAmplitudeの導入方法とそのメリット
アプリの分析ツールといえば、Google Analytics, Firebase Analytics, Mix Panelなど様々ありますが、今回はAmplitudeというサービスをご紹介します。
弊社のアプリ"maricuru"では分析に、このAmplitudeをフル活用しています。
Amplitudeとは
アメリカのAmplitude社の提供する、ウェブ/モバイルのアナリティクスツールです。
類似のサービスとしてはmixpanelなどが挙げられます。
アプリから各種イベントのログを送信することで、Amplitudeウェブサイト上でグラフを作成して分析することが出来ます。
導入してみよう
Expoが公式にサポートしているので導入が楽です。
ま、正直これがAmplitudeを使おうと思ったきっかけですね。
Amplitude - Expo Documentation
では、以下でReact Native + Expoでの導入の手順についてご紹介します。
Amplitudeアカウントの取得
Amlitudeのサイトからサインアップします。
Amplitude | Product Analytics for Web and Mobile
実装
公式のサンプルプログラムを参考にします。
expo/Analytics.js at master · expo/expo · GitHub
初期化
Amplitude.initialize(apiKey);
でAmplitudeを初期化します。
const { manifest } = Constants; const apiKey = manifest.extra && manifest.extra.amplitudeApiKey; const initialize = () => { if (!Environment.isProduction || !apiKey) { return; } Amplitude.initialize(apiKey); isInitialized = true; };
ここでapiKey
は先ほど作成したAmplitudeプロジェクトのものを指定します。
app.json
のextra欄に以下のように指定することで、プログラム内ではmanifest.extra.amplitudeApiKey
のようにして参照できます。
{ "expo": { (中略) "extra": { amplitudeApiKey: XXXXXXXXXXXXXXXXXx } } }
ユーザー情報の登録
そのイベントをどのユーザーが実行したかを特定するために、ユーザー情報をセットします。
アプリ起動後に1度行えばOKです。
const identify = (id: ?string, options?: ?Object = null) => { maybeInitialize(); options = normalizeTrackingOptions(options); if (id) { Amplitude.setUserId(id); if (options) { Amplitude.setUserProperties(options); } } else { Amplitude.clearUserProperties(); } };
Amplitude.setUserId(id)
でサービス内で使用しているuserIdをセットします。
またAmplitude.setUserProperties(options)
でユーザーのその他の各種情報をセットします。
ユーザー名、登録日、年齢、性別などなど、分析に役立ちそうな属性をセットしておくと便利です。
弊社の場合、それに加えてuserId % 10
の値を入れています。
ABテストを行う際に、userIdの下1桁で分類することが多いのですが、その分析に利用します。
Amplitudeでコホート分析する場合は、そのコホートの軸となる指標がuser属性に入っている必要があります。(少なくとも無料版の場合は)
例えば以下のような感じでidenitfyすることになります。
Analytics.identify(user.id, { age: user.age, // 21など gender: user.gender, // maleなど analyticsGroup: user.id % 10, createdAt: user.createdAt, });
ログ送信
さていよいよログの送信です。
このような汎用のtrack
メソッドを用意して、それを随所に仕込むことになります。
const track = (event: string, options: any = null) => { maybeInitialize(); options = normalizeTrackingOptions(options); if (options) { Amplitude.logEventWithProperties(event, options); } else { Amplitude.logEvent(event); } };
実際の仕込みは例えばこんな感じです。
onSubmitText(text) { Analytics.track( 'SUBMIT_TEXT', // イベントを特定する適当な文字列 {text} // 一緒に送るパラメータを自由に指定 ); }
送られたログを確認
まずユーザー属性がちゃんと出力されています。
基本属性のキャリア、OSなどはデフォルトで出力してくれます。
また、先ほど指定してgenderやageなども合わせて出力されています。
また、track()
のパラメータとして送信したtext
もちゃんと送信されています。
このような感じで、アプリ内の様々なアクションにtrack()
を仕込むことになります。
分析してみよう
無料版でも十分な分析ツールが揃っています。
- Event Segmentation
- Funnel Analysis
- Retention Analysis
- User Composition
- User Sessions
- Stickiness
- Lifecycle
が使えますが、弊社では特に以下のツールをよく使っています。
Event Segmentation
あるイベントがどれくらい実行されたかを、時系列でグラフ化します。
例えばSNSサイトだとすると
- 日次の訪問者数
- 日次の投稿者数
などなどでしょうか。
また日次の部分は週次、月次にもワンタッチで切り替えられます。
投稿者数(unique users)のところも - 投稿数(unique events) - アクティブユーザー中の投稿ユーザー率(Active %) - 平均投稿数(Average) - 投稿回数(Frecuency) など様々な軸で分析することが出来ます。
Retention Analytics
継続率です。
Daily, Weekly, Monthlyが切り替えられます。
また、属性ごとにコホートも切れるので、先ほどのidentify
のステップで、性別や年齢を入れていれば、男女別、年齢別の継続率なども分析することが出来ます。
グラフの下のテーブルでは、入会日別で継続率が表示されているので、ある施策を行った日に入会したユーザーは継続率が高い、などが分かるかもしれません。
Funnel Analytics
ファネル分析です。
よくあるのは入会フローのどこで脱落しているかの分析などでしょうか。
フローのチェックポイントになるイベントを複数指定することで、どのステップで脱落率が高いかが、棒グラフで表示されます。
その他の便利機能
Export API
Amlitudeに蓄積したデータをexportするAPIがあります。
これを使えばexportしたデータを自前のデータベース(BigQueryなど)に格納して、より細かい分析をすることも可能かもしれません。
Slack bot
AmplitudeのグラフURLをSlackにコピペすると、そのグラフのスクリーンショットを貼ってくれるbotです。
「ここのアクティビティ落ちてんだけど、なんでかなー」みたいなディスカッションのときに、グラフをペタッと共有することができます。
まとめ
まず、Expoだと導入が楽ちんです。
また、基本的な分析をSQLなど書かずにすぐに出力できるので、エンジニアでなくビジネスサイドのメンバーも自身で分析をすることができます。
こういった点から、スタートアップや立ち上げ初期のサービスにとっては、とても助かる分析ツールだと思います!
Amplitudeの機能自体はここには書ききれないので、実際に触ってみるのがよいと思います。