たけっぱ横丁

the technical document for Vim(Editor), Natural Language Proecssing(NLP) tools and Programming(Python, Ruby, C++ etc).

3日間でDSPを作った話 (サイバーエージェント主催 アドテクコンペ レポート)

f:id:tkngue:20160303071419j:plain

縁あって, サイバーエージェント(以下CA)さんのアドテクコンペ 開催概要 に参加してきた.

DSP(Demand-Side Platform)を開発したので、せっかくなので報告をしたいと思う。 だいたい 3人1チームで組んで開発.

3日工程のうち最終日は作った, DSPでみんなで勝負する時間なので 実質2日でDSPを作った.

以下は一番SimpleなDSPのコード

Simple DSP Server for AdTech Competition 2016. To ...

DSPの雛形自体をつくるのは難しくなく、ちょろっと書いたコードで十分リクエストを裁けた.

DSPで最低限必要な機能というのは

  1. SSPからのリクエストを受け取る(エンドポイントを用意する)-
  2. SSPに応答を返す.
  3. SSPからの報告を受け取る

これだけなので 上みたいな脊髄反射でいいなら, 今回の要件である2000QPSぐらいを1~2台で余裕で裁けた.

ただ, もう少し複雑なロジックをDSP内に組もうとすると いろいろ問題になってくるので, そこが各チームで各々の工夫どころ, ということになる.

システムの構成で 皆が目指したところは 大きく差は無く 以下の記事の図のシステム構成がとても丁寧だ. CyberAgentさんのアドテクコンペで特別賞頂いた話

次回もあるならば, もっともっと盛り上がって欲しいと思うので
以下では このコンペの良さについて語れたらと思う.

アドテクってなに

アドテクの概要を知るには CAさんが以下のコンテンツを用意してくれている. 知らない人は, 読んでみて欲しい. 日本一やさしいアドテク教室

CAさんのコンテンツではないが 以下のスライドは非常に秀逸なので これも共有しておく.

www.slideshare.net

なぜアドテクがアツいのか

僕の思うアドテクがアツい理由は

  1. 過去のログからユーザのクリック予測を行う データ分析技術
  2. SSP側からのとんでくる大量のリクエストをさばく インフラ設計
  3. 100msという短い時間の制約で、勝てる判断を行うロジックを実装する 運用能力

と, あらゆる技術が

全部必要

という 「おいおい厨二病かよ」 と言いたくなるところ である.

もちろん特化できることは大切だけど, どこか一つでも機能しないと 途端に破綻する ので 上の3つのバランスが少なくとも必須になる

僕の持つイメージとして, 一般的なエンジニア は

「世の中を変えるプロダクトを作って, 新しい価値を生み出せたものが正義!」

という, 夢にあふれてそうな響きがあるのに対し

一方で アドテクのエンジニア というのは,

「知略めぐらし, 戦略的に競争に勝ったものが正義!」

と 論理的に考えれない者から脱落していく、 限りなくロジックだけで勝負できる と 非常にさっぱりしている. 極端な話を言うと, ゲームの超強いAIを作れるやつが生き残れる世界だなーと思う.

付け足しておくと アドテクに夢がないとか, 世の中のサービスにロジックがないとか 言いたいわけでもない.
けれど一般的には前者が全面的にでてきやすいので, 後者みたいな生き方もあると認知されて欲しいとは個人的に思う.

なぜ アドテクコンペが アツいのか

アドテクコンペというのは, 「短期間でサービスを考え、開発する」というハッカソンや 「分析方法を試行錯誤しながら, より精度の高いモデルをあたえられたデータから構築する」というデータ分析コンペとも違う.

例えるならば ゲームのAI ハッカソン だ.
しかしながら, 戦況は刻一刻と変わっていき それに応じて採るべき行動を変えるようにする必要がある(それはデータから分析し, 判断する).
ここで優れたアイディアとは, 高い確率で勝てる戦略のアイディアだ.
そして, それを実際に動くところまで開発するという実装能力が必要になる.

また普通のハッカソンのように「君のアイディアはイケてない」とか お互いに気をつかいながら抽象的なアイディア出しするようなことは必要ない.
なぜなら 戦略の良し悪しは 論理的に考えれば, 良い悪いがはっきり するからだ.
だから「君の戦略は、こう来られたら弱いよね」と相手に気兼ねなく伝えられるし, 伝えられる側もすんなり受け入れられる. (ただし互いの主張を論理的に解釈し受け入れられたらだが...)

所感

実装能力とデータ分析技術の両方が必要とされるコンペティションというものは
僕の知る限りでは全くなかった.
頭をフルに使いながら手を動かすのが こんなにも楽しい 経験というものは少なくとも初めてだった.

戦略を考えて, それを実装に移す のに2日間という時間は短すぎた...というのが正直な感想である.
だが全体として, いろいろ改善点はあるだろうが, それを差し引いたとしても楽しい3日間だった.
純粋に理論で殴り合う、という経験ができたのは大きな収穫である.

データ分析つかって理論で殴り合いたい、という人には 本当におすすめしたい3日間だったことは間違いない. 最後までつきあってくれたチームのみんなには感謝を述べたい. この場を設けていただいたサイバーエージェントさんとメンターの方々には感謝しかない.

ありがとうございました!