こんにちは。 Kaizen Platform で 動画広告をPDCAするプロダクト「Kaizen Ad」のプロダクトマネージャをしている渡辺です。今回は、 Kaizen Ad で制作した動画広告のパフォーマンスを一覧比較できるツール「Creative Performance Report」の紹介をしたいと思います。
Creative Performance Report とは
Creative Performance Report とは、Kaizen Ad において、配信先プラットフォームから動画広告のパフォーマンスを収集し、クリエイティブ単位で比較可能なビューを提供する機能です。
Kaizen Ad は、動画広告を作りたい人(広告主や代理店)が、制作指示書(動画の仕様書に相当するもの)を作成して素材データと共にアップロードすると、GH(Growth Hacker)ネットワークに参加するクリエイターが原則5営業日で動画を制作・納品してくれるサービスです。「速く・安く・簡単に」をテーマに、高品質な動画を制作できるプラットフォームを目指して開発しています。
Kaizen Ad のサービスサイトはこちら: https://ja.kaizen-ad.com/
「動画をつくる」部分にフォーカスすると「動画制作のクラウドソーシング」ということになりますが、Kaizen Ad のカバー範囲には制作プロセスだけでなく、制作した動画の配信実績を収集し、比較・分析することで広告効果を改善していく部分も含まれます。
Kaizen Ad では納品された動画をダウンロードすることなく Facebook や Instagram, Youtube といった動画配信メディアへ直接アップロードすることができます。アップロード時に配信先メディアのアクセストークンを取得することで、Creative Performane Report は広告キャンペーンで使用された動画の配信実績を自動的に収集し、クリエイティブ単位に集計して複数動画のパフォーマンスを横断的に比較する機能を提供します。
Creative Performance Report の構成要素
Kaizen Ad の Creative Performance Report は、データ収集を担当する「Collector」、データ集計を担当する「Aggregator」、データ表示を担当する「Report View」の3つで構成されています。
Collector
Collector は、あらかじめ保存されたアクセストークンを利用して配信先メディアからパフォーマンス情報を定期的に収集し、Raw Data DB(Google BigQueryで実装)に格納するコンポーネントです。2019年春現在、接続先メディアとして Facebook (Facebook および Instagram) と Google (Youtube) に対応しています。Raw Data DB に格納されるデータは各プラットフォーム固有の情報を保持します。
利用者数や広告キャンペーンの増加に応じて Collector の取得データ量は日々増加します。日次のデータ収集が翌日になっても終わらないようだと、時系列データとして必要なものが揃えられなくなるため、 Collectorではデータ収集処理を並列化することでパフォーマンスを確保しています。
Aggregator
Aggregator は、Raw Data DB に格納されたデータを集計・変換し、Summary Data DB に移し替える役割を担当しています。メディア固有のデータを Summary Data に変換する過程でデータ構造を正規化し、Report Viewer に対し統一されたフォーマットでデータを提供する責務を負います。
Collector と同じように Summary Data の生成も決められた時間内に完了する必要がありますが、Aggregator はデータの集計・変換を一定回数の BigQuery のクエリで行うことで、データ量の増加に比例せずにほぼ一定した時間での処理の完了を実現しています。また、Summary Data の構造やデータ粒度は Report Viewer の進化に合わせて変化していくため、必要に応じて再集計できるようになっています。
Report Viewer
Summary Data DBに保存されたデータを表示します。Firebase でホスティングされたSPAで機能を提供しています。レポートデータの表示機能と、CSVフォーマットで集計データをエクスポートする機能を持ちます。集計処理は Aggregator がすべて事前に済ませているため、APIコール時にデータを都度集計することはありません。
先月のブログ記事「 React + GraphQL から成る Kaizen Ad のフロントエンド 」でも紹介した通り、API Server とフロントエンドアプリケーションとの通信では GraphQLを使用し、データアクセスをバッチ化することで軽快なレスポンスを実現しています。
設計コンセプト
Creative Performance Report は、設計コンセプトとして「データソースの多様化」と「UIの頻繁なアップデート」にすばやく追従できる拡張性の高さを重視して設計されています。
データソースの多様化に備える
今日(2019年4月現在)のデジタル広告市場は Google と Facebook の2社がシェアの大半を占めている状態ですが、動画広告のニーズ全体が盛り上がっており、今後も継続的に対応メディアが増え、それぞれに対応していく必要が生まれると考えました。データの収集・集計部分は Plaggable な構造にしておいて、新しいデータソースを素早く追加できるようにしています。
UI開発のスピードと柔軟性を保つ
わかりやすく使いやすい Report Viewer はプロダクトの競争力を大きく高めます。UI はデータ構造よりも速いサイクルで進化するので、分析対象データの構造や日々の運用が UIのアップデート可能性を阻害しないような設計にしておく必要があります。表示するデータ項目に変更があるたびにデータを再取得する設計にすると「過去に取得したデータが互換性を失う」「運用開始後のデータ再取得に伴う高負荷やサービスとしてのダウンタイムが発生する」といった問題が起こります。
Creative Performance Report では収集プロセス(Collector と Raw Data DB) と 集計プロセス(Aggregator と Summary Data DB)を分割し、UIを刷新するたびに Raw Data を取り直す必要がない構造になっています。