Google Analyticsを用いてアプリの使用状況を調査する


Androidのアプリケーションでは、Google Analytics用いてアプリケーションの使用状況を調査(トラッキング)することが可能です。

Google Analyticsは、主にウェブサイトなどの使用状況(訪問数や滞在時間など)を調査するための、Googleが提供するWebサービスです。下図はGoogle Analyticsによる解析結果を表示する画面の一例です。解析結果はブラウザにて閲覧可能です。


Google Analyticsには、Google Analyticsfor Mobile apps SDKが用意されており、AndroidやiOSなどのモバイルプラットフォーム用にAPIが定義されています。

今回はその中から、Google Analytics SDK for Androidを使用して、アプリケーションの訪問回数ボタンがクリックされた回数などをトラッキングしてみたいと思います。

サンプルとして作成するアプリケーションは非常に簡単なもので、3つのボタンから一つを選択し、選択したボタンに応じて、遷移先の画面にメッセージを表示します。

解説の流れとしては以下の通りです。

  • Google Analyticsを使用するための準備
  • ソースコードにトラッキングのためのAPIを埋め込む(サンプルコード解説)

※なお、Google Analyticsについてはここでは詳しく解説しません。

では続きをどうぞ

Google Analyticsを使用するための準備
それではまず、Google Analyticsを利用するための準備をします。以下の手順で進めていきます。

  1. Google Analytics SDK for Android(ライブラリ)のダウンロードとプロジェクトへの追加
  2. AndroidManifest.xmlへのパーミッションの追加
  3. Google Analyticsアカウントの登録(プロパティーIDの取得)

1.Google Analytics SDK for Android(ライブラリ)のダウンロード
まずはSDKのダウンロードを行う必要があります。

ダウンロードは以下のリンクから行えます。GoogleAnalyticsAndroid_1.2.zip (2011/7/11現在最新Ver.)を選択してダウンロードを開始してください。
http://code.google.com/intl/ja/mobile/analytics/download.html#Google_Analytics_SDK_for_Android

ダウンロードが完了したら、ファイルを解凍しておきます。
解凍が終わったら、プロジェクトへ外部ライブラリとして追加します。
・プロジェクト上で右クリック→プロパティー→Java Build Path選択→Add External jar…
の順番で選択し、ファイル選択ダイアログが表示されたら、先ほど解凍したフォルダの中にある以下のファイルを参照します。
libGoogleAnalytics.jar
選択できたら、OKボタンを押して完了しましょう。

2.AndroidManifest.xmlへの追加
ライブラリを追加したら、次はAndroidManifest.xmlへ必要な情報を追記します。Google Analytics SDK for Androidでは、使用状況をデータ送信するために通信を行う必要があります。以下のパーミッションを追加しておきましょう。

	<uses-permission android:name="android.permission.INTERNET" />
	<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3.Google Analyticsへのアカウントの登録
Google Analyticsのwebサービスを利用するには、アカウントを登録する必要があります。
アカウントは以下のURLから作成することができます。
http://www.google.com/analytics/

上図の右上の「今すぐお申し込み」からアカウント登録画面に進みましょう。
アカウント登録画面では、ウェブサイトのURLの入力が求められますが、今回はウェブサイトが対象ではないので、ここは適当に入力して構いません。
アカウント名も同じく適当で構いません。
あとは入力を求められる項目に入力し、利用規約に同意すると、プロパティIDを入手すことができます。

上図の赤く塗りつぶした箇所(UA-xxxx-yy)がプロパティーIDとなります。
プロパティーIDはアカウント固有のIDとなっていて、ソースコード上で使用しますので、大切に保管していてくだしあ。

サンプルアプリ作成
入手したプロパティーIDを利用して、アプリケーションの使用状況をトラッキングするサンプルアプリを作成します。
今回作成するサンプルでは、アクティビティを二つ用意し、一つ目のアクティビティにはボタンを3つ用意し、アプリケーションを起動した回数と、各ボタンが押された回数を解析してみます。

public class AnalyzedActivity extends Activity {

