レスポンスを作成する

アプリケーションは、Google からの入札リクエストを処理した後に、レスポンスを作成して送信する必要があります。このガイドでは、アプリケーションをコーディングしてレスポンスを作成する方法について説明します。

入札レスポンス メッセージを作成する

認定バイヤーは、BidRequest を HTTP POST のメッセージ本文として送信します。アプリケーションから送信するレスポンスでは、Content-Type ヘッダーを application/octet-stream に設定し、シリアル化されたプロトコル バッファで構成されるメッセージ本文を含める必要があります。プロトコル バッファは、realtime-bidding.proto で定義されている BidResponse メッセージです。アプリケーションは、すべての BidRequest に対して解析可能な BidResponse を返す必要があります。タイムアウトや解析できないレスポンスはエラーとみなされ、エラー率が高いビッダーは抑制されます。

インプレッションに入札しない場合は、processing_time_ms フィールドだけを設定し、他のすべてのフィールドは空のままにします。realtime-bidding.proto参照データページから取得できます。

クリエイティブ ID

BidResponse で、buyer_creative_id フィールドを使用してクリエイティブを指定します(64 バイトまで)。類似のクリエイティブでも、重要な特性(サイズ、宣言する URL、クリエイティブ属性、ベンダータイプなど)が異なる場合は、buyer_creative_id に固有の値を指定する必要があります。つまり、次の条件に合致する 2 つの広告にはそれぞれ異なるクリエイティブ ID を指定する必要があります。

  • 外観や動作が異なります。
  • 別の画像にレンダリングします。
  • 異なる手段でレンダリングする(1 つの広告に画像で、もう 1 つの広告に Flash が含まれているなど)。

アプリケーションを設計する際は、送信するクリエイティブの種類に応じて、適切な識別子を生成する体系的な方法を決定する必要があります。

広告の帰属表示

広告の特性とターゲット設定をすべて記述するクリエイティブ属性は、BidResponse.Ad.attribute で宣言する必要があります。宣言する必要がある属性は次のとおりです(サポートされている属性の一覧については、buyer-declarable-creative-attributes.txt をご覧ください)。

  • 7 Tagging: IsTagged
    リマーケティングのための Cookie ID のリストを作成する目的で、広告内にピクセルまたはウェブビーコンが含まれる。
  • 8 Remarketing: IsRemarketing
    広告は Cookie ID またはデバイス ID に基づいてターゲティングされます。この場合、Cookie ID またはデバイス ID のリストは、その購入者が所有または代表するサイトを操作したことのあるユーザーのグループを表します。
  • 9 UserInterestTargeting: IsUserInterestTargeted
    広告は Cookie ID またはデバイス ID に基づいてターゲティングされます。この場合、Cookie ID またはデバイス ID のリストは、購入者が共通のインタレスト グループとして定義した一連のユーザーを表します。
  • 30 InstreamVastVideoType: Vpaid
    広告をレンダリングするには VPAID 対応が必要です。
  • 32 MraidType: MRAID
    広告でレンダリングするには MRAID API が必要です。

以下の属性がサポートされていますが、宣言は不要です。認定バイヤーではこれらの属性が自動的に検出され、宣言された値ではなく、検出された値に基づいてクリエイティブをブロック(または許可)します。 検出されたクリエイティブ プロパティに関するフィードバックを取得する方法については、Creatives API をご覧ください。

  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    広告の表示には Flash のサポートが必要です。
  • 50 RichMediaCapabilityType: RichMediaCapabilityNonFlash
    Flash を使わずに広告を表示できる。
  • 47 RichMediaCapabilityType: RichMediaCapabilitySSL
    広告が SSL ページにレンダリング可能である。なお、認定バイヤーでは、この属性の宣言値が異なるクリエイティブは別のものとして扱われます(個別に審査され、個別の承認ステータスが与えられます)。そのため、同じクリエイティブについて SSL 対応バージョンと非 SSL 対応バージョンの両方で入札する場合、この違いが AdX に正しく反映されるよう、この属性を適宜宣言する必要があります。

Open Bidding のフィールド

Open Bidding に参加しているエクスチェンジとネットワーク入札者が送信する入札レスポンスは、標準のリアルタイム ビッダーに参加している認定バイヤーの入札レスポンスと似ています。Open Bidding のユーザーは少数の追加フィールドを指定できます。また、一部の既存のフィールドは別の用途で使用できます。これには、次のようなものがあります。

OpenRTB 認定バイヤー 詳細
BidResponse.imp[].pmp.deals[].id BidResponse.ad[].adslot[].exchange_deal_id

