はてなアドテクスタッフ座談会

はてなでは、はてなブックマークのテキスト解析・機械学習の仕組みを基に、アドベリフィケーションサービス「BrandSafe はてな」を開発・提供しています。「BrandSafe はてな」を含むアドテクノロジー(アドテク)にかかわる仕事は、京都・東京の2拠点をまたいで行われています。その現場にいるメンバーはどのように仕事をし、コミュニケーションをとっているのか、はてなのアドテク分野を手掛ける、id:skozawa、id:yanbe、id:ryokubo、id:taraoの4人に話を聞きました。
はてなアドテクスタッフ 左からid:skozawa、id:yanbe、id:ryokubo、id:tarao

目次

はじめに

BrandSafe はてなは、はてなブックマークで使用しているサイト判定アルゴリズムを基に構築されたアドベリフィケーション機能です。そのBrandSafe はてなを中心としたアドテク分野に関わるエンジニア3人、商品開発担当1人に、開発や仕事の進め方などについてお聞きします。まず、それぞれの役割について教えてください。

yanbe アドベリフィケーションを一緒にやりましょうというお話を株式会社フリークアウトさんからいただいて共同開発に着手した際に、商品性を確かめるというフェーズで、プロトタイプの作成・開発をしました。本番リリースする前にいったんtaraoさんにバトンタッチして、いまは再び担当しています。BrandSafe はてなのほか、アドテクに関する新規案件などをやっています。

tarao yanbeさんが最初に作ったプロトタイプをプロダクトに落とし込んで、リリースするまでを担当しました。複数のフィルタのチューニング方法を決めたり、精度を上げる実験をしたり、実装をした上でさらに精度を上げたり。

skozawa 僕はBrandSafe はてながリリースされた後に、チームにジョインしました。主にフィルタ部分の精度を上げながら、新規案件をyanbeさんと分担しています。

エンジニアの皆さんは京都オフィスにいますね。東京オフィスにいる事業開発部のryokuboさんは、どのように関わっているのでしょう。

ryokubo BrandSafe はてなの導入企業さんと開発メンバーの間に立つ役割です。要件を決めたり、企業さんから要望をヒアリングして開発メンバーに伝えたりします。また、BrandSafe はてなの導入を検討していただくために、DSP事業者さんやメディアさんへの営業もしています。

フリークアウトさんとの共同開発時には、エンジニアリング面についても加わっていたんでしょうか。

ryokubo エンジニアリングに関しては、フリークアウトさんとtaraoさんが話す前に僕が少し打ち合わせをして、その後はエンジニアを交えたSkypeグループを作って話していました。

はてなのエンジニアリングの歴史がアドテクには詰まっている

いま直接関わっているエンジニアは、yanbeさんとskozawaさんの2人ですか?

yanbe 4月にtakuya-aさんが入社して、エンジニアが3人になりました。

skozawa 特に明確には分担を決めていないですが、案件ごとに「いま体が空いている方」が担当しています。エンジニアは常に足りていないので、人が増えた状態でもっと手掛けていきたいです。

yanbe アドテクのチームメンバー全員が他のチームと兼任なんです。企業さんとやりとりをしていると発生する待ち時間をうまく空き時間として使って、社内のサービスをいろいろやろう、という感じにしています。

tarao いま使っている仕組みは、はてなブックマークでずっと改良し続けてきたスパム判定・アダルト判定のためのフィルタを応用したものです。現在の担当者は3人ですが、これまでたくさんのスタッフが関わってきています。

はてなのエンジニアリングの歴史が詰まっている感じですね。

tarao 関わった人はもう数え切れない(笑)。本当に歴史の積み重ねですね。

id:tarao id:tarao

BrandSafe はてなの着想があってからリリースまで、開発期間はどれくらいでしたか?

yanbe フリークアウトさんからお話をいただいたのが2013年8月ごろ、リリースは2014年8月で。

tarao お話があった時点から数えると、リリースまではちょうど1年くらいですね。

ryokubo 開発にとりかかったのは、結構後になってからです。

開発スタートまでには何が行われていたんでしょうか……?

