Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
adserver 30min
Search
Daisuke Yamazaki
August 22, 2010
Programming
130
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
adserver 30min
広告配信サーバの作り方を30分ほどで説明します。
Daisuke Yamazaki
August 22, 2010
More Decks by Daisuke Yamazaki
See All by Daisuke Yamazaki
ゼロトラブルへの道
yamaz
23
9k
RWC2019 rubyによる超大量データ配信
yamaz
1
210
学び実践してきたこと
yamaz
1
370
スケールアウト再考
yamaz
1
380
RTB 30 min
yamaz
0
120
RailsとCで広告システムを作って起業した話
yamaz
1
350
robust logprocessing
yamaz
1
100
Other Decks in Programming
See All in Programming
今さら聞けないCancellationToken
htkym
0
220
Signal Forms: Beyond the Basics @ngBaguette 2026 in Paris
manfredsteyer
PRO
0
230
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
730
A2UI という光を覗いてみる
satohjohn
1
100
AutonomyとControlのあいだ:Graflowで記述するAIエージェント協調
myui
0
110
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
300
メソッドのジェネリクスでGoの夢は広がるか? / Kyoto.go #65
utgwkk
3
580
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
650
技術記事、AIに書かせるか、自分で書くか? 〜それでも私が自分の手で書く理由〜 / #QiitaConference
jnchito
2
1.3k
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
3.1k
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
220
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
140
Featured
See All Featured
How to Grow Your eCommerce with AI & Automation
katarinadahlin
PRO
1
200
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
570
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
47
8.2k
Practical Orchestrator
shlominoach
191
11k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
190
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.7k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
4k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
1
340
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.5k
Transcript
30分でわかる広告配信 エンジンの作り方 (BTからコンテキスト広告まで) 1 株式会社 スケールアウト 山崎大輔
はじめに 1. 「広告エンジンって実際なにやってるの?」 というのを理解してもらうための内容になってます。 2. 今回説明する実装はコンセプト実装なので、 実際の実装とはかなり違います。 3. するどい突っ込みは大歓迎です。 2
アジェンダ 自己紹介 オンライン広告システムとは 基礎編 広告エンジンの役割
Railsによる実装例 応用編 BT(行動ターゲティング)の実装 コンテキストマッチの実装 まとめ 3
自己紹介 山崎大輔 Twitter: @yamaz Blog : 最速配信研究会 http://d.hatena.ne.jp/yamaz/ 現在:株式会社スケールアウト 代表
1日数億~を超えるような配信をカジュアルに行うための 広告配信システム「ScaleAds」の開発と販売およびコンサル かれこれオンライン広告業界で14年やってます 4
広告ってなんだ? 5 これ (バナー広告)
広告ってなんだ? 6 これ(テキストバナー) リロードすると広告が変わったりします
広告システムの悩み いろいろあります(その1) いろんなクリエイティブのパターンどうする? 通常バナー RSS広告 動画広告
各種モバイル対応 その他新規デバイス対応 (wiiチャネル, オンラインゲーム…) 今回説明しません 7
広告システム実装の悩み いろいろあります(その2) いろいろな配信パターンどうする? コンテンツマッチ(AdSenseみたいなの) ビヘイビアターゲティング(行動ターゲティング) 地域ターゲティング
PV売り 枠売り 上記の組み合わせ その他.. 今回これらを説明します 8
広告エンジンがやってること 配信エンジン ブラウザ 問い合わせ 最適な広告 営業さんは言います 「広告エンジンはユーザに対して 最適な広告を配信してます!」 9 それではわかりません><
最適な広告とは? 1. スケジュールされている広告の中で、 2. その瞬間に配信してもOKなもののうち、 3. その瞬間において一番優先度が高いもの 10
11 ID 期間 配信条件 達成状況 優先度 1 08/01 08/31 100万PV,
女性 11万PV 2 ….. 枠売り, 20~30歳代 10万PV 3 ….. 100万PV, 東京在住 11万PV 4 ….. 1000万PV 438万PV ~ ….. ….. ….. 80 ….. Context(不動産,賃貸) CPC@30円 予算10万 56000円 81 ….. BT(保険) 100万PV 48万PV 82 ….. BT(家電) 200万PV 190万PV スケジュールされている広告の中で 広告エンジンの動き
12 ID 期間 配信条件 達成状況 優先度 1 08/01 08/31 100万PV,
女性 11万PV 2 ….. 枠売り, 20~30歳代 10万PV 3 ….. 100万PV, 東京在住 11万PV 4 ….. 1000万PV 438万PV ~ ….. ….. ….. 80 ….. Context(不動産,賃貸) CPC@30円 予算10万 56000円 81 ….. BT(保険) 100万PV 48万PV 82 ….. BT(家電) 200万PV 190万PV 配信してもOKなもののうち 広告エンジンの動き
13 ID 期間 配信条件 達成状況 優先度 1 08/01 08/31 100万PV,
女性 11万PV 30 2 ….. 枠売り, 20~30歳代 10万PV 3 ….. 100万PV, 東京在住 11万PV 12 4 ….. 1000万PV 438万PV 100 ~ ….. ….. ….. 80 ….. Context(不動産,賃貸) CPC@30円 予算10万 56000円 81 ….. BT(保険) 100万PV 48万PV 35 82 ….. BT(家電) 200万PV 190万PV 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
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
条件評価部 # 配信をしていい広告案件を抽出 grep{|sched| sched.can_delivered?} def can_delivered? return false if
@now > end_at || @now < start_at # 広告案件に付与された複数の条件を評価 constrains.each do |cons| value ||= cons.call(@request) return true if value end return false end 16
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 •IP •Cookie •URL •browser •その他ヘッダ情報
ユーザDB ページ MetaDB IPDB
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
優先度評価部 # 一番優先度が高いものを選択 .max{|sched1, sched2| sched1.priority<=>sched2.priority} 優先度を決定する要素 案件につけられた優先度
クリック単価が高い(優先度高) PV達成がやばい(優先度高) 特別なユーザがアクセスした時(優先度高) 自社稿(優先度低) など 20
クリエイティブ最適化 # 最適なクリエイティブを作成 .to_html デバイス・表示ページにあわせた出力 ユーザに応じた最適化 これだけでまたえらく長い話になるので、 今回は割愛します
21
まとめ 広告配信エンジンのやっていることを 簡単に説明しました。 やってることの大半は条件評価と 案件優先度の比較です 22
まとめ オンラインメディアはマーケターさんがずっと追い求めてきた 「1to1ターゲティング」を「リアルタイムレスポンス」で 可能とする唯一のメディアです。 その中でオンライン広告システムはその一端を担うシステムで、 ビジネスとアカデミックが共存している領域なので、楽しいです。 今回なにかしら興味を持ってもらえたのなら幸いです メンバー募集中です!大量配信・大規模集計やりたい人はぜひ。 バイト・インターンも可です(
[email protected]
まで) 23