【ITニュース解説】AWS Mediatailor : Server Side Ad Integration (SSAI)
2025年09月18日に「Dev.to」が公開したITニュース「AWS Mediatailor : Server Side Ad Integration (SSAI)」について初心者にもわかりやすく解説しています。
ITニュース概要
AWS MediaTailorのSSAI(サーバー側広告挿入)は、広告を動画に直接結合し、視聴者にシームレスな再生を提供する技術だ。本記事では、SSAIを動画プレイヤーに統合するフロントエンド側の手順を解説。セッションURL生成、マニフェスト取得、広告データ処理、ビーコン送信など、実装に必要なステップを具体的に紹介する。
ITニュース解説
Server-Side Ad Insertion (SSAI) とは、動画コンテンツに広告を組み込む技術の一つであり、特にサーバー側でその処理を行う点が特徴である。通常、動画ストリームはメインコンテンツと広告がそれぞれ独立した状態で配信されることが多いが、SSAIではこれらのコンテンツが視聴者のデバイスに届く前に、サーバー上で一つの連続したストリームとして結合される。これにより、動画プレイヤーは広告とコンテンツの間に途切れや読み込みの遅延を感じることなく、シームレスな再生が可能となる。ユーザーは広告が動画コンテンツの一部であるかのように体験でき、広告ブロック機能の影響を受けにくいという利点もある。
AWS MediaTailorは、このSSAIを実現するためのクラウドサービスの一つである。この記事では、AWS MediaTailorを活用し、JavaScriptベースのオープンソース動画プレイヤーであるVideo.jsを使って、動画コンテンツに広告を統合する際のフロントエンド側の具体的な手順を解説する。Video.jsは多くのウェブサイトで利用されており、ウェブベースの動画再生において一般的な選択肢の一つである。
SSAIのワークフローを統合するための手順は以下の通りだ。
最初のステップは「セッションURLの生成」である。これは、動画プレイヤーから広告統合サービスであるMediaTailorに対し、広告サーバーとの連携を開始するための初期のリクエストとなるURLを作成する作業だ。このURLは通常、元の動画コンテンツのマニフェストURL(動画プレイヤーが動画を再生するために必要な情報が書かれた「指示書」のようなもの)の一部を特定の形式に置き換えることで生成される。例えば、DASH形式の動画であれば「/dash/」の部分を「/session/」に、HLS形式であれば「/master/」の部分を「/session/」にそれぞれ置き換える。このセッションURLの生成方法は、利用するコンテンツ配信ネットワーク(CDN)やバックエンドの構成によって異なる場合があるため、場合によってはバックエンドチームと連携して生成することもある。
次に、「マニフェストとトラッキングURLを取得するためのPOSTリクエスト」を行う。セッションURLが準備できたら、それをMediaTailorに対してPOSTリクエストとして送信する。このリクエストには、広告配信の判断に必要な情報をキーと値のペアで含める必要がある。特に、ユーザーエージェント(ウェブブラウザの種類やバージョンを示す情報)は広告サーバーが適切な広告を選定するために不可欠な情報だが、ウェブブラウザからのリクエストでは通常自動的に送信されるため、明示的に指定する必要はない場合が多い。
このPOSTリクエストに対する「レスポンスの解析」が次のステップとなる。MediaTailorからのレスポンスには、主要な情報として「manifestUrl」と「trackingUrl」が含まれている。manifestUrlは、メインの動画コンテンツと広告が既に結合された新しい動画ストリームのURLを指す。このURLを動画プレイヤーに渡すことで、シームレスに広告が挿入された動画が再生される。一方、trackingUrlは広告に関連する詳細情報や、広告の表示状況を追跡するためのビーコン(後述)に関する情報が含まれるURLである。これらのURLは通常、レスポンスでは相対パスで提供されるため、セッションURLを生成した際に使用したドメインを先頭に付加して完全なURLにする必要がある。取得したmanifestUrlは、Video.jsのplayer.src()メソッドに渡すことで、統合された動画コンテンツが再生される。
続いて、「トラッキングURLの活用」に進む。trackingUrlは、広告に関するあらゆる情報を管理する「真の情報源」となる。このURLは、動画がプレイヤーにロードされた後でなければ呼び出してはならない。先に呼び出してしまうと、MediaTailorから空のレスポンスが返ってくる可能性があるため、loadeddataイベントなどの動画のロード完了を待ってからGETリクエストを送信することが重要だ。このリクエストに対するJSON形式のレスポンスには、「avails」というキーの下に、動画内の広告挿入ポイント(広告ポッド)に関する情報が配列として含まれている。この情報には各広告ポッドの開始時間(startTimeInSeconds)が含まれているため、これを利用して動画プレイヤーのシークバー上に広告マーカー(広告の開始位置を示す目印)を表示させることが可能となる。
最後のステップは「ビーコン送信(クライアントサイドトラッキング)」である。ビーコンとは、広告の表示開始や完了といった視聴者の広告エンゲージメントに関する情報を広告サーバーに報告するための小さな信号のことだ。AWS MediaTailorはサーバーサイドとクライアントサイドの両方でビーコンをサポートするが、ここではプレイヤー側で処理するクライアントサイドのビーコンについて説明する。トラッキングURLから得られる広告ポッドの情報には、各広告内の具体的なトラッキングイベント(trackingEvents)が含まれている。それぞれのトラッキングイベントには、そのビーコンを送信すべき開始時間(startTimeInSeconds)と、実際にビーコンを送信するためのURL(beaconUrls)が定義されている。動画プレイヤーは、timeupdateイベント(動画の再生位置が更新されるたびに発生するイベント)などを利用し、現在再生中の時間が特定のビーコンの送信時間に達したら、そのビーコンURLに対してGETリクエストを送信する。timeupdateイベントは1秒間に数回発生するため、同じビーコンを複数回送信しないよう、ロジックを慎重に実装する必要がある。
これらのステップを通じて、セッションURLの生成から始まり、結合されたマニフェストの読み込み、広告関連データの処理、シークバーへの広告マーカー表示、そしてクライアントサイドでのビーコン追跡まで、AWS MediaTailor SSAIの完全な統合を実現できる。これにより、ウェブサイト上でシームレスな広告体験を提供する動画プレイヤーを構築することが可能となるのだ。