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 を使用する前に、次のことを行います。

  • サンプルアプリをローカルで実行する前に、アプリで必要とされる環境変数を次のように設定します。

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    
  • コマンドラインを使用して、サンプルコードをローカルで実行できます。次に例を示します。

    go run analytics.go
    

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

    
    // Sample analytics demonstrates Google Analytics calls from App Engine flexible environment.
    package main
    
    import (
    	"errors"
    	"fmt"
    	"log"
    	"net"
    	"net/http"
    	"net/url"
    	"os"
    
    	uuid "github.com/gofrs/uuid"
    
    	"google.golang.org/appengine"
    )
    
    var gaPropertyID = mustGetenv("GA_TRACKING_ID")
    
    func mustGetenv(k string) string {
    	v := os.Getenv(k)
    	if v == "" {
    		log.Fatalf("%s environment variable not set.", k)
    	}
    	return v
    }
    
    func main() {
    	http.HandleFunc("/", handle)
    
    	appengine.Main()
    }
    
    func handle(w http.ResponseWriter, r *http.Request) {
    	if r.URL.Path != "/" {
    		http.NotFound(w, r)
    		return
    	}
    
    	if err := trackEvent(r, "Example", "Test action", "label", nil); err != nil {
    		fmt.Fprintf(w, "Event did not track: %v", err)
    		return
    	}
    	fmt.Fprint(w, "Event tracked.")
    }
    
    func trackEvent(r *http.Request, category, action, label string, value *uint) error {
    	if gaPropertyID == "" {
    		return errors.New("analytics: GA_TRACKING_ID environment variable is missing")
    	}
    	if category == "" || action == "" {
    		return errors.New("analytics: category and action are required")
    	}
    
    	v := url.Values{
    		"v":   {"1"},
    		"tid": {gaPropertyID},
    		// Anonymously identifies a particular user. See the parameter guide for
    		// details:
    		// https://developers.google.com/analytics/devguides/collection/protocol/v1/parameters#cid
    		//
    		// Depending on your application, this might want to be associated with the
    		// user in a cookie.
    		"cid": {uuid.Must(uuid.NewV4()).String()},
    		"t":   {"event"},
    		"ec":  {category},
    		"ea":  {action},
    		"ua":  {r.UserAgent()},
    	}
    
    	if label != "" {
    		v.Set("el", label)
    	}
    
    	if value != nil {
    		v.Set("ev", fmt.Sprintf("%d", *value))
    	}
    
    	if remoteIP, _, err := net.SplitHostPort(r.RemoteAddr); err != nil {
    		v.Set("uip", remoteIP)
    	}
    
    	// NOTE: Google Analytics returns a 200, even if the request is malformed.
    	_, err := http.PostForm("https://www.google-analytics.com/collect", v)
    	return err
    }
    

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

Go の App Engine フレキシブル環境