この入札に関連付けられ、パブリッシャーに報告されるエクスチェンジの名前空間の取引 ID。

BidResponse.seatbid[].bid[].ext.exchange_deal_type BidResponse.ad[].adslot[].exchange_deal_type

パブリッシャーに報告される取引のタイプ。オークションでの取引の処理方法に影響します。

BidResponse.seatbid[].bid[].ext.third_party_buyer_token BidResponse.ad[].adslot[].third_party_buyer_token Open Bidding のビッダーとしてのエクスチェンジが仲介者である場合に、第三者の購入者の情報を識別するためのトークン。サードパーティの購入者から取得します。入札レスポンスで変更せずに Google に渡す必要があります。

推奨事項

  • サーバーで永続的な HTTPS 接続(「キープアライブ」や「接続の再利用」とも呼ばれます)を有効にします。タイムアウトは少なくとも 10 秒に設定します。多くの場合、値を大きくすると効果的です。認定バイヤーはリクエストを頻繁に送信するため、リクエストごとに個別の TCP 接続を確立する際のレイテンシのオーバーヘッドを回避する必要があるため、Google ではアプリケーションの最初のレイテンシ テストでこの点を確認します。
  • ビッダーが落札したタイミングではなくインプレッションのレンダリングをトラッキングするために、オプションのインプレッション トラッキング URL を追加します。落札とレンダリングの間に離脱が生じるため、より正確なトラッキング統計情報が得られます。

  • ビッダーのコードには、サポートが終了したフィールドへの依存関係を含めないようにしてください。依存関係があると、入札がエラーで失敗する可能性があります。
  • BidResponseBidResponse.Ad.widthBidResponse.Ad.height を含めます。複数の広告サイズを含むリクエストに対する BidResponse には、widthheight の値を含める必要があります。そうしないと、オークションから除外されます。
  • レスポンス サイズは 8,000 未満に制限する。レスポンスが非常に大きいと、ネットワーク レイテンシが増加し、タイムアウトが発生する可能性があります。
  • SKAdNetwork アトリビューションを必要とする iOS 広告枠の入札に関するガイドラインに準拠します。

入札レスポンスの例

次の例は、Protobuf リクエストと JSON リクエストの、人が読める形式のサンプルです。

Google

OpenRTB JSON

OpenRTB プロトコル バッファ

重要: サンプルに示されている Protobuf メッセージは、ここでは人が読めるテキストとして表現されています。ただし、これはメッセージが有線で送信される方法ではありません。Google または OpenRTB の Protobuf 形式を使用する場合は、シリアル化された BidResponse メッセージのみを使用できます。

次の C++ コードを使用して、BidResponse メッセージを作成してシリアル化できます。

BidResponse bid_response;
// fill in bid response with bid information
string post_response;
if (bid_response.SerializeToString(&post_response)) {
  // respond to the POST with post_response as the content
} else {
  // return an error to the POST
}

クリエイティブを指定

入札レスポンスでは、落札した場合に配信するクリエイティブを指定します。入札単価には、サポートされている広告フォーマット(AMP、動画、ネイティブ)のいずれかを含める必要があります。この例では、html_snippet フィールドを使用してクリエイティブを指定しています。

または、広告フォーマットに応じて次のいずれかのフィールドを使用してクリエイティブを指定することもできます。

  • SDK によってレンダリングされた広告
    • BidResponse.Ad.sdk_rendered_ad
  • AMP
    • BidResponse.Ad.amp_ad_url
  • 動画
    • BidResponse.Ad.video_url または
    • BidResponse.Ad.video_vast_xml
  • ネイティブ
    • BidResponse.Ad.native_ad

BidResponsehtml_snippet フィールドに HTML スニペットを使用し、自社サーバーでホストされる広告を指定します。ウェブページに挿入された iFrame にスニペットが囲まれているため、ページの読み込み時に広告が取得され、レンダリングされます。HTML スニペットは、広告(バナーまたはインタースティシャル)が iframe 内に正しくレンダリングし、入札対象の広告スロットに適したサイズになるように作成する必要があります。

また、次の場合に、入札レスポンスで宣言されている広告サイズが入札リクエストに含まれるサイズの組み合わせのいずれか 1 つと完全に一致している必要があります。

  • 広告は通常のバナーです(動画、ネイティブ、インタースティシャルではありません)。
  • ビッダーが入札レスポンスでサイズを宣言しています。リクエストに複数のサイズがある場合は、サイズの宣言が必要になります。
  • インタースティシャル広告は例外です。インタースティシャル広告の場合、幅は画面の幅の 50% 以上、高さは画面の高さの 40% 以上にする必要があります。

html_snippet フィールドは、適切にレンダリングされる任意の有効な HTML コードに対応していますが、buyer_creative_id フィールドを指定する際の制限については、BidResponse メッセージを作成するセクションで確認できます。たとえば、広告のレンダリングの一環としてサーバーから取得した URL の引数に追加情報を格納できます。これにより、インプレッションに関する任意のデータを自社サーバーに渡すことができます。

入札レスポンスで返される HTML スニペットに関するポリシーのほとんどは、サードパーティの広告に関するポリシーと同じです。詳しくは、認定バイヤー プログラム ガイドライン第三者広告配信に関する要件広告内のリンク先 URL を宣言するをご覧ください。

マクロを指定する

クリエイティブを定義する HTML スニペットには、マクロと呼ばれる特別な構造を 1 つ以上含めることができます。広告配信時にマクロが値に置き換えられます。たとえば、クライアント入札アプリケーションで、WINNING_PRICE マクロを使用して、広告がオークションで落札された場合に支払った金額を特定できます。このマクロを解析するには、価格確認を復号するアプリケーションを実装する必要があります。詳しくは、価格確認の復号のページをご覧ください。

マクロは、HTML スニペットの一部として %%MACRO%% の形式で指定します。MACRO は、以下の表に記載されているサポート対象のマクロのいずれかです。

第三者配信の広告のクリエイティブでは、CLICK_URL_UNESC マクロまたは CLICK_URL_ESC マクロを使用する必要があります。Google では、CLICK_URL マクロを使ってクリック トラッキングを行っています。

マクロを使用するには、広告にマクロを含めると、ユーザーが広告をクリックしたときに URL が取得されます。フェッチの戻り値は、CLICK_URL に追加した別の URL へのリダイレクトです。

マクロ Description
ADVERTISING_IDENTIFIER 購入者がインプレッションのレンダリング時に iOS IDFA または Android の広告 ID を受け取れるようにします。 詳しくは、広告主 ID の復号をご覧ください。
CACHEBUSTER ランダムな 4 バイトの符号なし整数の文字列表現。
CLICK_URL_UNESC

エスケープ処理されていない広告のクリック URL。スニペットでは、第三者クリック URL のエスケープ バージョンをマクロの直後に配置する必要があります。

たとえば、第三者クリック URL が http://my.adserver.com/some/path/handleclick?click=clk の場合、マクロの呼び出しに続いて、次のコードを第三者クリック URL のシングル エスケープ版とともに使用できます。

<a href="%%CLICK_URL_UNESC%%http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

広告配信時には、次のように拡張されます。

<a href="http://google-click-url?...&ad_url=http%3A%2F%2Fmy.adserver.com%2Fsome%2Fpath%2Fhandleclick%3Fclick%3Dclk"></a>

この URL はまずクリックを Google に登録し、次に第三者のクリック URL にリダイレクトします。

CLICK_URL_ESC

エスケープされた広告のクリック URL。最初に別のサーバーに値を渡してリダイレクトを返す必要がある場合は、CLICK_URL_UNESC の代わりにこの関数を使用します。

たとえば、HTML スニペット内で次のコードを使用できます。

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC%%"></a>

広告配信時には、次のように拡張されます。

<a href="http://my.adserver.com/click?google_click_url=http://google-click- url%3F...%26ad_url%3D"></a>

これにより、クリックが my.adserver.com に登録され、google_click_url パラメータで渡された URL にリダイレクトされるようになります。これは、my.adserver.comgoogle_click_url パラメータのエスケープを解除することを前提としています。

二重にエスケープされた URL を %%CLICK_URL_ESC%% の後に追加できます。my.adserver.com によってエスケープ解除が完了すると、google_click_url の末尾にシングル エスケープ バージョンの URL が残ります。google_click_url が取得されると、もう一度エスケープ解除されてリダイレクトされます。

CLICK_URL_ESC_ESC

広告のダブル エスケープ URL です。最初に別のサーバーに値を渡してリダイレクトを返す必要がある場合は、CLICK_URL_UNESC の代わりにこの関数を使用します。

たとえば、HTML スニペット内で次のコードを使用できます。

<a href="http://my.adserver.com/click?google_click_url=%%CLICK_URL_ESC_ESC%%"></a>

広告配信時には、次のように拡張されます。

