また、構成要素のそれぞれに求められる技術的な要請も高い。ノンストップで発生し続けるリクエストを高速、かつ確実に処理できる、システム全体のリアルタイム性と堅牢性。広告取引によって生まれる大量のトランザクションデータを効率的に分析処理するための仕組み。高確率でコンバージョンへとつながる属性を持ったユーザーに対して、効果的に広告を配信するためのロジック。これらに対する要請は日々強まっている。
アドテクノロジーに関わるエンジニアは、次々と登場する最新の技術と、自らのアイデアを駆使しながら、より高速で精度の高いシステムを作り上げることに挑んでいる。
リクルートグループのマーケティングコミュニケーションを担う「リクルートコミュニケーションズ(RCO)」は、現在、各種ネットメディアへの広告配信最適化を実現するシステムを自社内で開発、運用すべく、新たな「プライベートDSP」の開発に着手している。DSPの開発や運用を自ら手がけることで、より精度の高い広告配信プラットフォームを実現し、今後さらにビジネス機会が拡大すると予想されるRTBによるディスプレイ広告分野で地歩を築くことを目指している。
今回、RCOでプライベートDSPのインフラ構築、開発、運用に携わる5人のエンジニアに話を聞くことができた。彼らは、どのような環境で、またどのような技術的な関心を持ってアドテクノロジーに携わっているのだろうか。
出席者一覧
リクルートコミュニケーションズ ICTソリューション局 アドテクノロジーサービス開発部 所属。
- コアテクノロジー開発グループ、中村敏和氏
- テクノロジーサービス開発グループ データサイエンティスト、丸山哲太郎氏
- コアテクノロジー開発グループ ソフトウェアアーキテクト、上田和孝氏
- コアテクノロジー開発グループ、小林智則氏
- コアテクノロジー開発グループ テクニカルリード、阿部直之氏
多様なバックグラウンドと得意分野を持つアドテクチーム
――まず、みなさんがそれぞれにRCOの中でどのような業務に携わっていらっしゃるのかについてお話しいただけますでしょうか。
中村:中村です。現在は主に、広告バナーのユーザーターゲティングに関わっています。ユーザートラフィックから、特徴量を作り、それをもとに機械学習などを使ってターゲティングを行うといった内容です。最近では、ドキュメントの解析技術を使って、ニッチなターゲティングもできるようにしたいと取り組んでいます。エンジニア兼データサイエンティストという立場で、さまざまな案件に関わっています。
丸山:丸山と申します。私も、中村と同じくデータサイエンティストグループにいますが、どちらかというと、よりインフラエンジニア寄りの仕事をしています。広告配信の最適化を行うもとになるデータとして、Webのアクセスログがあるのですが、RCOでは、その生データをインフラチームがAmazon S3に保存してくれています。私は、それをさらに人間が加工しやすいよう、あるいは分析アプリケーションで扱いやすいような形にして、同じくAWSのデータウェアハウスサービスである「Redshift」に移すということをやっています。データマイニングにおけるETL(Extract/Transform/Load)の「T」と「L」の部分を担当している形になります。加えて、データサイエンティストとしての立場で、機械学習に基づいた、広告バナーの個人ごとの出し分けの最適化にも取り組んでいます。
以前は企業の研究所でストレージシステムの研究を行っていましたが、1年ほど前にRCOに転職してきました。
上田:上田です。私は1999年の入社で、それ以来ずっと開発に関わっています。2013年までは主にWebアプリの開発をやっており、その後アドテクノロジーに関わるようになりました。
DSPというのは、非常に高いトランザクションが発生するシステムで、最大で5万クエリ/秒を処理するといったケースも出てきます。その矢面に立つシステムの正常な動作を確保したり、溜まりすぎて分析しきれなくなったログから、いかに意味のある部分だけを抽出して、分析を行う人たちに渡したりといったことをやっています。
実装面では、Javaでガベージコレクションが発生しないよう、既存のライブラリを使わずに最高のパフォーマンスをたたき出すようなプログラムを書いたり、さまざまなサイトからAPIを通じて入ってくるユーザー情報をうまくさばいたりという感じのこともやっています。
小林:小林と申します。私はインフラエンジニアの立場で、プライベートDSPの全体的な基盤部分のAWSによる構築や運用を担当しています。Redshiftについては、全体的な設計、導入、運用までを手がけています。以前は企業の情報システム部門にいたのですが、3年ほど前にRCOに転職しました。
阿部:阿部と言います。アドテクノロジー関連では、DSPのコアシステムの設定などを行うようなWebアプリの開発を担当しています。Webアプリエンジニアとして動きながら、最近ではRCOで働いているエンジニアの開発環境の改善というテーマにも業務として関わり、CIのツールを入れたり、そのフローを整えたりといったこともやっています。また、エンジニア全体の育成や採用といった部分にも仕事が広がっています。
社歴は3年ほどです。以前は地方のSIerでフルスタックエンジニアとして動いていました。
精度を高めるロジックはエンジニアが自ら考え「トライ&エラー」で実装
――みなさん、アドテクノロジーを中心としながら、それだけでなく幅広い仕事に関わっている感じですね。入社1~3年の方が多いようなのですが、特にRCOでのDSP構築といった動きに関連して、自分なりの課題と考えている技術的なテーマはありますか。
中村:私はまだ入社して1年ほどなのですが、その間は、まず「広告バナー」を「誰に出すか」というロジックを、どのように作るかというのをテーマにして取り組んでいました。一般的に、広告配信の効果測定は「クリックレート」(広告がクリックされた率)を中心に考えられているのですが、それだけでは不十分です。ネット上にはbotなども存在するため、たとえクリックレートが出ていたとしても、その広告が最もふさわしいユーザーに対して出て、どれだけの効果があったのかというのは不明確なんです。そこで、よりきちんとユーザーターゲティングをするためのロジックが必要になっているのです。
ユーザーごとの特性とトラフィックデータの組み合わせから、どんなバナーが、どんな特長を持った個人と相性がいいのかを、機械学習をベースに予測して、より適合度の高い人に優先度を上げて広告を提示する仕組みというのを考えていました。
機械学習に必要なデータは、インフラチームがうまく使えるように整えてくれています。では、そのデータをどう加工すればいいか。機械学習にあたってのチューニングをどうするか。機械学習用のデータをどうやって作るかという部分が結構難しいのですが、それを試行錯誤しながらやっていました。
アドテクノロジーの分野で機械学習による分析を行うと、結果にはノイズも多く含まれるんです。例えば、「興味がある広告が出ているはずなのに、アクションに結びつかない」といった場合、その人を分析結果として「非適合」に分類してしまうこともあり、これを完全により分けることは難しいんです。サポートベクターマシンやニューラルネットなどを含む複数のアルゴリズムを比較検証した上で、現在は結果的にノイズに強かったランダムフォレストを使ってターゲティングを行っています。
その後、より精度を高めるため、広告が出る各ページの大まかなカテゴリ分けだけでなく、そこに書かれている内容をきちんと把握する必要があるのではないかと考えました。そこで、ページ内のドキュメントの内容を形態素解析して、そのベクトルを分析に生かせるようなものを実運用に生かせるよう検証するというのが、今、最もやりたいテーマになっています。ドキュメントの解析に加えて、そのページにある画像の内容を判別して学習に反映させるようなこともできるだろうと考えています。
これだけのことをやろうとすると、さらに大量のデータを処理しなければならないのですが、その部分については、自分の要望に合ったものをインフラチームがきちんと用意してくれる環境があるので、チャレンジにあたって非常に助かっています。
上田:RCOのアドテクノロジーが他の企業のものと大きく異なる点の一つとして、クリックレートではなく、コンバージョンレート(実際に購買や問い合わせにつながった率)を最重要に考えて、広告配信の最適化を図っている点が挙げられます。そのための新しいロジックは、誰か、そのことだけを考えている人がいるわけではなく、すべてエンジニアが主体となって考え、実装していっています。できたらとりあえず入れてみて、結果を見る。うまくいきそうなら改良し、ダメだったら外して再検討……といった感じでスピーディーに試行錯誤しながら精度を高めていっています。
――ちなみに、中村さんは入社以前の大学院生のころから、機械学習が専門だったのですか。
中村:交通シミュレーションの精度を高めるための研究をやっていました。モデルを作って、そのモデルを観測値で補正していくといった内容ですね。現在やっているアドテクノロジーの高精度化というテーマも、その分野の知識や技術を生かせる部分が多く、入社してすぐにいろいろやらせてもらえています。考えた仕組みが、迅速に実際のシステムに反映され、精度が向上すればそれがビジネス上の成果として目に見えるので、やりがいがありますね。
――専門の研究分野と、会社として注力しているテーマがうまくマッチしたというわけですね。では、上田さんの直近のテーマはどんなものだったのでしょうか。
上田:先ほどお話ししたように、当初は「圧倒的に速いレスポンスプログラム」を作るというのがメインの仕事だったのですが、昨年春からは、広告のターゲットとなる属性に対して値付けを行うシステム、「誰」を「いくら」で買うという仕組みを実現することに、前任者から引き継ぐ形で取り組んでいました。
そこで思ったのは、「もっと数学や統計学、ちゃんと勉強しておけばよかったなぁ」ということで(笑)。中村さんは、データサイエンティストとして特別な素養がある専門家なので、その点でいろいろ教わりながらやっています。
中村:逆に分析を効率的に行ったり、システムを高いパフォーマンスで動かしたりするための技術的な知識、ノウハウなどは、上田さんをはじめ、インフラチームのみなさんの仕事を見ながら教わっています。ソースコードも見られますので。
「やりたいこと」「やりたい人」が優先される企業文化
――新たなロジックで常に進化していくDSPを実現するにあたって、インフラとしてAWSの「S3」や「Redshift」を活用するというのは、どのような経緯で決まっていったのでしょうか。
小林:もともとRedshiftについては、クラウドデータウェアハウスとして発表された当初から注目していました。東京リージョンでリリースされたタイミングで研究開発的に導入をスタートし、2014年の3月までに、完全に移行したという感じですね。それまではHadoopを使っていたのですが、実際にRedshiftを使えるようにしてみたら、エンジニアがみんな「こっちのほうがいい!」と移ってしまい、そのまま普段使いになったという感じです。
丸山:Hadoopだと、どうしてもリアルタイム性の面で弱かったんですね。Redshiftは、やはりそこが強い。あと普通にSQLを使えるという点でも、エンジニアにとっては使い勝手が良かったようです。集計分析に向いた列指向(カラムナー)の高速なデータベースを持ち、クラウド上で柔軟にリソースを確保できる仕組みとして、Redshiftは大きなパラダイムシフトだったと思っています。個人的に、AWSの技術では「Lambda」や、キューイングサービスの「Kinesis」なども、ターゲティング広告のリアルタイム性や精度の向上に生かせる部分があるのではないかと関心を持って見ています。
こういった新たな技術や製品に対して、RCOは下手なベンチャーより、ベンチャーらしい感覚でチャレンジしています。良いと思ったものは、どんどん使ってみて、過剰にリスクを意識しないで投資をしていく。エンジニアの登用についてもそうですね。下手なリスクを考えず、できる人、やりたい人にどんどんやらせてみるという社風があるなと感じています。
小林:一般的な企業のように、ニーズが生まれた後で、経営を説得して、承認をとって、ようやく導入できるというプロセスをとることはあまりないですね。エンジニアの「やってみたい」が優先されるので、「やってみたい」技術に対して、その理由のファクトが説明できれば、比較的スムーズに予算がつけられます。研究開発の費用はつけてもらいやすい組織ではあると思います。
そして、導入してダメだったときには、いつまでも固執せずにすぐに手放してしまう。「スクラップ&ビルド」が当たり前の社内文化としてあります。
阿部:RCOの場合は、小林さんをはじめとするインフラチームが、業務のための環境をしっかりと守ってくれているというのが、さまざまなチャレンジをする上で大きいかもしれませんね。そうした守りの環境があるからこそ、開発チームは新たなロジックや技術に対して積極的に挑戦できる。例えば、データベース構成なんかは、現場でわりと自由に変えてしまえたりします。勝手に変わると影響が大きくトラブルにつながりかねないところに関しては、小林さんがきっちり監視していて、何か問題が起こるとすぐに対応してくれる。これは本当にありがたいですね。安心して無茶ができます。(笑)
特にアドテクノロジーのチームについては、この「オフェンス」と「ディフェンス」のバランスが良くとれているんじゃないかと思います。
小林:ただ、この会社の場合、ディフェンスだけやっていても評価はされません。そのあたりは、本当にバランスなんだと思います。「システムをトラブルなく動かし続ける」という「守り」の仕事をするにあたっても、それをいかに自動化し、効率化して、少ないコストで実現できるようにするか。それに取り組んでうまくいけばそれは「オフェンス」の仕事として評価されるという面はありますね。
あと、実際には、個々のエンジニアも「オフェンス」と「ディフェンス」の両方の資質を持っていて、自分の得意なほうを普段は前面に出しているけれど、いざというときには総掛かりであっという間に対処できてしまうというのも強みですね。基本的には全体を見て、必要に応じて「オフェンス」にも「ディフェンス」にもなれる人が集まっているチームだと思います。
阿部:アドテクノロジーチームについては、自分たちが作っているサービスに対してのコミットがものすごく強いです。むしろ「愛情」といっていいレベルだと思います(笑)。普通なら「ここまでが仕事だから」と割り切ってしまうケースでも、愛情ゆえにきちんと対応する。自分たちの作ったものが自分たちの手を離れるときは、子どもをヨメに出す辛さを感じるような、そんなチームです(笑)。
互いのスキルを高め合う壮絶な闘い
――お話しを聞いていて、RCOのアドテクノロジー部隊は、非常に高度なチームワークと、強い成果物への愛情(笑)があるチームなんだと感じました。今回、出席して下さっている方も多くは中途採用と伺いました。RCOの中途採用試験は独特な内容だということですが、どのようなものか教えてください。
上田:弊社のエンジニア採用は中途・新卒ともに、入り口でコーディング試験があります。過去に出題された具体的な問題としては、「インディアンポーカー」というゲームが行われている場面を想定し、「相手の思考を推理する過程をプログラムで表現せよ」というものや、数学的な問題を解くもの(下図参照)がありました。
このコーディング試験は、実際にRCOで働いているエンジニアが持ち回りで考えています。特にアドテクノロジーに携わるようになると、技術の知識よりも、より基礎的な「考える能力」を持っている人のほうが、うまく課題を解決できるだろうと思っていますので、あえて「正解」のない問題を出題しています。
中村:私が作ったコーディング問題も実際に採用されました。私が試験の時に解いた問題は面白かったのですが、探索に関する部分が多かったので、自分はデータ構造に関する問題を入れてバランスをとりたいなと思ってそれを作りました。
上田:入社1年目なのにね(笑)。
中村:上田さんが言っていた「基礎的な考える能力」については、知識だけでは「もう無理だろう」と思える限界のところで、さらに考えて、もっとすごい、次のレベルに「ジャンプ」できる力のことなのではないかと思っています。選考にあたっては、すべての問題に、想像できる範囲内で答えている人よりも、どれか1問だけでも、出題側が予想もしなかったような飛び抜けた解法を思いついた人のほうが残っている気がしますね。
――それぞれに専門分野を持ちつつ、基礎能力も高いメンバーが集まっているというのはすごいですね。仕事の中で、技術的にお互いを刺激し合う機会も多いのではないでしょうか。
中村:仕事以外の部分でも、結構そういう機会があるんですよ。例えば、先日は私が独断で企画した「ファミコン世代の爆弾で闘う某レトロゲーム」のAIバトル大会なども社内で開催して、これが結構盛り上がりました。
――あのレトロゲームですか?
中村:ええ。あのゲームで強いAIを作るというのは、かなり難度が高いんです。私がフィールドとなるシステムを作り、社内でインターンも入れて11人が競いながら「最強のAI」を作るというイベントになりました。自分の仕事が終わってから、夜中までかかってAIを作っていた人もいたようです。(笑)
丸山:そもそも、分析チームが一人ひとり、個別の案件を持っていて、普段あまり技術的な交流がなかったので、そうした機会を作ろうというところで、中村さんが実行したイベントでした。ひと言に「機械学習」といっても、いろんなモデルがあります。また、それぞれに時系列解析が得意だったり、自然言語処理が得意だったりと、強みとしている分野も違います。社内でこうしたイベントを行うことで、それぞれの考え方やスキルを共有し、全体のレベルを高めていこうという意図がありました。
上田:ゲームAIの企画は中村さんの独断で実行されたものでしたが、今後は社内で公式に「コードバトル」のようなイベントを開催していこうという企画も出てきています。もちろん、各自の仕事は仕事としてきちんとやる。それに加えて、遊びの要素も加えた技術的な交流を通じて、エンジニア同士が互いにスキルを高め合うということを、高いモチベーションでできる環境だと思います。
――どうもありがとうございました。
リクルートコミュニケーションズ・アドテク部では、課題を自ら設定し、最先端の技術・難関テーマに挑戦し続ける方を募集しています。詳細は、以下のサイトをご参照ください。
本稿でも触れた『ファミコン世代の爆弾で闘う某レトロゲーム』の最強AI開発で実際に作ったアルゴリズムなども紹介しちゃいます。ぜひ次のイベントページから奮ってご参加ください!