Opt Technologies Magazine

オプトテクノロジーズ 公式Webマガジン

ダッシュボード系プロダクト「Adteras」の紹介

alt

ビジネステクノロジー開発部の開発事例としてダッシュボード系プロダクト『Adteras(アドテラス)』を紹介します。

あいさつ

こんにちは、Opt Technologies の@t-mochizukiです。

2022年1月からダッシュボード系プロダクト『Adteras(アドテラス)』の開発チームに入り、Adterasの開発・運用に携わっています。

Adteras とは

Adterasはインターネット(本文ではネットと省略します)上でクライアント向けのレポートを提供するウェブアプリケーションです。社内に蓄積したデータとAdterasアカウント設定(本文ではアカウント設定と省略します)を基にレポートを提供します。弊社での手作業によるレポート作成を削減しています。

レポートはアカウント設定やAdteras上のフィルタ機能、集計機能、対比機能で調整できます。アカウント設定はAdterasの管理画面で設定でき、フィルタ機能、集計機能、対比機能はAdteras上での操作により設定できます。Adteras上での操作による設定データはURLのクエリパラメータに残り、その設定データから設定を再現したり共有したりすることができます。

レポートにはインプレッション数*1、クリック数*2、コンバージョン数*3などがあります。

一般的に、インプレッション数、クリック数のようなネット広告に関するデータは媒体アカウントで保持され、コンバージョン数のようなランディングページに関するデータは広告効果測定ツールやアクセス解析ツールのアカウント(本文ではツールアカウントと省略します)で保持されます。

ビジネステクノロジー開発部が開発しているプロダクト一覧のPerformance Platform(本文ではPPと省略します)は媒体アカウントやツールアカウントが保持するデータを蓄積するプロダクトです。AdterasはPP APIからレポートで使うデータを取り込みます。Adteras上での機能名はデータインポートです。

使用している技術

バージョン管理システムはGitです。2022年10月26日現在のメインブランチのコミット数は6555、イニシャルコミットの日付は2018年10月8日です。

使用しているフレームワーク、プログラミング言語とクラウドサービスを下記に記します。

  • フロントエンド
    • React
    • PrimeReact
    • TypeScript
  • バックエンド
    • Ruby on Rails
    • Ruby
  • インフラ
    • AWS CDK
    • TypeScript
    • Shell Script
    • AWS
      • Amazon ECS
      • CloudFront
      • S3
      • RDS
      • Amazon EventBridge
      • CloudWatch
      • など

主要機能とそれを実現する技術

データインポート

主な機能はデータインポートです。データインポートはバッチ処理です。主な処理は次のようになります。

  1. PP APIからデータを取得する
  2. PP APIから取得したデータとカテゴリ条件をつき合わせる
  3. PP APIから取得したデータをグループ化して集計してDBに登録する

手短に各ステップについて解説します。

PP APIからデータを取得する

まず、アカウント設定を基にAdterasはPP APIからレポートに使うデータを取得します。そのデータは媒体ID、媒体アカウントID、キャンペーンID、広告グループID、広告ID、デバイス種類、配信実績の発生日でグループ化して集計したものになります。

例えば、媒体ID、媒体アカウントID、キャンペーンID、広告グループID、広告ID、配信実績の発生日が同じインプレッション、クリック、コンバージョンなどはデバイス種類ごとにグループ化して集計したものになります。

PP APIのレスポンスデータを単純化したものは次のようになります。

{
  "データ": [
    {
      "フィールズ": {
        "媒体ID": 1,
        "アカウントID": 2,
        "キャンペーンID": 3,
        "広告グループID": 4,
        "広告ID": 5,
        "デバイス種類": 1,
        "配信実績の発生日": "2022-09-01",
        "インプレッション": 100,
        "クリック": 50,
        "コンバージョン": 1
      }
    },
    {
      "フィールズ": {
        "媒体ID": 1,
        "アカウントID": 2,
        "キャンペーンID": 3,
        "広告グループID": 4,
        "広告ID": 5,
        "デバイス種類": 2,
        "配信実績の発生日": "2022-09-01",
        "インプレッション": 50,
        "クリック": 30,
        "コンバージョン": 3
      }
    }
  ]
}
PP APIから取得したデータとカテゴリ条件をつき合わせる

Adterasのユーザーはデータをグループ化する条件を独自に定義できます。Adteras上での機能名はカテゴリ条件です。カテゴリ条件は媒体ID(に一致する)、媒体アカウントID(に一致する)、キャンペーン名(を含む)、広告グループ名(を含む)、広告名(を含む)、デバイス種類(に一致する)の条件を組み合わせて定義します。

例えば、4つの条件を組み合わせた場合のカテゴリ条件は次のようになります。

  • 媒体IDが1に一致する
  • 媒体アカウントIDが2に一致する
  • キャンペーン名に資料請求を含む
  • デバイス種別がスマートフォンに一致する

すべての条件に一致するデータは同じグループになります。ただし、複数のカテゴリ条件を満たすデータが存在する場合は総計(すべてのカテゴリ条件の実績を集計したもの)が不正な値になってしまうのでエラーになります。

PP APIから取得したデータをグループ化して集計してDBに登録する

DBに登録するものは日別実績、日別コンバージョン別実績、クリエイティブ実績、クリエイティブ実績コンバージョン地点別です。

日別実績はAdterasアカウントID、媒体ID、カテゴリ条件ID、配信実績の発生日が同じ実績をグループ化して、グループ内の実績を集計したものです。

日別コンバージョン別実績は日別実績ID、コンバージョン地点IDが同じ実績をグループ化して、グループ内の実績を集計したものです。

クリエイティブ実績はAdterasアカウントID、媒体ID、カテゴリ条件ID、配信実績の発生月、キャンペーンID、広告グループID、広告IDが同じ実績をグループ化して、グループ内の実績を集計したものです。

クリエイティブ実績コンバージョン地点別はクリエイティブ実績ID、コンバージョン地点IDが同じ実績をグループ化して、グループ内の実績を集計したものです。

まとめ

今回はビジネステクノロジー開発部の開発事例としてダッシュボード系プロダクト『Adteras(アドテラス)』を紹介しました。

Opt Technologies ではエンジニアを募集中です。カジュアル面談も可能ですので、下記リンク先よりお気軽にご応募ください。

*1:ネット広告が表示された回数のこと

*2:ネット広告がクリックされた回数のこと

*3:ランディングページを訪問した人がある条件を満たした回数のこと。例えば、ランディングページで資料が請求された回数のこと