SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

【デブサミ2018 夏】セッションレポート(AD)

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

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

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
【デブサミ2018 夏】セッションレポート連載記事一覧

もっと読む

この記事の著者

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

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/11015 2018/08/23 14:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング