みなさん、こんにちは。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
- 
                  技術情報(516)
 - 
                  イベント(193)
 - 
                  カルチャー(50)
 - 
                  デザイン(47)
 
TAG
- "eVTOL"
 - "Japan Drone"
 - "ロボティクス"
 - "空飛ぶクルマ"
 - 5G
 - Adam byGMO
 - AGI
 - AI
 - AI人財
 - APT攻撃
 - AWX
 - BIT VALLEY
 - Blade
 - blockchain
 - Canva
 - ChatGPT
 - ChatGPT Team
 - Claude Team
 - cloudflare
 - cloudnative
 - CloudStack
 - CM
 - CNDO
 - CNDT
 - CODEGYM Academy
 - ConoHa
 - ConoHa、Dify
 - CS
 - CSS
 - CTF
 - DC
 - design
 - Designship
 - Desiner
 - DeveloperExper
 - DeveloperExpert
 - DevRel
 - DevSecOpsThon
 - DiceCTF
 - Dify
 - DNS
 - Docker
 - DTF
 - Expert
 - Felo
 - GitLab
 - GMO AIR
 - GMO AIロボティクス大会議&表彰式
 - GMO DESIGN AWARD
 - GMO Developers Day
 - GMO Developers Night
 - GMO Developers ブログ
 - GMO Flatt Security
 - GMO GPUクラウド
 - GMO Hacking Night
 - GMO kitaQ
 - GMO SONIC
 - GMOアドパートナーズ
 - GMOアドマーケティング
 - GMOイエラエ
 - GMOインターネット
 - GMOインターネットグループ
 - GMOクラウド]
 - GMOグローバルサイン
 - GMOサイバーセキュリティbyイエラエ
 - GMOサイバーセキュリティ大会議
 - GMOサイバーセキュリティ大会議&表彰式
 - GMOソリューションパートナー
 - GMOデジキッズ
 - GMOブランドセキュリティ
 - GMOペイメントゲートウェイ
 - GMOペパボ
 - GMOメディア
 - GMOリサーチ
 - GMO大会議
 - Go
 - GPU
 - GPUクラウド
 - GTB
 - Hardning
 - Harvester
 - HCI
 - iOS
 - IoT
 - ISUCON
 - JapanDrone
 - Java
 - JJUG
 - K8s
 - Kaigi on Rails
 - Kids VALLEY
 - KidsVALLEY
 - LLM
 - MCP
 - MetaMask
 - MySQL
 - NFT
 - NVIDIA
 - NW構成図
 - NW設定
 - Ollama
 - OpenStack
 - Perl
 - perplexity
 - PHP
 - PHPcon
 - PHPerKaigi
 - PHPカンファレンス
 - QUIC
 - Rancher
 - RPA
 - Ruby
 - Selenium
 - Slack
 - Slack活用
 - Spectrum Tokyo Meetup
 - splunk
 - SRE
 - SSL
 - Terraform
 - TLS
 - TypeScript
 - UI/UX
 - vibe
 - VLAN
 - VS Code
 - Webアプリケーション
 - WEBディレクター
 - XSS
 - アドベントカレンダー
 - イベントレポート
 - インターンシップ
 - インハウス
 - オブジェクト指向
 - オンボーディング
 - お名前.com
 - カルチャー
 - クリエイター
 - クリエイティブ
 - コーディング
 - コンテナ
 - サイバーセキュリティ
 - システム研修
 - スクラム
 - スペシャリスト
 - セキュリティ
 - ソフトウェアテスト
 - チームビルディング
 - デザイン
 - ドローン
 - ネットのセキュリティもGMO
 - ネットワーク
 - ビジネス職
 - ヒューマノイド
 - ヒューマノイドロボット
 - プログラミング教育
 - ブロックチェーン
 - ベイズ統計学
 - マルチプレイ
 - ミドルウェア
 - モバイル
 - ゆめみらいワーク
 - リモートワーク
 - レンタルサーバー
 - ロボット
 - 京大ミートアップ
 - 人材派遣
 - 出展レポート
 - 動画
 - 協賛レポート
 - 基礎
 - 多拠点開発
 - 大学授業
 - 宮崎オフィス
 - 展示会
 - 応用
 - 技育プロジェクト
 - 技術広報
 - 採用
 - 採用サイトリニューアル
 - 採用活動
 - 新卒
 - 新卒研修
 - 日本科学未来館
 - 映像
 - 映像クリエイター
 - 暗号
 - 業務効率化
 - 業務時間削減
 - 機械学習
 - 決済
 - 物理暗号
 - 生成AI
 - 視覚暗号
 - 開発生産性
 - 開発生産性向上
 - 階層ベイズ
 - 高機能暗号
 
PICKUP
- 
                  
                    
                                        東京・福島・福岡の専門学校3校でConoHa AI Canvasを用いた講義を実施しました
技術情報
 - 
                  
                    
                                        【協賛レポート・前編】Designship 2025|参加者と“共につくる”デザインのかたち──私たちの挑戦を振り返る
デザイン
 - 
                  
                    
                                        NFSのパフォーマンストラブルに対応した話
技術情報
 - 
                  
                    
                                        Microsoft Entra アプリケーション プロキシ × Windows 統合認証環境での NTLM 廃止影響と対策
技術情報
 - 
                  
                    
                                        GMOインターネットグループ合同テクノロジーインターンシップ2025 体験記~ML/Webコース編①~
カルチャー
 - 
                  
                    
                                        ChatGPTとConoHa AI Canvasで検証:生成AIが変えるクリエイティブ制作
技術情報