Retty新卒エンジニアの入社半年間の振り返り〜Part.3〜

Retty新卒エンジニアの堤です。 入社して半年ほど経過して、ようやく仕事も身についてきました。 私はアドテクチーム1に所属しているので、チームの紹介と入社してからの仕事内容についてお話します。

自己紹介

好きな言葉は「ご飯おかわり」です。
しかしオフィスが麻布十番にあるため、量を食べようと思うと、ただでさえ高い食費が大変なことになってしまうのが最近の悩みです。

Rettyに入るきっかけですが、オフィスに話を聞きにいった時期にちょうどアドテクチームの立ち上げの話を聞きました。プロジェクト立ち上げ初期にJoinしたいこと、競技プログラミングをやっていた関係でアドテクに興味があったこと、さらには食べることも大好きだったことからRettyに入ることを決め、アドテクチームに加わりました。

f:id:rettydev:20181204180754j:plain ▲入社式での自己紹介の様子

チームの紹介

広告とは

アドテクチームは、Retty内のインターネット広告を運用する仕事をしています。

インターネット広告と聞くと、あまりいいイメージを持たない人もいるかもしれません。私自身、もともと広告って邪魔だな、と思う派の人間でした。ただ、広告の裏側に触れていくにつれて、広告の面白さを感じるようになってきました。

私が思う広告の面白さ、重要性は大きく3つあります。

  1. 0.1秒間で行われる広告オークションの仕組み
  2. メディアの収益源であるという点
  3. ユーザーと企業とのマッチングという考え方

本記事では広告の説明はメインではないので、1について以下で少しだけお話します。

広告オークションという仕組み

広告も出し方によって大きく2つに分けられて、

  1. 広告主とメディアが直接やりとりし、期間と金額を先に決めて広告を出す
  2. 間に広告事業者が挟まり、ユーザーのメディア訪問の際にリアルタイムに広告を出す

このうち、アドテクチームは2の広告を担当しています。本記事では、特別な記述がなければ、広告はこちらを指すこととします。

メディアで広告が出されると、広告のリクエストが広告事業者に飛びます。事業者側では、

  • メディア
  • 広告枠の過去実績(Click率など)
  • ユーザー属性(Cookieなどから識別)

を判断材料として、広告枠に出稿する広告を募集します。時間内に最も高く入札した広告が、広告枠に出稿する権利を購入します。この広告オークションが事業者ごとに秒間数百、数千万も捌かれています。もともと私自身競技プログラミングにハマっていた時期もあったため、この裏側の仕組みにはわくわくします。

ちなみにこの仕組みはReal Time Bidding(RTB)と呼ばれ、もともとは金融系で用いられていた仕組みだったらしいです。

詳しい仕組みについては「広告 仕組み」などで検索してみてください。

チームの仕事

アドテクチームでは、上記RTBによる広告の運用をしています。主には、

  1. 新規広告事業者と連携し、収益の底上げ
  2. 広告オークションに関わるパラメータの調整
  3. その他収益に繋がりそうなシステムの導入

1, 2については定常的に行っているものになりますが、大きく収益につながることが多いのは3になります。特に、最近ヘッダービディングという仕組みができて取り入れたことにより、10%〜20%の広告収益向上に繋がりました。

収益以外に、広告の質についても責任を負っているので、Rettyのメディアに相応しくない広告(暴力的なものなど)や、強制リダイレクト広告のようなユーザビリティを侵害するような広告をいかに防ぐかなども日々検討しています。

Retty入社後の仕事内容

Rettyに入社してから担当した仕事内容として、細かい仕事を上げると結構ありますが、エンジニアリングの比重が大きそうな以下の3つについてお話します。

  • 広告周りの知識を身につける
  • ヘッダービディングの導入
  • フロアプライスの調整

広告周りの知識を身につける

私は入社前、1ヶ月ほどRettyでインターンをしていました。当時の最初の仕事は広告周りの知識を身につけることでした。広告周りの主な知識として、

  1. 広告の歴史
  2. Rettyで使われている広告運用の方法
  3. 他社の取り組み

の3つが挙げられます。 広告の歴史が何の役に立つのかと最初は思っていました。しかし、広告の歴史は比較的浅いため現在の仕組みにつながるものが多く、最新の仕組みの理解や今後登場する仕組みの予測に役立つ、ということを業務に携わっていて学びました。

ネット広告の歴史はこちらに詳しく書かれています。

https://dmlab.jp/web/history.html

2について、RettyではAdManagerというGoogleの広告配信システムを利用しています。AdManagerは現在多くのメディアで用いられており、機能も豊富となっています。 ただ、機能が豊富すぎるので、最初はとっつくのにかなり苦労しました。 インターン中の半分はAdManagerの使い方を学ぶことに費やしていました。 GoogleがAdManager学習用のサイトを用意している2ので、それを利用して学習しました。

ヘッダービディングの導入

インターン中盤〜入社後にかけて、ヘッダービディングという仕組みの導入・運用を行いました。国内でも早い取り組みだったため模索しながらでしたが、収益改善にもつながったためかなり面白い仕事でした。

ヘッダービディングとは?

ヘッダービディング3の詳細は長くなるので補足ページで確認していただくとして、超ざっくり4というと、