<a href="http://my.otheradserver.com/click?google_click_url=http%3A%2F%2Fmy.adserver.com%2Fclick%3Fgoogle_click_url%3Dhttp%3A%2F%2Fgoogle-click-%20url%253F...%2526ad_url%253D"></a>
SCHEME 入札リクエストが SSL を必要としない場合は http:、入札リクエストで SSL が必要な場合は https: に拡張されます。
SITE コンテンツ URL の URL エスケープされたドメイン、または匿名広告枠の匿名 ID。
SITE_URL 非推奨です。同一の機能を提供する SITE マクロに置き換えられます。
TZ_OFFSET タイムゾーン オフセット。
VERIFICATION 本番用のさまざまな値と、検証パイプラインでクリエイティブがスキャンされるタイミングを表します。形式は %%?VERIFICATION:true-val:false-val%% です。true-valfalse-val にはマクロ以外の値(空の文字列も含む)を使用できます。Open Bidding の場合、エクスチェンジでこのマクロを使用することをおすすめします。一度使用すれば、デマンドサイド プラットフォーム側で変更を加える必要はありません。

たとえば、クリエイティブに %%?VERIFICATION:-1:5000%% が含まれる場合、テキストの置換は配信時に 5000、検証パイプラインでは -1 になります。これは、これら 2 つの ping を区別するためです。
WINNING_PRICE エンコードされたインプレッション費用(CPM ではなく CPI)を、アカウントの通貨のマイクロ単位で表したものです。たとえば、5 米ドルの獲得 CPM は 5,000,000 マイクロ CPM(5,000 マイクロ CPI)に相当します。この場合、デコードされた WINNING_PRICE の値は 5,000 になります。 落札価格は CPI(インストール単価)で指定します。
WINNING_PRICE_ESC URL がエスケープされた WINNING_PRICE

マクロ内の URL のエスケープでは、次のスキームが使用されます。

  • スペースはプラス記号(+)に置き換えられます。
  • 英数字(0 ~ 9、a ~ z、A ~ Z)とセット !()*,-./:_~ 内の文字は変更されない。
  • その他の文字はすべて %XX に置き換えられます。ここで、XX は文字を表す 16 進数です。

パブリッシャー向け制限コンテンツ

パブリッシャーは、BidRequest を使用して、許可する広告に関する制限を渡します。次のフィールドの制限を適用する必要があります。

  • allowed_vendor_type
  • excluded_attribute
  • excluded_sensitive_category

1 つのフィールドでは広告の許可される機能を指定し、もう 1 つのフィールドでは許可されない機能を指定します。許可されていない機能を含む広告は返さないでください。ベンダータイプなどの許可される機能については、ベンダータイプが BidRequestallowed_vendor_type リストに含まれている場合にのみ広告を返します。詳細については、BidRequest プロトコル バッファ定義でこれらのフィールドのコメントをご覧ください。

HTML スニペットが BidResponse で返された場合は、BidResponseattributecategoryclick_through_url の各フィールドを正確に設定する必要があります。広告のこれらのフィールドに複数の値がある場合は、すべての値を含める必要があります。詳細については、BidResponse プロトコル バッファ定義でこれらのフィールドのコメントをご覧ください。これらのフィールドが設定されていないレスポンスは破棄されます。

BidRequest.excluded_attribute の値は次のとおりです(publisher-excludable-creative-attributes.txt をご覧ください)。

  • 7 Tagging: IsTagged
    リマーケティングのための Cookie ID リストを作成することを目的としたピクセルやウェブビーコンを含む広告は許可されません。
  • 8 CookieTargeting: IsCookieTargeted
    Cookie ID に基づいてユーザーをターゲティングする広告は許可されません。その Cookie ID のリストは、その購入者が所有または代表するサイトを以前利用したことのあるユーザー群を表しています。
  • 9 UserInterestTargeting: IsUserInterestTargeted
    Cookie ID に基づいてユーザーをターゲティングする広告は許可されていません。ただし、Cookie ID のリストが、購入者が共通のインタレスト グループとして定義したユーザーのグループを表す場合です。
  • 21 CreativeType: Html
    BidResponse.Ad では、広告で html_snippet または snippet_template フィールドを使用できません。
  • 22 CreativeType: VastVideo
    BidResponse.Ad では、広告で video_url フィールドを使用することはできません。
  • 30 InstreamVastVideoType: Vpaid
    広告を表示するために VPAID サポートを必須にすることはできません。
  • 32 MraidType: MRAID
    広告の表示に MRAID API を要求することは禁止されています。
  • 34 RichMediaCapabilityType: RichMediaCapabilityFlash
    広告を表示するために Flash のサポートを必須にすることが許可されていない。
  • 39 RichMediaCapabilityType: RichMediaCapabilityHTML5
    広告を表示するために HTML5 機能を要求することが許可されていません。
  • 48 RichMediaCapabilityType: RichMediaCapabilityNonSSL
    広告で SSL 以外のリクエストを行うことは許可されていません。

