CodeZine(コードジン)

特集ページ一覧

共通のスキルセットを持つことがエンジニアとデータサイエンティスト協業の鍵――ヤフーのビッグデータ活用【デブサミ2018 夏】

【B-3】 加速するビッグデータ社会〜Yahoo! JAPANにおけるデータ利活用の事例とエンジニアの歩み〜

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2018/08/23 14:00

目次

PUSH通知にレコメンド、タイミング、現在地をプラス

 それで次に飛び込んだのが、「Yahoo! JAPAN」アプリのPUSH通知機能だった。PUSH通知はユーザーに気づきを与えることが主目的であるために、よりユーザーとの親和性が不可欠となる。

PUSH通知機能はユーザーとの親和性が重要
PUSH通知機能ではユーザーとの親和性を高めるためにデータを活用する

 まずユーザーに合わせた「レコメンド」機能では、サッカーが好きな人に「ワールドカップで日本が勝利した」といったニュースを配信するように、該当コンテンツに興味がありそうなユーザーに通知する仕組みにした。これはHadoop上でユーザーリストを生成し、対象ユーザーに対してPUSHを通知する。単語ベクトルのデータを用いたターゲティング素性を生成するというわけだ。

 そして、通知のタイミングを最適化する機能の追加である。これもHadoop上で、歩いているか、立ち止まったか、Wi-Fiにつながったかなどのデータを分析して、行動解析モデルを生成し適用することが試みられているという。

 3つ目の取り組みは、現在地で発生した災害情報をPUSHする機能の追加だ。これまでのYahoo! JAPANの災害通知は、ユーザーが任意で設定した地域情報に応じて配信されてきた。その設定を、いざ災害が起きたからといって変える人はいないだろう。しかし出先で災害が起きた場合、その場の情報が必要になることは明らかだ。こちらも大量の行動ログを効率的にさばくためにStream処理を利用しているという。

バックエンドエンジニアとデータサイエンティスト、協業のコツとは?

 それでは、こうした「Yahoo! JAPAN」アプリのPUSH通知のデータ活用はどのようにして行われたのか。まずチームとしては、バックエンドエンジニアとデータサイエンティストが協業する体制を整えることが重要だ。バックエンドエンジニアが所属するチームにデータサイエンティストが入ったり、他のチームにいる場合もそこから強力なサポートを受けたり、協力体制ができていたという。また、バックエンドエンジニアは通知の配信系を開発し、データサイエンティストが学習器・分類器を開発するなど程よい役割分担ができていた。

 「あくまでプロダクトをユーザーに届けるという目的は共通。その前提のもと、必要な知識をお互い共有・理解しながら開発に関われたことが肝要だったように思う。例えば、機械学習を熟知するサイエンティストは一方でWebアプリにどう当てはめればいいのかわからず、Pythonしか書けないケースが多い。そこでエンジニア側がPythonを覚えてサイエンティストが考案する機械学習ロジックをHadoop上で動作する分散処理に組み込むことを行ったこともある」

 こうしたエンジニアとデータサイエンティストの協業を実現するために、エンジニアである田地氏が頑張ったこととして挙げるのは、「Python」を書けるようになったことと、学習器・分類器それぞれの提供フローを理解することの2つ。決して難易度は高くないと話す。

 これらの経験を経て学んだことは、バックエンドエンジニアとデータサイエンティストとの「協業」が意味を成すということだ。ただし協業には「同じ言葉で話せること」が大切であり、そのために歩み寄ることが重要だという。

 それではどのように歩み寄ればいいのか。田地氏は「共通のスキルセットがあれば、共通言語で物事を語れる。徹底する必要はない。『相手が何を言っているのか』『自分は何を伝えればいいか』理解し合うことが重要」と語る。

エンジニアとデータサイエンティストの協業には、共通のスキルセットを持つことが欠かせない
エンジニアとデータサイエンティストの協業には、共通のスキルセットを持つことが欠かせない

 そして、エンジニア側が簡単にできそうなこととして、初級者向けに

  1. とりあえずPythonを書いてみる
  2. 学習・分類器を実際に書いてみる
  3. ロジスティック回帰という単語を覚える

 の3つを挙げた。また、中級者向けとして、サイエンティストが考えた機械学習ロジックを実際のアプリケーションに組み込んでみることを提案した。ただし、例えば機械学習ロジックの開発部分はサイエンティストに任せて、生成したモデルをAmazon S3に配置してもらうなど、「役割分担はある程度やっていいはず」と語った。

 そして最後に田地氏は「ビッグデータの利活用は急激な速度で広まっており、その使い方はアイデア次第で広がる。書籍や論文も出ているのでぜひ読んでみてほしい。一般的なバックエンドエンジニアも興味を持って、まずはサイエンスに触れてみることがおすすめ。その第一歩としてぜひPythonに挑戦してほしい」と語り、セッションのまとめとした。

お問い合わせ

 Yahoo! JAPAN



  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • CodeZine編集部(コードジンヘンシュウブ)

    CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

バックナンバー

連載:【デブサミ2018 夏】セッションレポート

もっと読む

All contents copyright © 2005-2020 Shoeisha Co., Ltd. All rights reserved. ver.1.5