戯言

つらつらと気づいたことを書いていきます。人狼とか。

スポンサーサイト


上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

GoogleAnalyticsのリアルタイムAPI Java版の使い方 step3


前回の続きです。前回記事はこちら

5.コーディング


ここから、ようやくコーディングの話題となります。準備が長かったですね。。。

コーディングですが、あくまで私がこうやったらできたというだけで、他にもいろいろな書き方があると思うので、あくまで参考程度にしてください。

まずは、一気にコードを。
※エラー処理、例外処理などは省略
JsonFactory JSON_FACTORY = JacksonFactory.getDefaultInstance();
HttpTransport HTTP_TRANSPORT = GoogleNetHttpTransport.newTrustedTransport();

Credential credential = new GoogleCredential.Builder().setTransport(HTTP_TRANSPORT)
			.setJsonFactory(JSON_FACTORY)
			.setServiceAccountId("**************@developer.gserviceaccount.com")
			.setServiceAccountScopes(Collections.singleton(AnalyticsScopes.ANALYTICS_READONLY))
			.setServiceAccountPrivateKeyFromP12File("************.p12")
			.build();

Analytics analytics = new Analytics.Builder(HTTP_TRANSPORT, JSON_FACTORY, credential)
  			.setApplicationName(APPLICATION_NAME)
  			.build();

String profileId = "99999999";
String dimensions = "ga:pageTitle,ga:pagePath";
String sort = "ga:pageTitle";

RealtimeData realtimeData = analytics.data().realtime()
			.get("ga:" + profileId, "ga:activeVisitors")
			.setDimensions(dimensions)
			.setSort(sort)
			.execute();

まずは、Credentialオブジェクトを作成します(1-9行目)。認証用のオブジェクトであり、作成には、step2 4.コーディング時に必要な情報の①秘密鍵ファイルと、②Service accountのIDが必要になります。上記コード例のように、setterを次々に指定して、オブジェクトを作成してください。

次に、Analyticsオブジェクトを作成します(11-13行目)。先のCredentialオブジェクトと、アプリケーション名を指定します。アプリケーション名は何でもいいようです。他サイトのコード例では"MyCompany-ProductName/1.0"の形式を目にしましたが、このアプリケーション名がどこで利用されているのかは調べていません。

そして、Analyticsオブジェクトを使用して、リアルタイムデータを取得します(15-24行目)。ここでは、取得する対象のAnalyticsのビューIDを指定し、取得する情報、どう細分化するか、ソート順、件数などを指定します。コード例のように、setterで各種情報を指定した後に、executeして、取得できます。

AnalyticsのビューIDは、step2 4.コーディング時に必要な情報の③です。
dimensions、sortは、なんとなくわかると思います。このrealtimeDataオブジェクトに、各種リアルタイムのアクセス情報が入っていますので、getterを利用して必要な情報を取り出して下さい。

ベータ版利用の認証が済んでいない場合は、ここでエラーオブジェクトを返してきます。RealTime以外のAnalytics情報は取得できるが、リアルタイム情報だけ取得できないという場合は、ベータ版の利用が認証されていない状態なので、認証が完了するのを待つしかありません。

では、ステキなリアルタイムAnalyticsライフを。




スポンサーサイト

GoogleAnalyticsのリアルタイムAPI Java版の使い方 step2


前回の続きです。前回記事はこちら

2.リアルタイムAPIベータ版利用登録


Google Analytics のリアルタイムAPI(Google Analytics Real Time Reporting API v3)は、まだベータ版(2013年10月時点)です。そして、他のAnalyticsのAPIとは異なり、利用するための登録が必要になります。

登録ページはこちらです。
https://docs.google.com/forms/d/1qfRFysCikpgCMGqgF3yXdUyQW4xAlLyjKuOoOEFN2Uw/viewform

登録してから、APIが利用できるようになるとメールが届きますが、メールが届くまでに、私の場合は2日ほどかかりました。
早くメールをもらうためにも、英語で登録した方が良いと思います。登録時に必須で書かなければならない項目は多くないので、面倒でも英語で登録しましょう。

また、APIs Console Project Number には、step1でGoogle API consoleに登録した際に払い出された番号を指定します。

メールが届かなくても、準備やコーディングはできるので、さっさと登録を済ませてコーディングに取り掛かりましょう。
メールが届かない限り、実行時にエラーになりますが。。。それまでにやることはたくさんあります。


3.クライアントライブラリのダウンロード



Java版のjarファイルをダウンロードします。最新版は以下のサイトの「Download the Google Analytics API v3 Client Library for Java」のリンクにあります。
https://developers.google.com/api-client-library/java/apis/analytics/v3

展開すると、多くのjarファイルなどがありますが、必須なものは以下です。執筆時点(2013年10月)では、バージョン1.17.0でした。
google-api-services-analytics-v3-rev67-1.17.0-rc.jar
google-api-client-1.17.0-rc.jar
google-oauth-client-1.17.0-rc.jar
google-http-client-1.17.0-rc.jar
jsr305-1.3.9.jar

また、データの受け渡しの形式に応じて、以下のjarファイルが必要になります。
私は、Jackson2を使いました。

google-http-client-gson-1.17.0-rc.jar (when using GSON)
gson-2.1.jar

google-http-client-jackson2-1.17.0-rc.jar (when using Jackson 2)
jackson-core-$2.1.3.jar

