DFPの設定と運用方法。重要キーワードや配信フローについて


## DFP(Double Click for Publisher)とは

DFP(Double Click for Publisher)というgoogleが提供している広告配信サービスです。
バナーを置くだけなら、imgタグを置くだけでよいのですが、その表示回数、クリック数などのレポートを作るのは大変です。さらに、「2回に1回だけ表示したい」など配信数を制御するとなるとそのロジックを組むだけでも大変な工数がかかります。
DFPを使ってそのバナー画像を配信することで、表示回数、クリック数などの「レポート」。この場所に、このくらい、このペースで配信したい！という「配信制御」が可能になります。

## DFPの概要

「広告配信って、営業や営業事務の人がやるんでしょ？関係ないじゃん」とは言っても、結局設定するのはエンジニアです。仕組みが分かってないと、設定するのもテストするのも大変なので、以下DFPで重要になってくるキーワード（登場人物）と、広告の入稿フローを説明します。
広告は『「会社」が「在庫」に対して、「オーダー」を作成する」ことで出稿されます。
広告を配信する際に最低限必要な要素は「広告ユニット」「会社」「オーダー」「広告申込情報」「クリエイティブ」です。

## DFPの登場人物・重要ワード

### 在庫
自分達が持つ広告配信枠です。サイト内（アプリ内）にタグを挿入することで在庫がつくられ、そこで設定したパラメータによって、配信制御をおこなうので、エンジニアにとって一番関わりの深い項目です。
DFPの上部に「在庫」というタブがありますが、このタブの中では「広告ユニット」「プレースメント」「カスタムターゲティング」を主に使っていきます。

#### 広告ユニット
広告枠です。広告ユニットごとにコードを埋め込むことになります。

#### プレースメント
いくつかの広告ユニットをまとめたものです。Adsenseでいうカスタムチャネルみたいなものです。「広告の種類（バナー、インフィードetc）」「所有サイト」など、同じ広告を流したい単位でグループ化することになります。配信するときに毎回広告ユニットを一個ずつ選んでもいいんですが、プレースメントを使うと時短になります。コードは関係ありません。

#### カスタムターゲティング
広告リクエストに付与するパラメータを定義しておくところです。たとえば、広告ユニットを3つ用意して、それぞれにtop, middle, bottomのパラメータを送るように設定しておくと、広告配信時にtopの枠にだけ配信するということが可能です。広告ユニットやページ単位でパラメータを渡すコードを埋め込む必要があります。

### 会社（広告主）
広告を出稿する人です。テスト用の広告主を作っておくと良いと思います。「管理者」のタブの「会社」で追加できます。「会社」にはタイプがあり、それによってできることが変わってきます。基本的には「広告主」で良いです。

### オーダー
広告の要件のうち、「誰が」「どういう目的で」を保持しておくものです。オーダーには複数の広告申込情報が紐付きます。広告主とオーダー名を入力します。

#### 広告申込情報
広告の要件を定義したものです。「いつ」「どこに」「何を（クリエイティブ）」「いくらで」「どれくらいの量を」「どのくらいの期間で」配信したいのか？を定義します。
ここで「いくら（単価）」を設定する話がでましたが、DFPに単価を設定しても実際に金銭が動くわけではなく、あくまでレポートするときの係数です。


#### クリエイティブ
広告申込情報の「何を」に当たるものです。バナーだったり、自作したhtmlコードだったりします。自作する場合は、styleの設定を全て書かないといけないので、サイトになじませるのは結構大変です。

## DFPの設定方法

1. 新しい広告ユニットを作成します。「プレースメント」「空き枠をadsenseで埋めるか？」など設定できます
2. 「タグを作成」して、どこかにコードを貼っておきます。
3. カスタムターゲティング（Key-Value)を作成します。{名前=env, 定義した値=development, production}と{名前=pos, 定義した値=top,middle,bottom}
4. 1ページに複数のユニットを貼る場合は、作成したタグをうまい具合にマージし、カスタムターゲティングをセットします。

webサイトの場合、広告ユニットのタグはこんな感じになるとおもいます。テストしやすいように、```env```のカスタムターゲティングを設定しておくことをお勧めします。

```html
<head>
<script type="text/javascript">
googletag.cmd.push(function() {
	// 広告ユニットを登録
    googletag.defineSlot('広告ユニット名', [広告ユニット幅, 広告ユニット高さ], '表示するdivのid').addService(googletag.pubads());
    googletag.pubads().enableSingleRequest();
    var adSlot1 = googletag.defineSlot('/6355419/Travel/Europe/France/Paris',[300, 250], "banner1"); 
    // スロットレベルの独自のカスタムターゲティングを指定
    adSlot1.addService(googletag.pubads());
    adSlot1.setTargeting("pos", ["top"]);
    
    // すべてのスロットに対するカスタムターゲティングを指定
    googletag.pubads().setTargeting('env', ["production"])
    
    // 空の時はdivをたたむ
    googletag.pubads().collapseEmptyDivs(true);
    googletag.enableServices();
});
</script>
</head>
<body>
	<div id="表示するdivのid">
      <script type="text/javascript">
        googletag.cmd.push(function() { googletag.display('表示するdivのid'); });
      </script>
    </div>
	<div id="banner1" style="width:300px; height:250px;">
      <script type="text/javascript">
        googletag.cmd.push(function() { googletag.display('banner1'); });
      </script>
    </div>
</body>
```

## DFPの広告出稿フロー
DFPの広告枠のタグをサイトに埋め込むことができたら、実際に広告を出稿してみます。

1. 「管理者」タブ > 会社　で「会社」を登録します
2. 「配信」タブ > 私のオーダー情報　で「オーダー」を作成します
3. 「オーダー」の名前、会社名を埋めて、1つ目の「広告申込情報」もうめます。広告申込情報の最下部でターゲティングを設定できるので、テスト時はカスタムターゲティング（Key-Value)のenvがdevelopmentという条件を追加しておきます。「オーバーブッキングです」と警告が出るかもしれませんが、これは広告ユニットのリクエスト実績がないためです。無視してよいです。
4. 「配信」タブ > クリエイティブ　で「クリエイティブ」を作成します。バナーの場合は「イメージ」を選択して、必要な情報をうめて、「広告申込情報」に紐付けます
5. 「オーダー」に必要な「広告申込情報」が全て設定できたら、『承認待ち』状態になっていると思うので、「オーダーを承認」します。すると、『準備完了』ステータスになります
6. 『準備完了』になったら、「広告申込情報」で指定した時間まで待ち、指定した広告ユニットがあるページを表示します。このとき設定が間違っていないのに広告が表示されないことがあります。これは、「タグをうめたのに、広告ユニットを一度も表示してなくて、ユニットが有効であることをdfpが認識していない。」「dfpのキャッシュが残ってる」などの理由が想定できます（確かな情報ではありません）。だいたい、何回かリクエスト送って放置すると配信されるようになります。

## DFPのレポート
配信」タブ > すべてのオーダー情報 からオーダーを選択し、「レポートを実行」でレポートを出力してくれます。レポートをエクスポートして、広告を出稿してくれた会社に送ることになると思います。


## DFPをマスターして収益をあげよう
上記に紹介した以外に、ユーザーごとにフリークエンシーキャップを付けたり、レポートのテンプレートを作成できたり、いろいろな機能があります。DFPをマスターして、低コストで収益を上げていきましょう