そのため、excluded_attribute フィールドに値 7 が含まれている場合、リストの作成にピクセルやウェブビーコンを使用する広告を返さないでください。広告でこのような処理を行う場合は、BidResponse の属性フィールドに値 7 を設定する必要があります。同様に、excluded_attribute フィールドの値が 48 の場合は、SSL ページで表示できる広告のみを返す必要があります(それに応じて、属性 47 の リッチメディアケーパビリティタイプ リッチメディアケーパビリティ SSL を宣言します)。

また、BidRequestexcluded_sensitive_category フィールドでは、参照データページで入手可能な ad-sensitive-categories.txt ファイルのコードが使用されます。以下に、これらのコードの一部について詳細に説明します。

  • 3 Politics
    政治問題や物議を醸す社会問題が対象です。問題に対して公平な立場にあるニュース メディアの広告は対象外です。
  • 4 Dating
    出会い系サービスやオンラインの出会い系コミュニティなどが対象です。
  • 5 Religion
    宗教的な広告や、宗教に関する賛成または反対の見解を宣伝する広告が含まれます。星占いや、特定の教派に反するスピリチュアルは含まれません。
  • 7 Video Games (Casual & Online)
    ビデオゲーム、オンライン ゲーム、ダウンロード可能なゲームが含まれます。ビデオゲーム本体は含まれません。
  • 8 Ringtones & Downloadables
    着信音などのモバイル用アドオン、デスクトップ PC 用のスクリーンセーバーや壁紙、ソーシャル ネットワーク用のプロフィールのレイアウトや画像など、ダウンロード可能なコンテンツ。
  • 10 Get Rich Quick
    迅速な収益化を約束するスキーム。
  • 18 Weight Loss
    減量、ダイエット、および関連する商品やプログラムが対象です。健康的な食事や一般的なフィットネスに関する広告は含まれません。
  • 19 Cosmetic Procedures & Body Modification
    リフト、吸引、レーザー、脱毛、脱毛、タトゥー、美容整形などに関するコンテンツが含まれます。
  • 23 Drugs & Supplements:
    医薬品、ビタミン剤、サプリメント、関連する販売店が含まれます。薬物に関する情報を提供するリソースは含まれません。
  • 24 Sexual & Reproductive Health
    性機能と生殖能力に関する広告が含まれます。通常の妊娠に関するリソースは対象外です。
  • 35 Social Casino Games
    金銭や賞品などの価値を有するものを獲得する機会のない、ギャンブルのシミュレーション ゲーム(ポーカー、スロット、ビンゴ、宝くじ、スポーツ賭博、レース賭博、その他のカードゲーム、カジノゲームなど)が含まれますが、これらに限定されません。
  • 36 Significant Skin Exposure
    胸骨から太ももの中部まで、人体の一部に衣服を着ていない広告画像。下着、水着、ランジェリーなど、透けて見える衣服や、タオルやシーツなどの衣服以外のものを身に付けている広告画像。
  • 37 Sensationalism
    大げさな言葉や画像を含むティーザー メッセージを使用してユーザーの好奇心を刺激し、ユーザーのクリックを促す広告。扇情的な内容(有名人の逮捕、死、離婚など)を中心とした広告や、衝撃的な価値を狙った広告などが該当します。

Open Measurement

Open Measurement を使用すると、モバイルアプリ環境に配信される広告に対して独立した測定サービスと検証サービスを提供する第三者ベンダーを指定できます。

現在サポートされている広告フォーマットには、動画広告、バナー広告、インタースティシャル広告などがあります。これらのフォーマットを含む入札レスポンスで Open Measurement を使用する方法について詳しくは、Open Measurement SDK のヘルプセンター記事をご覧ください。

入札レスポンスの例

以下のセクションでは、さまざまな広告タイプの入札レスポンスの例を示します。

アプリバナー

Google

OpenRTB JSON

OpenRTB プロトコル バッファ

アプリ インタースティシャル

Google

OpenRTB JSON

OpenRTB プロトコル バッファ

アプリ インタースティシャル動画

Google

OpenRTB プロトコル バッファ

アプリ ネイティブ

Google

OpenRTB JSON

OpenRTB プロトコル バッファ

ウェブ動画

Google

エクスチェンジ入札者向けのモバイルウェブバナー

OpenRTB プロトコル バッファ