Contenu connexe Similaire à 30分でわかる広告エンジンの作り方 Similaire à 30分でわかる広告エンジンの作り方 (20) 30分でわかる広告エンジンの作り方1. 30分でわかる広告配信
エンジンの作り方
(BTからコンテキスト広告まで)
株式会社
スケールアウト
山崎大輔
1
3. アジェンダ
自己紹介
オンライン広告システムとは
基礎編
広告エンジンの役割
Railsによる実装例
応用編
BT(行動ターゲティング)の実装
コンテキストマッチの実装
まとめ
3
4. 自己紹介
山崎大輔
Twitter: @yamaz
Blog : 最速配信研究会 http://d.hatena.ne.jp/yamaz/
現在:株式会社スケールアウト 代表
1日数億~を超えるような配信をカジュアルに行うための
広告配信システム「ScaleAds」の開発と販売およびコンサル
かれこれオンライン広告業界で14年やってます
4
6. 広告ってなんだ?
これ(テキストバナー)
リロードすると広告が変わったりします
6
9. 広告エンジンがやってること
問い合わせ
ブラウザ
配信エンジン
最適な広告
営業さんは言います
「広告エンジンはユーザに対して
最適な広告を配信してます!」
それではわかりません><
9
11. 広告エンジンの動き
ID 期間 配信条件 達成状況 優先度
1 08/01 100万PV, 女性 11万PV
08/31
2 ….. 枠売り, 20~30歳代 10万PV
3 ….. 100万PV, 東京在住 11万PV
4 ….. 1000万PV 438万PV
~ ….. ….. …..
80 ….. Context(不動産,賃貸) 56000円
CPC@30円 予算10万
81 ….. BT(保険) 100万PV 48万PV
82 ….. BT(家電) 200万PV 190万PV
スケジュールされている広告の中で
11
12. 広告エンジンの動き
ID 期間 配信条件 達成状況 優先度
1 08/01 100万PV, 女性 11万PV
08/31
2 ….. 枠売り, 20~30歳代 10万PV
3 ….. 100万PV, 東京在住 11万PV
4 ….. 1000万PV 438万PV
~ ….. ….. …..
80 ….. Context(不動産,賃貸) 56000円
CPC@30円 予算10万
81 ….. BT(保険) 100万PV 48万PV
82 ….. BT(家電) 200万PV 190万PV
配信してもOKなもののうち
12
13. 広告エンジンの動き
ID 期間 配信条件 達成状況 優先度
1 08/01 100万PV, 女性 11万PV 30
08/31
2 ….. 枠売り, 20~30歳代 10万PV
3 ….. 100万PV, 東京在住 11万PV 12
今回選ばれた広告
4 ….. 1000万PV 438万PV 100
~ ….. ….. …..
80 ….. Context(不動産,賃貸) 56000円
CPC@30円 予算10万
81 ….. BT(保険) 100万PV 48万PV 35
82 ….. BT(家電) 200万PV 190万PV 14
その瞬間において一番優先度が高
いものを配信する
13
14. Railsによる実装例
class AdsvrController < ApplicationController
render :text Schedules.find(:all)
.grep{|sched| sched.can_delivered?}
.max{|sched1, sched2| sched1.priority<=>sched2.priority}
.to_html
end
14
15. Railsによる実装例(解説)
class AdsvrController < ApplicationController
render :text
# 全スケジュールの中から
Schedules.find(:all)
# 配信してよい案件を抽出して
.grep{|sched| sched.can_delivered?}
# 一番優先度が高いものを選択して
.max{|sched1, sched2| sched1.priority<=>sched2.priority}
# 最適なクリエイティブを作成
.to_html
end
# これを超高速に処理するのが広告エンジンです
15
17. BT(行動ターゲティング)の場合
BT_schedule =
Schedule.new(start_at, end_at, :type => :cpm, :goal_pv =>
1000000)
BT_schedule.add_constraint(
Proc.new do
user_behaviers.include?(‘shopping’)
end
)
all_schedules << BT_schedule
17
18. エンジンが取得可能な情報
ページ
問い合わせ
MetaDB
ブラウザ
配信エンジン
•IP ユーザDB
•Cookie
•URL
•browser
•その他ヘッダ情報 IPDB
18
19. CM(コンテンツマッチ)の場合
CM_schedule =
Schedule.new(start_at, :type => :cpc,
:goal_budget => 1000000)
CM_schedule.add_constraint(
Proc.new do
@webpage.content_keywords.include?(‘car’)
end
)
all_schedules << CM_schedule
19
20. 優先度評価部
# 一番優先度が高いものを選択
.max{|sched1, sched2| sched1.priority<=>sched2.priority}
優先度を決定する要素
案件につけられた優先度
クリック単価が高い(優先度高)
PV達成がやばい(優先度高)
特別なユーザがアクセスした時(優先度高)
自社稿(優先度低)
など
20
22. まとめ
広告配信エンジンのやっていることを
簡単に説明しました。
やってることの大半は条件評価と
案件優先度の比較です
22