Brightcoveの動画再生をGTM/GA4で計測する方法

Googleアナリティクス4
実装

記事公開日:

Brightcoveの動画再生をGTM/GA4で計測する方法

ウェブサイト上に動画を埋め込む時、Youtubeの埋め込み動画がよく使われますが、それと同じくらいビジネス用途ではBrightcoveが使われています。Youtubeの埋め込み動画であれば、Googleアナリティクス4やGoogleタグマネージャーを使えば簡単に再生計測を行うことができますが、Brightcoveで再生計測を行う場合、一手間加える必要があります。

本記事では、Brightcoveで配信する埋め込み動画の再生計測をGTM/GA4の環境下で行うときのベストプラクティスについて紹介します。


Brightcoveとは?

単純に動画を配信するだけであれば、Webサーバー上に動画ファイルを置き、HTMLから<video>タグで読み込むことで実現できます。ただし、この方法では、インターネット回線が安定した固定回線であっても、不安定なモバイル回線であっても、同じ動画ファイルを参照することになり、動画が快適に再生できるか否かはユーザーの閲覧環境に依存します。

また、回線速度の問題をクリアしたとしても、動画ファイルは容量が大きいため、ディスクサイズを多く消費してしまったり、サーバーのインターネット回線の帯域を多く使ってしまい、その他のページの閲覧にも支障が出てくるかもしれません。

Brightcoveは、動画配信のためのプラットフォームであり、閲覧環境に合わせて最適な速度で動画を配信することができます。それだけでなく、大企業のウェブサイトなどでは、サイト内に数100個程度の動画が存在することもありますが、そのようなエンタープライズ級の用途であっても動画を適切に管理できるCMS的な機能も備わっています。

数個の動画をWebサイトに埋め込むだけであれば、Youtube動画の埋め込み機能を使うだけで十分なケースも多いですが、主にエンタープライズのシーンでは、Youtubeの埋め込み動画ではなく、Brightcoveが用いられている印象です。

Brightcoveの計測データ

Brightcoveは、動画の管理・配信だけに限定されたツールではなく、配信した動画のパフォーマンスレポートも充実しています。例えば、動画の表示回数、再生回数、表示時間、エンゲージメントスコア、平均視聴時間、再生到達率などの動画再生に関わる指標を、動画単位・国単位・デバイスカテゴリ単位・流入元チャネル単位・OS単位などでレポートを表示することができます。

一方で、Brightcove内で見ることができるデータは、Brightcoveの保持する情報のみとなります。例えば、「ある特定のページを閲覧した人の再生状況を知りたい」「会員登録した人がどういう動画を見ていたか知りたい」といったように、サイトのその他の行動データと紐づけたパフォーマンスを確認することができません。これを実現するには、Brightcoveの計測データではなく、Web解析ツールの計測データを主とし、ここにBrightcoveの動画に対するユーザーの行動データを追加する必要があります。

以降では、Googleタグマネージャーを使ってGoogleアナリティクス4を導入しているケースを想定し、Brightcoveの動画再生データをGA4で計測する方法を紹介します。

Brightcove側の設定

Brightcoveには、プラグイン機能が備わっており、公式が「Googleタグマネージャー」用のプラグインを公開しています。プラグインを使うには、以下の手順で設定を進めます。

Brightcoveの管理画面から、「Players」>「プラグイン」と進みます。

続いて、「プラグインの追加」>「Brightcove プラグイン」と進めます。

そして、「Brightcove プラグイン」で「Google Tag Manager」を選択します。「オプション欄」には、Googleタグマネージャーのデータレイヤー変数にどのような情報を連携するかを指定します。オプション欄の指定方法は次のセクションで詳しく説明します。

BrightcoveのGTMプラグインにおけるオプション設定

公式ヘルプ記載のオプション設定

GTMプラグインで利用可能なオプションは多数準備されており、公式ヘルプでは、以下のようなJSONテキストを例として挙げています(「your Google Tag Manager id」のみ、ご自身のGTMコンテナIDに変更する必要があります)。

{
  "tracker": "your Google Tag Manager id",
  "paramsToTrack": {
    "bcvideo_video_seconds_viewed": "video_seconds_viewed",
    "bcvideo_video_playhead": "video_playhead",
    "bcvideo_account": "account",
    "bcvideo_player": "player",
    "bcvideo_player_name": "player_name",
    "bcvideo_video": "video",
    "bcvideo_video_name": "video_name",
    "bcvideo_session": "session",
    "bcvideo_platform_version": "platform_version",
    "bcvideo_range": "range",
    "bcvideo_video_duration": "video_duration",
    "bcvideo_video_percent_viewed": "video_percent_viewed",
    "bcvideo_error_code": "error_code",
    "bcvideo_video_milestone": "video_milestone",
    "bcvideo_destination": "destination"
  },
  "eventsToTrack": {
    "video_impression": "Video Impression",
    "video_view": "Video View",
    "video_complete": "Video Complete",
    "play_request": "Play Request",
    "video_engagement": "Video Engagement",
    "ad_start": "Ad Start",
    "ad_end": "Ad End",
    "player_load": "Player Load",
    "error": "Error"
  }
}

