Google アナリティクスとの統合

Google アナリティクス プラットフォームでは、多様なデバイスと環境で、企業とユーザーのやり取りを測定できます。Google アナリティクスには、こうしたユーザーとのやり取りを収集、保存、処理、報告するためのリソースが備わっています。

アナリティクス データは、クライアント側とサーバー側で収集(コレクション)できます。

クライアント側アナリティクス コレクション

Google アナリティクスの API と SDK を使用して、ユーザーが企業のコンテンツやマーケティング活動とどのようにやり取りしているかを測定します。Google アナリティクスのユーザー インターフェースでユーザーとのやり取りのデータを表示できます。また、Reporting API を使用してデータを取得できます。クライアント側アナリティクス コレクションの詳細については、クライアントのタイプに応じて次のリンクを選択してください。

  • ウェブ トラッキング(analytics.js) - ウェブサイトやウェブ アプリケーションとユーザーのやり取りを測定します。
  • Android - Android アプリケーションとユーザーのやり取りを測定します。
  • iOS - iOS アプリケーションとユーザーのやり取りを測定します。
  • Measurement Protocol - この低レベル プロトコルを使用して、任意の環境内のユーザーのやり取りを測定します。

サーバー側アナリティクス コレクション

App Engine にはアプリケーション内のイベントをロギングするメカニズムが用意されていますが、Google アナリティクスを使用して Google アナリティクス内で特定のサーバー側イベントをトラッキングすると、次のことが可能になります。

  • 履歴データの分析 - App Engine では、ログファイルの最大日数やサイズを構成できます。この上限を超えると、それらのログファイルにアクセスできなくなります。Google アナリティクスでイベントをトラッキングすることで、過去のイベントを表示できる期間が大幅に長くなります。
  • 重要なイベントのトラッキング - アプリケーションのさまざまなコンポーネントがデータをログファイルに書き込むことによって、ログファイルが冗長になる場合があります。イベント トラッキングを使用することで、重要なイベントを正確に特定し、いくつかのメタデータとともにそれらをトラッキングできます。
  • ユーザー インターフェースの活用 - Google アナリティクスにある高機能のユーザー インターフェースを活用して、これらのサーバー側イベントの可視化、レポート、エクスポートを行います。

サーバー側アナリティクス コレクションを有効にするために、HTTP クライアントを使用して、Google アナリティクスの Measurement Protocol で HTTP リクエストを生成できます。詳細については、Google アナリティクス デベロッパー ガイドのイベント トラッキングをご覧ください。

サンプル アプリケーション

次のサンプル アプリケーションは、App Engine アプリケーション内のイベントをトラッキングする方法を示しています。このアプリケーションは HTTP リクエストを生成し、イベントに関するデータを Google アナリティクスに送信します。

App Engine で Google アナリティクスの Measurement Protocol を使用する前に、次の手順を行います。

  1. ユニバーサル アナリティクス プロパティを作成し、トラッキング ID を取得します

  2. app.yaml 内にこのトラッキング ID の環境変数を含めます。たとえば、このサンプル アプリケーションでは次のとおりです。

    env_variables:
      GA_TRACKING_ID: YOUR-GA-TRACKING-ID
  3. サンプルアプリをローカルで実行する前に、アプリで必要とされる環境変数を次のように設定します。

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    
  4. コマンドラインを使用して、サンプルコードをローカルで実行します。Maven を使用する場合:

    mvn clean appengine:run
    

  5. 次のコードを App Engine アプリケーションに組み込んで、イベント トラッキング データを Google アナリティクスに送信します。

    @SuppressWarnings("serial")
    @WebServlet(name = "analytics", value = "")
    public class AnalyticsServlet extends HttpServlet {
    
      @Override
      public void doGet(HttpServletRequest req, HttpServletResponse resp)
          throws IOException, ServletException {
        String trackingId = System.getenv("GA_TRACKING_ID");
        HttpClient client = HttpClientBuilder.create().build();
        URIBuilder builder = new URIBuilder();
        builder
            .setScheme("http")
            .setHost("www.google-analytics.com")
            .setPath("/collect")
            .addParameter("v", "1") // API Version.
            .addParameter("tid", trackingId) // Tracking ID / Property ID.
            // Anonymous Client Identifier. Ideally, this should be a UUID that
            // is associated with particular user, device, or browser instance.
            .addParameter("cid", "555")
            .addParameter("t", "event") // Event hit type.
            .addParameter("ec", "example") // Event category.
            .addParameter("ea", "test action"); // Event action.
        URI uri = null;
        try {
          uri = builder.build();
        } catch (URISyntaxException e) {
          throw new ServletException("Problem building URI", e);
        }
        HttpPost request = new HttpPost(uri);
        client.execute(request);
        resp.getWriter().println("Event tracked.");
      }
    }

Google アナリティクス管理コンソールで、スパイダーや bot からのトラフィックを除外している場合や、このトラフィックを自動的にフィルタリングする Google アナリティクス 4 を使用している場合、App Engine クライアントからのアナリティクスの結果が表示されないことがあります。このシナリオでは、デフォルトの App Engine ユーザー エージェントが除外されます。App Engine の結果を確認するには、トラッキング データに ua パラメータを含めて、カスタム値を設定します。