    GoogleAnalyticsTracker tracker;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        // トラッカーのインスタンス生成
        tracker = GoogleAnalyticsTracker.getInstance();
        tracker.start("UA-24434459-1",this);
        //tracker.start("UA-24434459-1", 10,this);
	tracker.trackPageView("/AnalyzedActivity");

        Button umi = (Button)findViewById(R.id.umi);
        Button majo = (Button)findViewById(R.id.majo);
        Button gedo = (Button)findViewById(R.id.gedo);

        umi.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
		    	    Intent intent = new Intent(AnalyzedActivity.this, SecondActivity.class);
			    tracker.trackEvent("Button", " Clicked", "umi", 1);
			    intent.putExtra("num", 1);
			    startActivity(intent);
			}
        });

        majo.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
		    	    Intent intent = new Intent(AnalyzedActivity.this, SecondActivity.class);
			    tracker.trackEvent("Button", "Clicked", "majo", 2);
			    intent.putExtra("num", 2);
			    startActivity(intent);
			}
        });

        gedo.setOnClickListener(new OnClickListener(){
			@Override
			public void onClick(View v) {
		    	    Intent intent = new Intent(AnalyzedActivity.this, SecondActivity.class);
			    tracker.trackEvent("Button", "Clicked", "gedo", 2);
			    intent.putExtra("num", 3);
		            startActivity(intent);
			}
        });
    }

    @Override
    protected void onPause() {
      super.onPause();
      //  追跡の結果の送信
      tracker.dispatch();
    }

    @Override
    protected void onDestroy() {
      super.onDestroy();
      //  追跡を停止する
      tracker.stop();
    }
}

10行目でトラッカーのインスタンスを生成しています。
11行目でstart()メソッドを用いてトラッキングを開始しています。start()メソッドには、「Google Analyticsを使用するための準備」で取得したプロパティIDを引数に指定します。
引数の指定方法は以下の2パターンあります。

  1. dispatch()メソッドを用いて手動で送信(13行目)
  2. 第2引数にInt型の値(秒)を指定することで、指定した秒毎にWebへデータを定期的に送信(12行目)

1.を選択した場合は、54行目に示すdispatch()メソッドを用いて、手動でデータを送付するようにします。

trackPageView()メソッド(13行目)は、アプリケーションが起動された回数や、ページに訪問された回数などを記録する際に便利です。メソッドが呼ばれる度に訪問数としてカウントします。
引数に指定するも文字列は、ここではアクティビティの名前を指定していますが、そのページが何のページであるのかがわかるような文字列ならなんでも構いません。

trackEvent()メソッド(23,33,43行目)は、ボタンが押されるなどのイベントを記録する際に便利です。引数はそれぞれ、
trackEvent(カテゴリ,アクション,ラベル,値);
を示しています。サンプルコードでは、カテゴリおよびアクションは”Button”と”Clicked”で共通のものにすることでグループ化し、ラベルはそれぞれのイベント固有にしています。
実際の結果表時に、カテゴリ毎、アクション毎、ラベル毎に、イベント数を表示することができます。値はここでは適当に指定していますが、こちらも結果表示時に「イベントの値」として表示されます。
以下の結果表示画面を見て頂いたほうが、それぞれの役割がわかるかと思います。

なお、トラッキングを終了したいときは、stop()メソッドを使用します。

表示結果は以下のようになります。
結果を表示する場合は、以下のURLにアクセスし、「Analyticsにアクセス」ボタンを押下することで確認できます。ただし、結果はリアルタイムには反映されません(数時間〜最大24時間以内)ので注意が必要です。
http://www.google.com/analytics/
ユーザーサマリ画面では、訪問数やユニークユーザー数などを確認することができます。

▲ユーザーサマリ画面

「コンテンツ」の「トラッキング イベント」では、trackEvent()メソッドで指定した引数(カテゴリ、アクション、ラベル)毎に、イベントの結果を見ることができます。

▲カテゴリ毎のイベントトラッキング結果

▲アクション毎のトラッキング結果

▲ラベル毎のトラッキング結果