- スマートニュース株式会社
- エンジニアリングマネージャー Ads 博士(理学)
- 西尾 亮一
システムの「不確実性」とどう向き合うか? スマートニュース・開発者が持つ哲学とは
〜「エンジニアはプロダクトマネージャー的にも動く」「システム開発の『不確実性』と向き合う」「先を見据えた思考を重視する」スマートニュースのエンジニア哲学を紹介〜
日米通算3,000万ダウンロードを突破したスマートフォン・タブレット向けニュースアプリ「SmartNews」。
同サービス上で展開する様々なアド(広告)サービスの裏側では、9名のエンジニアが、日々、サービスやアルゴリズムの開発に取り組んでいる。
彼らのバックグラウンドは様々だ。例えば、博士研究員として物理学の研究に取り組んでいたメンバーもいれば、二十歳からソフトウェア開発に取り組み、数々の受託案件を経験してきたメンバーもいる。
そんな多様なメンバーが、各々の領域で、時にプロダクトマネージャー的な役割も果たしながら、広告分野の将来を見据えたプロダクト開発に取り組んでいる。
今回はエンジニアリングマネージャーとして広告周りのアルゴリズム開発に関わる西尾 亮一さんと、新規サービスの開発などを行っている村石 恵示さんに、スマートニュースのアド領域のエンジニアが持つスタンスや考え方について、お話を聞いた。
▼【左】西尾さん・【右】村石さん
様々なバックグラウンドを持つ、スマニュー・アドのエンジニア
西尾 僕がスマートニュースに入社したのは、2013年の10月です。今やCEOを除くと、ほぼ最古参になりましたね。
それまでは物理学の研究者をしていたのですが、大学時代の同期が2人、たまたまエンジニアとしてスマートニュースで働いていたんですね。彼らに誘ってもらったことが、入社のきっかけです。
最初はエンジニアのバックグラウンドがなかったので、勉強させてもらいつつ、RailsでWebアプリの開発をしていました。
現在は、開発チームのエンジニアリングマネージャーとして、広告の配信アルゴリズムの開発を担当しています。
いわゆるマネージャの仕事をしつつ、ひとりのエンジニアとしても開発をしますし、プロダクトマネージャーに近い動き方をすることも多いですね。
「広告配信ロジックをこう変えると売上も伸びるんじゃないか」という視点から施策を考えて、それをアルゴリズムに落として開発する、という感じです。
村石 僕は二十歳から働き始めて、スマートニュースに来る前は主にSlerにいました。フリーランスで案件を受託していた時期も、3年ほどありましたね。
その後、2014年10月にスマートニュースにジョインしたのですが、アドのプロダクト開発が始まったのが2014年の8月なんです。
タイミング的に自動的にアドの担当になって、フロントエンド周りから入り、今も基本的にはそのコンポーネントを担当しています。
西尾さんと同様に、僕自身も一部プロダクトマネジメントを担っています。広告はステークホルダーが非常に多いので、あるべき姿をイメージしつつ、過去の経験を活かしながら、関係者を巻き込んでプロダクトを作っています。
エンジニアとして開発ももちろんするのですが、「どうしたら大きなインパクトがだせるか」といった視点から必要なものを割り出して、セールスとコミュニケーションしつつ、テストクライアントを見つける…というディレクションもしています。
エンジニアリングに、アカデミックな経験は活きるのか?
西尾 スマートニュースというアプリの裏側には、記事配信や広告配信のためのサーバーがあり、最適な記事や広告を届けるためのアルゴリズムが動いています。
広告に関しては、まずユーザーの行動ログをベースに、機械学習のモデルを作っています。たくさんログがあると、その分、予測精度が上がるということですね。
予測というのは、1個1個の事象の「確率」を計算するということです。例えば「村石さんにこういう車の広告を出したら、コンバージョンする確率は3%」、というスコアを算出するということですね。
こうしたアルゴリズムによってCTRやCVRといった確率の予測値が与えられますが、これで終わりではありません。
これらの値を使って、最終的な広告の優先順位や1クリックあたりの価格を決定することになりますが、どうすれば売上が最大化されるのか、を考える必要があります。これは最適化の問題です。
僕が会社に入って一番、数学や物理の知識が使えたなと思ったのは、この広告の最適化の分野ですね。
広告って、制約条件が色々あるんです。例えば「僕たちの売上」=「広告主が支払うお金」なので、広告主のメリットをきちんと担保しながら利益を伸ばすことが必要です。
つまり「制約条件の付いた、最適化についての問題」を解かなければならないのですが、これを数式に落とすということがまさに、物理学の問題を解いているみたいな感じなんですよ。
物理学だと、複雑な自然に対して何か単純化されたモデルを仮定してみて、その上で「こういう力が働くと結果はどう変わるのか」といったことをよく考えるわけですが、それと同じような感覚で。
ビジネスは色々と複雑ですが、その中でも何かを単純化して仮定すると、動きやすくなりますよね。
広告の最適化の分野では、大学で研究をしていた僕のバックグラウンドが生きたなと思えましたし、すごく楽しかったんですよね。
なので個人的には、研究職にいる人も何かの会社に入ったらけっこう面白い経験ができるのではないかと思っています。
システム開発の「不確実性」に向き合うことも重要
西尾 ただ、研究者にありがちな話として、「難しい問題」を解きたくなってしまうんですよね。「簡単なことをやって売上が2倍になった」としても、論文にする価値はないので、あまり嬉しくなかったりします。
僕自身もやはり、そういう傾向は持っていると思いますね。でも、それをやっているとスタートアップは潰れてしまいますので(笑)。
ビジネスをやっているということは、具体的に「解決できたら売上が上がる」という問題を解きさえすればよいので、必ずしも難しい数式を使わなくても良いわけです。
なので、あくまでも「プロダクトを成長させること」を第一の目標に持つことができて、そこに自分の数学や物理のバックグラウンドを活かそう、と思える人が、今のスマートニュースのようなフェーズのスタートアップではマッチすると思います。
村石 スタートアップという話で言うと、結果を早く求めなければいけないという部分があるので、そのために効率的な方法を選択する、ということは僕も常に意識しています。
その中で、システム開発は、将来どうなるかわからないという「不確実性」と常に向き合わなければいけなくて。
例えば「これは僕らとしては非常に理にかなっているんだけれども、実際にパフォーマンスを生むかどうかは分からない」ということがあるとします。
ここで、ガチッと設計してエンジニア全員で2ヶ月かけてローンチして、フィードバックを得られるのが3ヶ月後、となると、時間的にものすごく無駄ですよね。
結局それが撤退となると、僕らが払った2ヶ月は無に帰するので、そうならないようにまずは見極めをきちんとしようということです。
しっかり作る部分と、とりあえず作って出して反応を見る、という部分を切り分けることが重要ですね。
ですのでエンジニアチームとしては、特定のチームだけで解決できる課題であれば、まずはそこだけで開発してテストしてみる。他はあまり作り込まずに、すぐ撤退できるようにする、ということは常に意識しているところです。
技術選定の際には「自分たちにコントロールできるか」を考える
村石 また、スマートニュースの特徴としては、エンジニアにも先を見据えた思考が求められるという部分があるかなと思います。
何かをするとなったら、まず「なんでそれをやるの?」という「なぜ」の部分を突き詰めるんですね。
解決したい問題の本質がわからないと、それを解決するための最適な解が決まらないからです。基本は、ゴールから逆算するという考え方をしています。
問題に対しては色々な解法があって、エンジニアリングというのはそのひとつでしかありません。別のレイヤーでも解決できるんじゃないか、ということを広い視点から見極める思考ができることが大事かなと。
また、ある課題を達成したい時に、それに特化した機能を作るのか、より汎用的に作っておいて拡張可能性を担保しておくのか、という問題がありますね。それぞれの判断には、コストの違いが伴います。
特化した機能を実装すれば、考えることが減るので早くリリースできますが、それを拡張するには時間コストがかかるかもしれません。逆に最初に作り込んでおけば、後の拡張コストは下がってトータルとしてのコストは下がるかもしれませんね。
そういった視点を持ちつつ、スピード感という意識を掛け合わせて最終的に判断しています。
技術選定に関しても、そういった視点を大切にしています。個人的には特に、「自分たちがコントロールできる状態に収めておく」ということを重要な観点として考えています。
プロダクト開発においては息の長い開発をしていくことが前提になるので、先を見て、「この先これが運用可能な技術か」ということは大きなファクターとして考えることにしています。
とは言え状況は変化するので、イメージですが、向こう2年くらいは考えて判断している感覚です。データ構造を決める上でも、新しいミドルウエアを使うという時も、基本的に同じ考え方です。
ただ、3ヶ月で捨てるという判断に至る場合もあるので、もっと短期的に考えるケースもあり、そこはエンジニアとしての腕の見せ所かなと思います。
スマートニュースの広告における、ネクストチャレンジとは
西尾 自分たち広告に携わるエンジニアのミッションは、「労働集約型」の領域を自動化していくことだと考えています。
広告代理店などが大きな人的コストをかけて突破しているような領域を見つけて自動化し、そこの負担を下げ、人間には人間しかできないことに集中してもらうこと。
これにより僕たちの広告プロダクトが、高いパフォーマンスを維持することができると考えています。
去年くらいまでは、広告のオーディエンス設定や入札価格設定の自動化に取り組むことで、パフォーマンスの向上に寄与しました。
現在は、それよりもより細かな広告単位である、広告クリエイティブの作成と運用という領域に最も人的コストがかかっていると見ています。
そこで広告クリエイティブの自動生成と、表示されるクリエイティブの最適化に注目し、この領域で機能開発を進めています。
例えば、ひとつは2018年6月にリリースした、Dynamic Creative Optimization(以下、DCO)です。
DCOでは、タイトルや画像などの広告クリエイティブを構成する要素をバラバラに入稿していただき、それらを自動で組み合わせて広告クリエイティブが作られます。
最適な組み合わせを機械学習によって自動で決めて、特に成果の高い広告を配信するという仕組みです。
村石 もうひとつは、まだリリースという意味では道半ばなのですが、僕がプロダクトマネージャーとして取り組んでいるDynamic Adsです。
Dynamic Adsでは、ECサイトに登録されている商品画像のようなデータを広告主とデータ連携することによってクリエイティブを自動生成し、さらに僕らの最適化ロジックにより、個々のユーザーに適した広告クリエイティブを配信することができます。
DCOやDynamic Adsは、自動化の流れの中で、将来、アドプロダクトとして主流になってくるであろうと考えています。
こうした大きな流れを捉え、いち早くプロダクトを開発していくことが、僕らエンジニアが今やっていることであって、今後のミッションでもありますね。(了)