今まで:
広告事業者に広告を要求し、広告が返ってきたらそれを出す。指定価格以上の入札が返ってこなかったら2番目の広告事業者にリクエストを行う。以下繰り返し。
広告が返ってこなかった場合のレイテンシ増大や、2番目の広告事業者の方が入札価格が高かった場合の機会損失が発生。
f:id:rettydev:20181130153808p:plain

ヘッダービディング導入後:
複数の広告事業者を並列で接続し、最も入札価格が高いものを出す。
f:id:rettydev:20181130153819p:plain

といった感じです。

上の説明だけだと、今までなんで並列で繋がなかったの?という疑問が湧きますが、SSPからメディアに入札価格をリアルタイムに送信する仕組みがなかったことが理由です。

苦労した点

ヘッダービディングを入れた当初は、国内での取り組みが少ないため知見が転がっていなかったのが辛いところでした。私が導入を担当したのが海外(Amazon)のヘッダービディング事業者だったため、英語のマニュアルと格闘しつつ、社内のシステムに合うように組み込むことに苦労しました。

特に、別事業者のヘッダービディングと並列で接続したのですが、ヘッダービディングは今までの広告配信の流れに割り込むため、少々組み込み方が複雑になります。他の事業者との並列接続方法などはマニュアルになかったため、

  • 既存の広告配信時系列の把握
  • 他のヘッダービディング組み込みの挙動把握
  • 地道なデバッグ

を繰り返してなんとか組み込むことができました。 これまで非同期通信処理の実装経験がほとんどなかったのですが、複数事業者並列のヘッダービディングの実装では複数の非同期処理が絡んだ処理が入るため、混乱しながら図を描いていたのを覚えています。

今回導入したAmazonのヘッダービディングは一旦導入するとずっと収益を底上げし続けてくれるので、長期的に大きな収益を作ってくれることが期待できます。
ヘッダービディングの組み込みでは、広告関連処理の時間軸を把握する必要があったため、社内の広告リクエストがどのように行われているかの理解が大きく高まりました。

フロアプライスの調整

フロアプライスとは

広告オークションで用いられるパラメータの一つとして、フロアプライスというものがあります。そもそも広告オークションの入札方法は、大きく2つに分類されます。

  1. 1st Price Auction
  2. 2nd Price Auction

1については、一般的なオークションと同様で、最高の入札をした人がその額を支払って購入するもの。2は、最高の入札をした人が2番目の入札額(+1円)を支払って購入するものとなります。 少し例を出すと、

入札額
A: 100円
B: 60円
C: 180円
のとき、

1st Price Auction: Cが180円で購入
2nd Price Auction: Cが101円で購入

となります。ぱっと見だと1の方法が購入される側からすると嬉しく思いますが、2の方が高い入札が行われやすくなります5。 2のとき、フロアプライスというものをメディア側が設定できて、フロアプライス以下の金額では落札されないようになります。 先程の例を用いて、フロアプライスを引いた場合を説明すると、

フロアプライスがX円のときのCの購入額
100円のとき: 101円
150円のとき: 151円
200円のとき: 購入されない

このため、適切なフロアプライスを設定することで広告収益の底上げにつなげることができます。

フロアプライス調整の取り組み

フロアプライスは、もともと調整者の経験と勘によって調整されてきたものでした。しかし、調整にかかる時間的コストや正確性を考えると機械的に行えたほうが適切です。そこで、検討中も含めて以下の3つの方法を取り入れています。

  1. A/Bテストによる調整結果の見える化
  2. 1の結果をもとにした、フロアプライス自動最適化(検討中)
  3. 他社自動最適化ソリューションの導入

現在は1と3を同時に走らせています。A/Bテスト基盤は、Rettyで用いられている既存の配信システムの機能6を用いることで簡単に導入でき、しかもフロアプライス調整以外の施策にも利用できるため効果の高いものとなりました。 このA/Bテスト基盤を用いて現在はまだ手動調整中ですが、既存のフロアプライスと比較して、広告収益の2〜3%の上昇につなげることができました。

現在は、バンディットアルゴリズムを利用して2を実現できないか模索中です。

このように、アドテクチームは直接収益につなげる仕事ができるので、自分の施策・実装が収益にどの程度貢献したかをモチベーションにしながら日々取り組んでいます。

今後について

アドテクチームでは、不適切広告の監視やルーチンワークの自動化など、まだまだやることが山積みとなっています。今後は自分からチーム貢献できる仕事を見つけていけるよう、広告やビジネスの知識もより一層吸収していこうと思います。


  1. 正確には"AdTechnology & Alliance Group"ですが、私の担当がアドテク領域のため、本記事ではアドテクチームと表記します。

  2. https://publisheruniversity.withgoogle.com/splash/ja/index.html

  3. いま話題のヘッダービディングとは何か https://magazine.fluct.jp/2016/03/15/2336

  4. 厳密には異なり、メディアによってはヘッダービディング導入前にも広告事業者の並列接続は行っている場合もある。ただ、入札価格がリアルタイムにわからないため機会損失は発生しうる。

  5. セカンドプライス・オークション https://www.ifinance.ne.jp/glossary/business/bus142.html

  6. AdManagerのKey-Value機能 https://support.google.com/admanager/answer/188092?hl=ja