簡単に説明すると、このJSONテキストの中の「paramsToTrack」で指定している項目がディメンションとなりデータレイヤー変数にここで指定したデータレイヤー変数名でGoogleタグマネージャーに渡されます。また、「eventsToTrack」で指定している項目がGTMのカスタムイベントとして連携される動画イベントを表しています。

「eventsToTrack」の行を削除すれば、該当アクションは、GTMには渡されません。

本記事推奨のオプション設定例

これらの項目名(プロパティ)は固定ですが、値として設定している文字列は、データレイヤー変数で使われる文字列となっています。このまま利用するのも良いですが、データレイヤー変数名「account」などはその他のデータレイヤー変数と被ってしまうことも考えられることと、「Brightcove」のものであることが分かりにくいので、本記事では以下のJSONを使うことを推奨します(ただし、既に設定済みの場合は無闇に変えるべきではありません)。

また、「eventsToTrack」は、カスタムイベント名を指している訳ではなく、カスタムイベント名を変更することはできないようなので、本記事ではBrightcoveの公式ヘルプのままとしています。

{
  "tracker": "your Google Tag Manager id",
  "paramsToTrack": {
    "bcvideo_video_seconds_viewed": "bcvideo_video_seconds_viewed",
    "bcvideo_video_playhead": "bcvideo_video_playhead",
    "bcvideo_account": "bcvideo_account",
    "bcvideo_player": "bcvideo_player",
    "bcvideo_player_name": "bcvideo_player_name",
    "bcvideo_video": "bcvideo_video",
    "bcvideo_video_name": "bcvideo_video_name",
    "bcvideo_session": "bcvideo_session",
    "bcvideo_platform_version": "bcvideo_platform_version",
    "bcvideo_range": "bcvideo_range",
    "bcvideo_video_duration": "bcvideo_video_duration",
    "bcvideo_video_percent_viewed": "bcvideo_video_percent_viewed",
    "bcvideo_error_code": "bcvideo_error_code",
    "bcvideo_video_milestone": "bcvideo_video_milestone",
    "bcvideo_destination": "bcvideo_destination"
  },
  "eventsToTrack": {
    "video_impression": "Video Impression",
    "video_view": "Video View",
    "video_complete": "Video Complete",
    "play_request": "Play Request",
    "video_engagement": "Video Engagement",
    "ad_start": "Ad Start",
    "ad_end": "Ad End",
    "player_load": "Player Load",
    "error": "Error"
  }
}

設定が完了したら、Brightcoveで「保存」と「変更の公開」を忘れないようにしましょう。「変更の公開」をしたあと、数分程度のタイムラグのあと、変更が反映されます。

オプション設定時の注意点: コンテナID

1サイトに複数のGTMコンテナを設定している場合でも、最終的には、データレイヤー変数名が同一であれば、どれか1つのGTMコンテナIDを指定しておけば、その他のGTMコンテナでも利用することができます。ただし、データレイヤー変数名をカスタムで変更しているものがある場合、反映されないので、注意しましょう。

オプション設定時の注意点: データレイヤー変数のキー名

「本記事推奨のオプション設定例」でJSON設定を行なった場合、データレイヤー変数に連携される情報は、以下のような内容になります。

{
  "event": "video_impression",
  "eventCategory": "Video",
  "eventAction": "Video Impression",
  "eventLabel": "GA4 BigQueryのクエリコスト節約法(サンプリングテーブルの作成)",
  "customDimensions": {
    "bcvideo_account": "6310142655001",
    "bcvideo_destination": "http://localhost:8000/services/service2.html",
    "bcvideo_platform_version": "6.65.3",
    "bcvideo_player": "players.brightcove.com/6310142655001/default_default",
    "bcvideo_player_name": "Brightcove Default Player",
    "bcvideo_session": "f778b5c29932d21142a1c659",
    "bcvideo_video": "6308116920112",
    "bcvideo_video_duration": 690.533,
    "bcvideo_video_milestone": "",
    "bcvideo_video_name": "GA4 BigQueryのクエリコスト節約法(サンプリングテーブルの作成)",
    "bcvideo_video_percent_viewed": "",
    "bcvideo_video_playhead": "",
    "bcvideo_video_seconds_viewed": ""
  },
  "gtm.uniqueEventId": 6
}

「paramsToTrack」で指定したディメンションは、データレイヤー変数には、「customDimensions」というオブジェクトの中に渡されること、「eventCategory」「eventAction」「eventLabel」には、Brightcove標準の値が入ってくること、「event」(カスタムイベント名)は固定値となっていることに注意しましょう。