yanbe どのように連携するか仕様を考えたり、提案したり、そのフィードバックを受けたり、といった感じでした。根詰めてやったのは最後の3ヶ月くらいで。

tarao その3ヶ月も、ずっと絶え間なく開発していたわけじゃないんです。リリースの時期の調整や他の案件との調整でずれたりもしています。

yanbe 判定対象となるURL一覧をもらってそれを判定して返す、という仕様の決定に結構時間がかかりました。(フリークアウトの)溝口浩二さんやプロダクトマネージャーの箭内直樹さんと我々で想定した内容について、箭内さんが先方のエンジニアさんとやりとりしてくださって。

どういうところに時間をかけていたんでしょう?

yanbe 最初はリアルタイムでの判定を検討していたんですが、RTB(リアルタイムビディング)という仕組み上、他の広告ネットワークと自動で競争入札するので、DSP(デマンドサイドプラットフォーム)であるフリークアウトさんは50ミリ秒以内にデータを返さなければならないんです。

なるほど、トラフィックとスピードが命ですね。

yanbe そのたびにフリークアウトさん側からはてな側にリクエストしていると間に合わないので、その仕様を満たしつつ、判定もそんなに遅れずできるように、バランスを取った方式を採用することになりました。

開発言語とアドテクのスピード

開発言語は何を使っていますか?

tarao Perlです。Perlで作られたはてなブックマークの仕組みに乗った形で開発しているんですね。もともと使っているフィルタリングの仕組みを改善して利用しているので、Perlを使わざるを得なかったというのが理由の1つです。その部分だけ切り離して別言語で開発することもできるけど、そうすると工数が倍増する。まずはスモールスタートしようと。

スモールスタートした結果、今もPerlですか?

tarao 今もPerlです。ただ、今後その部分だけ切り離していきたいとは思っています。切り離したあかつきには言語を変えてもいいかも。yanbeさん的にはPythonとかの方がいい?

yanbe そうですね。

tarao PerlよりはJavaかPythonなどの方が、たぶんやりやすいだろうなという気はします。

「たぶんやりやすい」ということは、Perlで何かつらいことが……。

tarao つらくはないです(笑)。つらくはないけど、「こういうの使ったらめっちゃいいんじゃないの」みたいな流行っているライブラリなんかが使えなくて、全部自前で実装する、みたいな感じになっています。でも自前でやってみたらすごく良い精度でできたので、まあいいかという感じでしたね。

yanbe Perlで都合がよかったのにはもう1つ理由がありまして。はてなブックマークで、ブックマークされたURLが分散しないよう正規化するライブラリがあるんですけど、フリークアウトさんもPerlを使っていて、そのライブラリを共有して使っていただいています。

id:yanbe id:yanbe

tarao 本当にたまたまなんですけど。「Perlだけどいいですか?」と言ったら、「あ、うちもPerlなんで都合がいいです」って言われて。障壁があまりない状態で、そのままライブラリを渡せばよいということになってよかったです。

yanbe 広告のインプレッションがあったURLは正規化されていないんですが、そのライブラリを使えば、フリークアウトさん側だけでそれらのURLを正規化できます。RTBで自動取引する際に、はてなにリクエストしなくてもページの判定をして、入札するかどうか決められます。

どういう人か分かれば、遠隔でも仕事はスムーズに進む

はてなの開発メンバーは京都オフィスにいて、クライアントの会社は東京にあることが多く、ryokuboさんは東京オフィスに在籍で……と多方向とのコミュニケーションが必要だと思うのですが、そもそもタスク管理などはどう進めていましたか?

yanbe 複数の案件を並行して進めているので、企業さんごとにいろいろなやり方があります。フリークアウトさんの場合は、Google スプレッドシートで課題管理表を用意してくださいました。他企業との連携にすごく慣れていらっしゃる感じだったので助かりました。そのスプレッドシート上で解決すべき問題を抜け漏れがないように管理して。

tarao ざっくりとした大きなマイルストーンごとに項目が立ててあって、その項目を達成するスケジュールは、はてな側で勝手に細かく決めていくという感じでした。

yanbe Skypeでのチャットも併用していたので、ちょっと質問したいときは気軽に聞けましたね。

tarao 最終的なスケジュール調整もSkypeを使っていて、「これができるのいつごろになりそうですか?」「この部分が先にできるとうれしい」「じゃあそっちを優先で」なんて話しながらやっていました。

他の案件の場合ではいかがですか?

yanbe Skypeのグループチャットを同じように使う案件もありますが、普段のやりとりはだいたいメールベースです。それに先だって、先方の担当者さんが東京オフィスに来てくださって、我々は京都オフィスにいて、ポリコム(編注:はてなで利用しているテレビ会議システム)で話したり、我々が出張したり、さまざまです。

開発メンバーがいつも京都にいて離れていて大変、というわけではなくて、柔軟な感じなんですね。

yanbe 対面で話した方がいいときは、僕やskozawaさんが東京オフィスに行ってryokuboさんを交えてミーティングをするとか、東京にある会社にryokuboさんと2人で行って担当者の方々とお話ししたりとか、企業さんや打ち合わせ内容によってミーティングの方法やツールは変わりますね。

tarao 印象的な出来事があったんです。フリークアウトさんと最初にお会いしたとき、僕とyanbeさんが東京に行って、東京オフィスの会議室でフリークアウトさんと対面で話して細かいことを詰めたんですね。その後は僕たちが京都にいて、フリークアウトさんには東京オフィスに来ていただいて、ポリコム越しにやりとりしました。そうして定期的に話しているうちに、だいたいもう大丈夫そうって分かってきて。じゃあもう別に毎回毎回会う必要ないですよね、という感じを経て、徐々にSkypeに移行していきました。

お互いにどういう人か、分かってきたんですね。

tarao そうなんです。人となりが分かるというのが大事で、分かってきたらチャットでも安心できました。

yanbe フリークアウトさんにそのあたりの温度感をリードしていただきました。最初に大枠を決めるとき、東京オフィスでホワイトボードにシステム構成図を書いて、「こういうふうにやったらうまくいきますよね」という話をしました。そこでお互いに話が通じて、信頼感が生まれたのがよかったです。

そういえば、はてなの京都オフィス・東京オフィス間も同じ環境ですね。

tarao 確かに。普段は離れて仕事しているけど、ポリコムやSlackなどでコミュニケーションをとれていますし、同じですね。

id:ryokubo id:ryokubo(ポリコムで参加)

ryokuboさんにお伺いします。開発メンバーが京都にいるということで、企業さんから何か懸念点などについて言われたことはありますか?

ryokubo ないですね。「はてなのエンジニアに会いたい!」ということで、人がたくさん来たことはありましたね。

実際に会わないと不安というわけじゃなくて、ただ「会いたい」?

ryokubo 「会いたいので多く押しかけます!」って宣言されて(笑)。そのときは4~5人来られたと思います。

yanbe エンジニアの割合でいうと、はてな:先方=1:5でしたね。

skozawa すごい図ですね。

ryokubo いい感じに話ができましたよ。

「実現したらすごくいい未来が見えそう」

アドテクに関する仕事は、社内でWebアプリケーションの開発をするのとはちょっと違う側面があるかと思います。違う点、共通する点について教えてください。

skozawa アルゴリズムに特化しないといけないポイントがあるというのは、アドテクならではだと思います。設計やプログラミング寄りの話はアドテクでもWebアプリ開発でも共通しますね。基本的には、Webアプリ開発の延長線上にアドテクがあると思っています。共通する部分がありつつ、アドテクでは特にアルゴリズムの部分が重要になりますね。

tarao はてなブックマークは特にアルゴリズムを使って大規模データ処理をして、という要素が多いので、実はもともとやっていて……。skozawaさんもyanbeさんもはてなブックマークに関わっているという点で同じですね。アドテクと一般的なWebアプリ開発とはたぶん全然違う感じなんですが、我々としてはあまり変わりのないことを以前からやっていた感じです。言い方を変えると、はてなブックマークの開発では、一般的なWebアプリ開発とは違うこともやれているということですね。

ご自身の得意分野、研究分野とのマッチングはいかがですか?

tarao 実は全員、機械学習が専門ではないんです(笑)

え!そうなんですか。taraoさんはアドテク関連の勉強会でも発表されていますよね。

『BrandSafe はてな』のアドベリフィケーションのしくみ from Lintaro Ina
(* 『BrandSafe はてな』のアドベリフィケーションのしくみについてアドテク系勉強会で発表しました - 貳佰伍拾陸夜日記

tarao 僕の専門は、プログラミング言語そのものの理論、プログラミング言語を設計するという内容で、実験的な要素は皆無です。はてなに入社する前にアルバイトとして働いたことがあったんですが、はてなブックマークのチームで検索技術や機械学習関連ばかりやっていて、そこが培われた感じですね。

yanbe 僕はtaraoさんとは対照的に、“実験してなんぼ”のウェブマイニングという研究分野でした。Webからデータを集めてきて面白い知見を見いだしたり、Web検索にソーシャルブックマークのデータをマージしてそれまでできなかった検索をできるようにしたり。それに関連して、自然言語処理の研究成果や機械学習分野の知見を使うのが研究室の方針でした。はてなに入社して最初に手掛けた大きな仕事が、はてなブックマークのスパム判定エンジンの改善だったんです。それまでのフィルタを機械学習ベースのものに置き換えたんですが、そのときに使った手法が、BrandSafe はてなのベースの技術に使われています。

skozawa 僕は実験ベースの自然言語処理分野が専門です。最近では、はてなブックマークのトピックページの実装を担当しました。Elasticsearchと自然言語処理技術を活用しています。

はてなブックマークのトピックページの裏側 from Shunsuke Kozawa
(* はてなブックマークのトピックページの裏側 - Hatena Developer Blog

skozawa 最近は自然言語処理分野でも機械学習を使うようになってきているので、この3人の中では、アドテクのフィルタに関する話題には一番近いかなと思います。

ryokuboさんは事業開発部で幅広い広告分野に関わっていますが、アドテクははてなに入ってからなんでしょうか?

ryokubo 前職でもアドネットワークの買い付けや提案、媒体社からデータをもらっての広告配信についてはやっていました。はてなに入ってからアドテクを手掛けてますが、絶賛戸惑い中ですね。

一同 (笑)

ryokubo エンジニアリングに関して「できる」「できない」がなかなかぱっと分からないんですよね。きっとうちのエンジニアだったらやってくれるな、と思って勝手にやれるって言ってるんですけど(笑)。技術的な不安などは全くないです。企業に提案する際は、僕はめちゃくちゃやりやすいです。要望を聞いてきて「これできますか?」って聞いたときに「できません」って言われたこと、今までないような気がします。

skozawa ryokuboさんは、「できる」「できない」の境界をある程度分かっていると思います。特に不安はないですね。

id:skozawa id:skozawa

なんだかすごくいい感じじゃないですか!

ryokubo 信頼関係は築けている感じがありますね。ありがたいです。

tarao お二人を見ていると分かるのは、ryokuboさんがyanbeさんに「こういうのできませんか」と言う場合、実現したらすごくいい未来が見えそう、やった方がいいでしょそりゃ、という話が来ていることです。これやりたくないな、という感触のものはないんですよね。そこでyanbeさんが「何とかします」って答えて異常な技術力で実現する。それがとてもいい感じに見えます。

yanbe ryokuboさんが、はてなのアドテクの未来につながるかどうかという観点で案件を持ってきてくれているのが分かるので。

ryokuboさんはそういう場合、はてなの将来・アドテクの将来を意識しているんでしょうか?

ryokubo だいぶ意識しています。その部分を大きくしていくのが会社としても大事だと思っていますし、はてなでしかできないことってたくさんあると思います。そこを意識しながら、インターネットをよくしていこうという気持ちですね。

実現可能性と精度、スピード感のバランス

いい話が続いてしまったので、今度はちょっと苦労している、実は大変!みたいな話がありましたら。

tarao がっつり機械学習!という内容をせいいっぱいやっているんですが、先ほども言った通り機械学習が専門ではないので、機械学習を専門にしている人から見るとすごく簡単なことしかやってないと思われるんじゃないか、という気持ちがちょっとあります。うまくいっていないというより、ただ単に不安という感じです。

yanbe リリースまでのスピード感と実現の難しさのバランスを取りながら、機械学習の手法を決めています。最新のアルゴリズムを使うと精度は上がるけど、実装するのに時間も計算コストも結構かかってしまう。製品になるレベルに達していて実装もそんなに難しくない手法を……というトレードオフですね。ただエンジニアとしては、いま可能で一番精度が良いやり方を試してみたい、という気持ちはあります。

tarao 確かに。最新のアルゴリズムを使っても、製品として有効かどうかには実は大きく影響しないんですよ。僕もアルバイト時代に新しいアルゴリズムを試したりしたんですが、実際にやってみると、ちょっと精度は上がるけれど、良くても2%上がった、ひどい場合は全然上がらない、という感じで。

yanbe 工数に見合う競争優位性が得られるならいくらでも力を入れてやるんですが、必ずしもそうではないので。スピード以外にも、仕様の柔軟性など大事な要素があるので、その辺をうまく見極めながらいまのやり方になっています。

最新のアルゴリズムにキャッチアップしつつも、すぐにやってみる、というのは難しいんですね。

skozawa これはコミュニケーションツールの話になりますが、企業さんの既存の仕組みをBrandSafe はてなに導入するときに、メールでやりとりしていたらスムーズに進まなくて、タイムラグができてしまったことがあります。メールベースに加えて、Slackなどのチャットツールも使えるといいんじゃないかと思う場合があります。

yanbe 自社のWebサービスを開発するときは、基本的にすべてのソースコードが見られるんです。でも、他のシステムとの連携ではそうとは限りません。仕様の認識の齟齬がない状態でうまくやれるかどうか、そもそもサブシステムを借りる場合に正しく実行できる前提条件は何なのか、そういうところでちょっと時間がかかることもあるというのが、アドテクと自社のサービス開発で大きく異なる部分ですね。

他のチームではGitHub Enterprise(GHE)を使って開発を進めることが多いそうですが(参考:アプリケーションエンジニア座談会デザイナー座談会)、アドテク周りではGHEを使っていますか?

yanbe はてなのサービスを担当しているときは使っていますが、アドテク関連では使っていないです。

tarao 使ってみてもいいかもしれない。

yanbe はてなブックマークとつながっている部分をうまく切り離せたら、社外の人が使えるようにできるかもしれません。

一緒に新しいことを考えていける人に来てほしい

最後に、どんな人にはてなに来てほしいかをお聞きしたいと思います。

skozawa 今回お話ししたエンジニア3人とも機械学習が専門というわけではありません。アドテク分野では今後機械学習がどんどん重要になっていくと思うので、機械学習が好きな人にはぜひ来てほしいです。専攻していなくても、好きで興味があれば問題ないです。

yanbe BrandSafe はてなは、フリークアウトさんのほかに、ログリーさんのネイティブ広告プラットフォーム「logly lift」に導入いただいたり、リリース準備をしているものが控えていたりと、今後さらに成長していく予定です。いまははてなブックマークのインフラに相乗りする形ですが、利用が増えた場合にもっと効率の良いインフラに乗り換えないといけない日が来ると思います。その際にどのようにインフラを用意するか、精度やレスポンスをどう解決していくか。アドテク分野で大規模データ処理関連の業務をやったことがある人と、一緒に考えていきたいです。

tarao 機械学習に関する専門的な視点での相談ができたり、一緒に調べたりできる人ですね。いまもよくみんなで話し合っているんですが、専門的な話をする場合、もっと人数が増えればより良い方向に行けます。はてなではアドテクにもっと力を入れていくし、はてなブックマークにもよりよくできるところがまだまだあります。大規模データを扱える方に活躍してもらえると思います。

ryokubo 事業開発部でも募集しています。事業開発部としては、はてなのデータ・はてなのサービスを使って、新しいビジネス・事業を作ることについて考えられる人に来てほしいと思っています。アドテク業界にいる人ならベターですし、そうでなくても興味があればぜひ。

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

写真:徳永智大