みなさん、こんにちは。GMOインターネットグループ株式会社の斉藤です。
・・・、私はいつも上記のご挨拶でブログを書き始めますが、ちょっと変わりましたね。お気づきになりましたか?
弊社は2022年9月1日付けで商号変更いたしました。
GMOインターネット、「GMOインターネットグループ株式会社」に商号変更
https://www.gmo.jp/news/article/7964/
-旧: GMOインターネット株式会社
-新: GMOインターネットグループ株式会社
引き続き、GMOインターネットグループ株式会社をよろしくお願いいたします。
目次
Google アナリティクス4とAPI
前回の「CryptoName byGMOでNFTドメインを取得しよう」と言う記事でご紹介したCryptoName byGMOですが、サイトへのアクセスを調べるためにGoogle アナリティクス4(GA4)を導入しています。これは以前からあるユニバーサルアナリティクス(いわゆるグーグルアナリティクス)の置き換えに当たるものです。
GA4にはそのデータにアクセスするためのAPIが用意されていて、Google Analytics Data API(GA4)と呼ばれるものです。このAPIを利用するとGA4に関する様々なパラメータが取得できるので、マーケティング分析などの強い味方になります。
現在APIで実行可能なのはレポートの作成のみです。レポートの作成というのは、GA4上のデータをいろいろ組み合わせて一つのレポートを作成し、APIの出力結果として受け取るものです。
- Google Analytics Data API(GA4)
https://developers.google.com/analytics/devguides/reporting/data/v1
早速使ってみましょう。今回はPHPを利用します。
サンプルコードを実行してみよう
1. GCPアカウントの作成
Google Analytics Data APIはGoogle Cloud Platform(GCP)のサービスの一つです。GCPのアカウントをお持ちでない方はまずアカウントを作成する必要があります。既存のGoogleアカウントを連携できるので、お持ちであればすぐです。
2. APIを有効にする
次に、オフィシャルドキュメントのQuick Startにある以下の[Enable the Google Analytics Data API v1]ボタンからGCPのプロジェクトを作成します。これを実行するとGCPアカウントにテストプロジェクトが作成されて、APIの実行準備が整います。GCPに慣れているのであれば自分でプロジェクトを作成してもOKです。
この後、自動的に「credentials.json」というファイルがダウンロードされます。このファイルは認証ファイルです。重要なので忘れずに保存するようにしましょう。
3. GA4にGCPサービスアカウントを設定する
一つ前のステップでダウンロードしたファイルを開くと、[email protected]
のようなメールアドレスに似た文字列があります。これを以下の手順でGA4のユーザーとして追加します。権限は閲覧者のみで構いません。
4. Google Analytics Data API を実行する
これでGoogle Analytics Data API を実行する準備が整いましたので、実際にスクリプトを書いていきましょう。
2. で保存した credential.json もスクリプトと同じフォルダに入れておきます。
PHPでAPIを実行する場合、オフィシャルのライブラリがあるのでこれを利用します。まず以下のようにcomposerをインストールします(インストール済みの場合はスキップします)。
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('sha384', 'composer-setup.php') === '55ce33d7678c5a611085589f1f3ddf8b3c52d662cd01d4ba75c0ee0459970c2200a51f492d557530c71c15d8dba01eae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"
そしてGoogle Analytics Data APIのライブラリをインストールします。
./composer.phar require google/analytics-data
ライブラリをロードするには、composerのお約束で vendor/autoload.php
をrequireします。ライブラリのクラス群はGoogle\Analytics\Data\V1beta\
名前空間の下にありますので、これらを必要に応じてuseします。
また、GA4にアクセスするための認証情報をセットする必要があります。これは環境変数で行いますが、PHPの場合はputenv関数を使うとスクリプト内から環境変数をセットできます。
<?php
require 'vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/ga4-api-******-**********.json');
use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
...
最初に触れたとおり、現在APIで実行できるのはレポートの作成のみです。早速作ってみましょう。
レポートの作成はGA4の「プロパティ」に対して実行されます。プロパティにはIDが割り振られていて、それを確認します。IDは「管理」のページなどにあります。
これらを踏まえ実際のスクリプトを記述していきますが、やることはとても単純で、BetaAnalyticsDataClient
を作成してrunReport()
を実行するだけです。ただ渡すパラメータが少し複雑なので、実際にコードを見てもらう方が理解が早いかと思います。
試しに日付毎のセッション数をレポートにしてみたいと思います。
<?php
require 'vendor/autoload.php';
use Google\Analytics\Data\V1beta\BetaAnalyticsDataClient;
use Google\Analytics\Data\V1beta\DateRange;
use Google\Analytics\Data\V1beta\Dimension;
putenv('GOOGLE_APPLICATION_CREDENTIALS=' . __DIR__ . '/ga4-api-******-**********.json');
$client = new BetaAnalyticsDataClient();
$response = $client->runReport([
'property' => 'properties/320171287',
'dateRanges' => [
new DateRange([
'start_date' => '7daysAgo',
'end_date' => 'today',
]),
],
'dimensions' => [
new Dimension(
[
'name' => 'date',
]
),
],
'metrics' => [
new Metric(
[
'name' => 'sessions',
]
),
]
]);
foreach ($response->getRows() as $row) {
foreach($row->getDimensionValues() as $v) {
print "dimension: " . $v->getValue() . "\t";
}
foreach ($row->getMetricValues() as $v) {
print "metric:" . $v->getValue() . "\n";
}
}
出力例は以下です(数値はダミーです)。
dimension: 20220905 metric:99999
dimension: 20220906 metric:99999
dimension: 20220901 metric:99999
dimension: 20220831 metric:99999
dimension: 20220902 metric:99999
dimension: 20220904 metric:99999
dimension: 20220903 metric:99999
“dateRange”, “dimensions”, “metrics”でレポートに出力される項目を決めることができます。今回使ったdate, sessions以外にも、GA4でおなじみのディメンションを使うことができます。一覧が以下のスキーマドキュメントにありますので確認しましょう。
https://developers.google.com/analytics/devguides/reporting/data/v1/api-schema
またrunReport()関数に渡せるパラメータもいろいろあります。今回私は実際の業務で dimensionFilter
を使いました。これは名前の通りディメンションを絞り込んで出力させるもので、たとえばURL毎のセッション数を出すときに、特定の文字列を含むURLだけを抽出することができたりします。これは以下のようなコードになります。
$client->runReport([
"dimensionFilter" => new FilterExpression([
'and_group' => new FilterExpressionList([
'expressions' => [
new FilterExpression([
'filter' => new Filter([
'field_name' => 'landingPage',
'string_filter' => new StringFilter([
'match_type' => MatchType::BEGINS_WITH, // 前方一致
'value' => '/hogehoge', // フィルタする文字列
])
]),
]),
],
]),
]),
...
パラメータの一覧は以下のページで見ることができます。
https://developers.google.com/analytics/devguides/reporting/data/v1/basics
おわりに
ユニバーサルアナリティクスの提供終了がアナウンスされてからしばらく経ちました(提供終了は2023年7月1日)ので、Googleアナリティクス4への移行も進んでいるのではないでしょうか。
Googleアナリティクス4はマーケティングツールではありますが、Webやアプリに関わるエンジニアにとっても有用なツールです。自分が関わっているプロダクトに関する数字を把握するのは大事です。
Google Analytics Data APIを使うとスクリプトを活用した高度な分析が行えるでしょう。
またレポートのオートメーションもやりやすくなります。
PHPはWeb系エンジニアで書ける人が多いので、そのスキルをそのままデータ分析に生かせるメリットは大きいでしょうか。この記事とサンプルコードがお役に立てば幸いです。
それではまた次回お目にかかりましょう。
ブログの著者欄
採用情報
関連記事
KEYWORD
CATEGORY
-
技術情報(417)
-
イベント(153)
-
カルチャー(35)
-
デザイン(14)
TAG
- 5G
- Adam byGMO
- AI
- AWX
- BIT VALLEY
- blockchain
- ChatGPT
- cloudnative
- CloudStack
- CM
- CNDO
- CNDT
- CODEGYM Academy
- ConoHa
- CS
- CSS
- CTF
- DC
- Designship
- DevSecOpsThon
- Docker
- DTF
- GitLab
- GMO Developers Day
- GMO Developers Night
- GMO GPUクラウド
- GMO Hacking Night
- GMO kitaQ
- GMO SONIC
- GMOアドパートナーズ
- GMOアドマーケティング
- GMOイエラエ
- GMOグローバルサイン
- GMOデジキッズ
- GMOペイメントゲートウェイ
- GMOペパボ
- GMOリサーチ
- Go
- GTB
- Hardning
- Harvester
- HCI
- iOS
- IoT
- ISUCON
- JapanDrone
- Java
- JJUG
- K8s
- Kids VALLEY
- LLM
- MetaMask
- MySQL
- NFT
- NVIDIA
- OpenStack
- Perl
- PHP
- PHPcon
- PHPerKaigi
- QUIC
- Rancher
- RPA
- Ruby
- Selenium
- splunk
- SRE
- SSL
- Terraform
- TLS
- TypeScript
- UI/UX
- VLAN
- VS Code
- インターンシップ
- オブジェクト指向
- オンボーディング
- お名前.com
- カルチャー
- コンテナ
- スクラム
- スペシャリスト
- ソフトウェアテスト
- チームビルディング
- ドローン
- ネットワーク
- プログラミング教育
- ブロックチェーン
- ゆめみらいワーク
- リモートワーク
- 基礎
- 多拠点開発
- 大学授業
- 宮崎オフィス
- 応用
- 技育プロジェクト
- 新卒
- 暗号
- 機械学習
- 決済
PICKUP