GA4/GTMの設定

基本的な設定方針

Googleタグマネージャーでは、「BrightcoveのGTMプラグインにおけるオプション設定」で指定したデータレイヤー変数名・カスタムイベント名で変数・トリガーを作成した上で、Googleアナリティクス4イベントタグを作成していけばOKです。

GA4におけるYoutube動画の「測定機能の強化イベント」では、

  • 動画の再生が開始されたとき
  • 動画の再生時間の10%、25%、50%、75%以降まで進んだとき
  • 動画が終了したとき

の3つのタイミングでGA4にイベントが送信されます。また、イベントパラメーターとして、

  • video_current_time
  • video_duration
  • video_percent
  • video_provider
  • video_title
  • video_url
  • visible

のパラメーターが設定されます(公式ヘルプ参照)。

具体的な設定例

Youtube動画の「測定機能の強化イベント」と同等の実装をBrightcoveで行うのであれば、次のような設定を行うことになります(データレイヤー変数やトリガーの設定は一部のみ抜粋しています)。

データレイヤー変数の作成

下記の動画タイトル以外にも、「動画ID」「動画の長さ」「現在の視聴パーセント」「現在の視聴時間」についてもデータレイヤー変数を作成しましょう。

「動画の長さ」変数を整数に変換する

GA4における「測定機能の強化イベント」では、「video_duration」パラメーターは整数になっている一方で、Brightcove標準のデータレイヤー変数では、小数も含んだ数値となっています。両者を揃えるために、整数に変換します。

トリガーの作成

Brightcoveの出力するイベントに従ってトリガーを作成します。再生開始や再生開始の場合は、イベント名を指定するのみですが、再生進捗については、Brightcoveは1%刻みでデータレイヤー変数に情報を送信するので、その中から、Youtube動画の「測定機能の強化イベント」に合わせて視聴パーセントが10%・25%・50%・75%のもののみが反応するようにトリガーを設定します。

タグの作成

GA4における「測定機能の強化イベント」のパラメーター仕様に合わせて、GA4のイベントタグを設定します。video_providerパラメーターには、Youtubeの場合「youtube」という値が入ってくるので、ここでは、Brightcoveの動画であることが分かるように固定値で「Brightcove」としています。

また、video_urlパラメーターに設定すべき適切なURLがBrightcoveでは存在しないですが、下記の添付のように「https://studio.brightcove.com/products/videocloud/media/videos/{{Brightcove - Video ID}}」という値を設定しておくことで、Brightcove管理画面の動画詳細ページのURLとなりますので、何かと都合が良いかと思います。また、このURLから動画IDも特定することができるので、Brightcoveのデータと突合することもしやすくなります。

設定時の注意点

まず1つ目は、イベントパラメーターの設計についてです。Brightcove専用のイベントパラメーターについては定義がありませんが、Youtube動画であろうと、Brightcove動画であろうと、ユーザーの行動としては、「動画の再生を開始する」「動画に対してエンゲージメントする」「動画の再生を完了する」という同一の行動となります。そのため、できるだけ、Youtube標準の「測定機能の強化イベント」に沿ったイベントパラメーター設計を心がけるべきです。

2つ目は、"video_duration"パラメーターのデータ型が小数と整数でYoutubeとBrightcoveで異なっている点です。BigQueryではこれらは別のフィールドになってしまいます。「ミリ秒単位で見なければいけない」という要求がない限りは統一してしまうのが良いでしょう。

3つ目は、カスタムイベント名とデータレイヤー変数名です。Brightcoveの管理画面で設定した内容とGoogleタグマネージャーの設定内容を合わせる必要があります。また、再掲にはなりますが、既にBrightcoveの管理画面でJSON設定を行なっている場合は、それを無闇に書き換えてしまうと、既存のその他の計測内容にも影響を及ぼしてしまうものになるので、注意して行いましょう。

まとめ

今回は、Brightcoveの動画の再生計測をGA4で行う方法について解説しました。広告代理店やWeb制作会社のような立場でGoogleアナリティクスのタグ実装をしている人の中には、Brightcoveの管理画面がどのようになっているか知らない人も多いかと思います。そんな中で、GA4移行に伴い、Brightcoveのタグ実装について困っている人の助けになればと思います。

一方で、Brightcoveとユニバーサル・アナリティクスの連携は、Googleタグマネージャーのデータレイヤー変数を介したものだけではありません。直接Brightcoveとユニバーサル・アナリティクスをリンクさせ、Googleタグマネージャーを介せず再生計測を行う方法もあります。今回のBrightcoveだけに限らない話ですが、まずは現状のUAイベントがどのように送信されているのか、きちんと把握するところからGA4移行を始めるようにしましょう。