google-http-client-jdo-1.17.0-rc.jar (when using JDO)
jdo2-api-2.3-eb.jar

他のjarファイルは、AndroidやGoogle App Engine などの利用用途に応じて必要になってきます。

使っていないjarファイルが存在していることに抵抗がなく、何を使えばよいかよくわからない場合は、全部のjarファイルを登録しても構いません。


4.コーディング時に必要な情報の確認


この手順は、Application Type によって、多少変わってきます。私は、Service account を使用したので、その手順を説明します。
Service account では、①秘密鍵ファイル、②Service accountのID、③AnalyticsのビューID、がコーディング時に必要です。

①は公開鍵暗号方式の認証で必要となるファイルであり、利用側(るる鯖側)では秘密鍵を保持しておき、この鍵を使ってAnalytics情報の利用認証を行います。秘密鍵をもっていること=Analytics情報へのアクセス権を有する ということになるので、この秘密鍵は絶対に他人に渡したりしないで下さい。

秘密鍵は、step1のプロジェクト登録の手順で作成済みのp12拡張子のファイルです。
秘密鍵は、Google API console から再作成することもできます。

②Service accountのIDも、コーディング時に必要になってきます。これは、step1のGoogle API consoleで確認できます。
ClientIDの内容ではなく、Email addressをIDとして使用します。紛らわしい…。
**************@developer.gserviceaccount.comの形式のものです。

次に③AnalyticsのビューID(profileID)を確認します。これはAnalyticsのビューごとに割り当てられている番号ですが、どこに情報があるのかが非常にわかりにくいです。

Analyticsにログインして、

 アナリティクス設定→(画面右側の)ビュー設定→ビューID

にあります。

以上の情報を押さえておいて下さい。

GoogleAnalyticsのリアルタイムAPI Java版の使い方 step1


Google Analytics のリアルタイムAPI(Google Analytics Real Time Reporting API v3) を使用して、るる鯖全体の総アクティブユーザ数と、ページごとのユーザ数をリアルタイムに表示してみました。(公開時のブログはこちら) 

リアルタイムAPIは、まだベータ版でもあり、提供元Googleのドキュメントは英語しかありません(2013年10月時点)。そのため、今回はリアルタイムAPIを使用するまでに、私が踏んだ手順を、簡単にですがまとめてみます。Java版を利用しています。

まずは、利用するまでのおおよその流れです。

①事前準備
1.Google API consoleへのプロジェクト登録
2.リアルタイムAPIベータ版利用登録
3.クライアントライブラリのダウンロード、ビルドパスにAPI追加
4.コーディング時に必要な情報の確認
5.コーディング
- Credentialオブジェクト作成
- Analyticsオブジェクト作成
- リアルタイムデータの取得!

見てわかるとおり、コーディングする前の準備作業がいろいろと面倒です。
次から、一つひとつを説明していきます。

1.Google API consoleへのプロジェクト登録


まずは、Google API console に、プロジェクトを登録します。登録したプロジェクトごとに、APIの利用回数(※リアルタイムAPIには1日間のAPI利用数などに制限があります)や、認証情報などを管理されるので、まずはプロジェクトを作成してください。

Google API console の URL はこちらです
https://code.google.com/apis/console/

登録したプロジェクトでは、次の設定をします。
・左の Services メニューから、Analytics API を ON にして、Analytics API を使えるようにします。
・API Access メニューから、OAuth 2.0 のクライアントIDを作成します。

クライアントID 作成時には、Application Type を次の3つの中から選びます。選ぶ基準は下記のような感じですが、私は Service account しか試していないので、細かい違いについては割愛しますが、ソースの書き方も変わってくるので、適切に選択してください。

・Web application ・・・ ウェブブラウザ経由でAPIを利用する場合
・Service account ・・・ エンドユーザがAPIを利用する代わりに、特定のサービスがAPIを利用する場合
・Installed application ・・・ 個別ソフトウェア、携帯アプリなどからAPIを利用する場合

Application Type によって、Analytics情報にアクセスする際の認証の仕組みが変わってきます。
るる鯖では、るる鯖自体が定期的にAnalytics情報を取得してるる鯖のページを更新しており、エンドユーザはるる鯖にアクセスしてその情報を閲覧しています。

エンドユーザ ⇔ るる鯖 ⇔ Analytics情報

この場合、るる鯖だけがAnaytics情報を取り扱えればよいため、るる鯖のみに認証の仕組みを導入すればよく、エンドユーザには何の手順も必要ありません。
このような場合は、Service account を選択すると良いでしょう。

Service account を選択すると、p12拡張子のファイルをダウンロードすることになります。このファイルは後で利用するので、大切に保存しておいてください。このファイルは、パスワードなどと同様で、他人に渡してはならない情報です。

一方、エンドユーザのブラウザから、直接APIを利用する場合(例えば、サイトのアクセス解析を超便利にできるシステムを作って、利用者の自サイトのアクセス解析で広く利用してもらいたい場合など)は、エンドユーザ自身がシステムを使って自サイトのAnalytics情報にアクセスする必要があり、個々のエンドユーザにAPI利用の認証をさせることになります。この場合は、Web application を選択します。
誰でもが自サイトのAnalytics情報にアクセスできたら困るので、システムを利用する前に、そのシステムが自サイトのAnalytics情報を利用してよいかを確認するための認証です。

準備の一段階目だけで長くなってしまいました。続きはまた書きます。




上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。