テクノロジードリブンでビジネスインパクトを生み出す!(前編) ─ Facebook、楽天、サイバーエージェントの取組事例を紹介!
2018年12月16日、仙台市主催のイベント「テクノロジードリブンでビジネスインパクトを生み出す!-最前線でチャレンジをするチームの取組事例を大公開-」が開催された。同勉強会は仙台市が推進する「SENDAI X-TECH Innovation Project」の一つだ。
同プロジェクトは、仙台市をフィールドに、IoTやAI、VR/AR、5Gなどの先端技術とさまざまな産業との掛け合わせ(X-TECH)による新事業の創出やそれをリードする先端IT人材の育成・交流により、テクノロジーの力でイノベーションを生み出し、都市の体験をアップデートしていくことを目指している。
本レポートでは、当日のイベント前半に行われた内容を紹介する。
仙台市が推進する「SENDAI X-TECH Innovation Project」
まずは同イベントの主催者である、仙台市産業政策部産業振興課の白岩靖史氏がビデオ通話画面で登場。仙台市では現在、「SENDAI X-TECH Innovation Project」に取り組んでいる。同プロジェクトでは楽天や球団とのアイデアソンなども実施するなど、最新技術を使って東北を面白くするためさまざまなイベントを企画している。
「今回のイベントはその一つで、非常に豪華な人たちが集まっていただきました。このような機会はそうそうありません。ぜひ、最後まで楽しんでください。そしていずれ、本日の登壇者たちを超える新しいアイデア、サービスを、仙台から世界に発信できるようにしていきたいと考えています」
と、会場の参加者に呼びかけた。
最初に登壇したのは、Facebook ソリューションズエンジニアマネージャーの安藤祐介さん。安藤さんは2015年にFacebookに入社。アジアパシフィックにおけるソリューション提案とAPI、SDKなどの開発改善などを担当している。今回は「ビジネスにインパクトを生み出すためのソリューションズエンジニアリング」をテーマにセッションを行った。
▲Facebook ソリューションズエンジニアマネージャー 安藤 祐介さん
ソリューションズエンジニアという職種は、主に外資系企業などに存在する。自社が提供しているサービスに加え、それと組み合わせて使われる技術の専門技術を持つことが求められる。仕事としては、クライアントと実際に会ってコミュニケーションを取り、要件を聞き出して提案活動も行う。セールスエンジニアの一種とみなされることもある。
Facebookのソリューションズエンジニアは、一般で言われている職種と少し異なる。求人のページにも記載があるが、最も重要な業務はプロダクトの新規開発・改良を行うこと。そのため、プロダクト技術の専門知識はもちろんだが、クライアントとのコミュニケーション、提案活動ももちろん行う。
例えば、Facebookの広告機能と代理店側のシステムをつなぐという課題があった場合、既存のソリューションで対応できるのか、もしくは要件に合わせて新しいプロダクトを作るのかなど、クライアントである広告代理店と話しをして提案する。もちろん開発するのはコストがかかる。開発しても想定通りにグロースしないかもしれない。「新しく開発する」と判断したエンジニアが責任を持ってそのリサーチも行う。
安藤さんのチームに所属するエンジニアは、データサイエンティストの研修を必ず受けているので、リサーチやKPIの設定もできるようになっているという。従って、プロトタイプを作ってから使ってもらう人を探す必要はない。効果の検証については課題がわかって作っているので、その部分だけを見る。
結果として既存のプロダクトの方がよかったこともある。その場合は既存のプロダクトを使っていきましょうということもあるし、改良の余地があれば改良を続けて洗練させ、ローンチしていくこともある。
具体的にどんなことをしているのか。事例を紹介したい。
「Facebook Business Extension」は、数年前にダイナミック広告の課題を解決するために開発された機能で、今や人気のプロダクトに成長している。ダイナミック広告は非常に強力な広告プロダクトで人気が高まっていたが、開始をするには複雑な設定が必要だった。
ダイナミック広告用のカタログを作成する、FacebookピクセルやFacebook SDKを追加する、広告テンプレートを作成するという3つの手順がある。この3つの設定は異なるプロダクトで行うため、分散していた。技術的な素養が十分でない人にとって、すべての設定を連動する難しさがあった。そこである小さなeコマースのショップを運営している企業から、この作業を容易にするプラグインを作ってほしいという要望をもらった。
もしそれが実現すれば、いろいろな人が使える。そこでプラグインと共にバックエンド側の画面も同時に開発することにしたのである。このような連携機能をリリースした結果、Facebookのダイナミック広告はより多くのクライアントに使われるようになった。
現在、世界中の多くのeコマースプラットフォームが活用。日本ではEC-CUBEなどのぷらっとフォームを通じて非常に多くの店舗で使われている。ここまで成長した背景にあるのはバックエンドも開発したこと。BASEなどのホスティング型のeコマースプラットフォームからも接続できるようになったからだ。
eコマースサイトの問い合わせが容易にできるよう、メッセンジャーとの連携機能も追加している。また2018年夏頃、日本で「Instagramショッピング機能」をリリースしたが、それに対応した商品を登録できると言う機能もバックエンドに追加している。それまでは個別に機能を設定しなければならなかったが、Facebook Business Extensionを使うことで1つに統合することができた。
複数の組織を超えた解決策の全体像は見えづらい。こういうプロダクトが必要だという話はビジネス側もエンジニア側も同時にはできない。いろんな人に話を聞き、本質が見えることで解決策が開ける。エンジニアが課題を捉えてプロダクトを開発することで可能性が広がるのだ。
そしてプロダクトが成功する可能性が大きくないことを受け入れた上で、適切に対処することだ。ビジネスと技術を幅広く習得するのは簡単ではないが、リターンは大きい。ビジネスにインパクトをテクノロジーで生み出すソリューションズエンジニアリングという仕事は、やりがいのある非常に面白い仕事だ。
楽天市場のカスタマーサポートを支えるAIチャットボット
続いて登壇したのは楽天の西山貴之さん。2011年4月に楽天に入社し、その年に仙台に転勤。楽天 2011年4月に入社。その年に仙台に転勤。楽天イーグルスのスタジアム遺失物管理システムやRMS WEB SERVICE、System Event Notification Serviceといった新規サービスの開発を経験した後、2016年より楽天市場カスタマサポート(CS)におけるAIチャットボットの開発・運用に携わっている。
西山さんは、AIチャットボットの開発経緯、問題に対する技術的なアプローチの方法などについて、「カスタマーサポートにおけるAIチャットボットの導入」をテーマに語った。
▲楽天株式会社 西山 貴之さん
西山さんが開発・運用している楽天市場CSチャットボットとは、例えばログインできない、支払いについて確認したい、配送状況を確認したいなど、ユーザーが情報を知りたいときにAIで返答するサービスである。
同サービスがリリースされたのは2016年9月。当時、1カ月で10万件ぐらいの問い合わせが来ており、問い合わせ件数は増えるものの、オペレータ数の削減が予定されていたことから対応率も下がり、顧客満足度を下げる可能性があった。また、ユーザーからの問い合わせの6割がチャットや電話。問い合わせに対するリアルタイム性と顧客満足度には相関があった。
そこでCSチャットボット開発の目的を2つ掲げた。第一に「24時間リアルタイムでの安定的なサポートを提供し満足度を上げる」こと。第二が「シンプルな問い合わせをボットに集約し人的コストを削減する」ことである。
AIチャットボットであれば、リアルタイムに待ち時間もなく、24時間いつでも使える。接続できる数にも制限ではないので、サポート体制としては強い。ユーザーにとっても好きなタイミングで問い合わせられる。
その上、テキストの証跡が残るので、その後の分析や調査にも活用できるというメリットもある。また学習についても対話フローやFAQケースもきちんと設計すれば対応できるため、FAQに対する学習コストも少ない。もちろん、デメリットもある。それは回答可能な範囲に限りがあることだ。そこで、複雑な質問については、有人のオペレータにつなぐという設計にすることにした。
サービスの構成と採用している技術は図の通り。
AIチャットボットの形式は2種類ある。まずは会話形式。質問をしながら適切な回答に導くというもの。メリットは、質問しながら進められ、状況を明確化でき、その結果、的確な答えを提供できる。細やかなカスタマイズもできる。デメリットはメンテナンスとテストが大変なことだ。
もう一つが、一問一答形式。質問から適切な回答と思われるものを表示するというもの。メリットは会話形式よりメンテナンスが簡単で、幅広い範囲の質問に対応できること。またユーザーの曖昧な質問にも何らか回答が可能であることだ。一方のデメリットは会話に比べると正答率が低いこと。ユーザーに対しても必ずいい答えを提供できるわけではないことだ。
この2種類の形式のメリット、デメリットを総括すると、会話形式は問い合わせ件数が多く、その種別が少ない場合に向いており、一方の一問一答形式は問い合わせ数が少なく、種別が多いものに向いている。今回、開発するCSチャットボットの場合は、問い合わせの種別が少なくターゲットが多いので、会話形式を採用することにした。
PCよりもスマホでの利用が多いので、通信が寸断しても大丈夫なよう、ストレージを使って会話の継続を実現させている。
リリースした後の課題と工夫点について。トラブルなどでAIサービスが何も答えを返してこない場合があった。そこでどのような状況でも手動で他チャネルへ誘導できる画面に切り替えられる機能を構築。また突発的に起きる問い合わせに対して、素早いハンドリングができないこともわかった。
そこでチャット表示時にNotificationを使ってお知らせする機能や、一定キーワードが含まれていればAIに渡さず、一定の会話を返す機能(キーワードレスポンス機能)、お知らせやレスポンス内容を簡単に編集できる機能を開発した。
またAIと会話せず、他チャネルにいきなり問い合わせがいかないよう、意図的に他チャネルへの誘導を制限することも行ったという。このような工夫をすることで、問い合わせ数を昨年と比べて11%削減することに成功した。さらに受注単位で付与されるポイントの表示や、配送状況やポイント数の確認など、ユーザーの個別の情報を出せる仕組みも開発した。
その結果、配送状況の確認に関する問い合わせ数は7.6%、ポイント数確認のための問い合わせ数を29.6%削減できた。もちろん課題は山積している。だが、AIの可能性は溢れている。AIを活用してビジネスにインパクトを与え、一緒に仙台を盛り上げていきましょう」と抱負を語り、セッションを締めた。
AbemaTVにおける推薦システムの開発
前半最後に登壇したのは、サイバーエージェント 秋葉原ラボの福田鉄也さん。福田さんは2016年にサイバーエージェントに転職。現在は秋葉原ラボで推薦システムの開発・運用の従事している。秋葉原ラボはメディア事業部門の研究開発組織。サービスから生成される大規模データの収集、蓄積、処理基盤を開発し、分析、機械学習などによるデータ活用を行っている。福田さんのセッションタイトルは「AbemaTVにおける推薦システム」。
▲株式会社サイバーエージェント 秋葉原ラボ 福田 鉄也さん
「AbemaTV」とはサイバーエージェントとテレビ朝日が共同で展開しているインターネットテレビ局である。ニュースやドラマ、アニメなどのコンテンツを用意し、24時間365日、見られるようになっている。またAbemaビデオというビデオオンデマンド型の機能も存在する。
●こちらもオススメ
番組のページに表示されている推薦。類似の番組を表示する。パーソナライズの要素を少し入れている。
●視聴履歴からのおすすめ
ビデオのトップページなどで使っているレコメンデーション。完全なパーソナライズ。ユーザー個別に番組を推薦する。
これらの推薦システムをどう実装したのか。推薦システムはオンラインで提供しているため、数ミリ秒以内にレスポンスを返さないといけないなど、レイテンシーには制限がある。そのため大量の複雑な計算はしたくない。
そこで2段階の処理を行うことにした。第一段階目の処理は粗いアルゴリズムによる候補選択。これは計算時間を削減するため。すべての番組から推薦候補を絞る。そして2段階目の処理として候補のリランキングを行っている。候補から最終的な上位の推薦結果を得ることで、精度の向上を図っている。
候補選択の目的は、全番組の中から高速に推薦候補を選択すること。だが、ユーザーの視聴など行動に対する更新性は保ちたかった。 候補選択のアプローチとしては、オフラインで類似番組を事前計算して、その結果をオンラインでユーザーの直近の行動に合わせて推薦する方法を採用している。
類似番組の計算については、クライアントからの行動ログをPatriotと呼ばれるHadoop系のシステムに送り、そのユーザーの行動ログを利用してPatriot上でバッチジョブを実行して、類似番組の計算結果をDBに書き出す。この段階ではまだパーソナライズされていない。
「視聴履歴からのおすすめ」の場合は、もう少し事前準備が必要になる。ユーザーの行動ログを「Zero」という内製のストリーム処理基盤に送る。ここでユーザーの視聴ログをほぼリアルタイムでデータストアに書き出す。クライアントから推薦のリクエストがきたら、ユーザーの直近の行動ログを取得し、そのログに含んでいる番組に似た番組をDBからまとめて取得し、それらをマージして候補として利用している。
次は2段階目のアルゴリズムについて。ここでの目的は、先ほど取得した候補の中からよりよい数件の推薦結果の上位を取得することだ。まずはリクエストしてきたユーザーがそのとき見そうな番組を上位に表示するモデルをつくるのである。
ユーザーの行動ログ、マスタ情報などからオフラインでモデルを学習して、モデル配信サーバにデプロイする。Recommendation APIのバックエンドとして、ランキングのためのコンポーネントを作成。Recommendation APIがオンラインで先ほどの推薦候補をランキングAPIに投げて、スコアリング。予測スコア順に結果を並び替えて、クライアントに返却するという実装を行っている。
サイバーエージェントにはいろんなメディアサービスがあり、AbemaTV以外にもいろいろなサービスで推薦システムが使われている。秋葉原ラボでは、複数のメディアサービス向けに共通の推薦基盤を開発、運用している。今回はバッチ処理部分の共通化のために開発しているバッチフレームワークを紹介する。
バッチフレームワークを開発する背景には、推薦システムのバッチ処理には定型的な部分が多いことが挙げられる。各サービスへの推薦システムの導入コストを削減したいという思いに加え、単一のサービス1種類のコンテツであっても、複数のデータセットやアルゴリズムを手軽に試したいという思いもあった。
構成要素はジョブとタスク。ジョブとはバッチの一連の処理をまとめたもの。推薦ジョブ、モデルのオフライン評価ジョブなどだ。一方のタスクは、ジョブを構成する処理の単位。データの読み込み、モデルの学習、推薦結果の書き出しなどだ。これが再利用できる形になっている。
推薦ジョブは「Reader(ユーザーの行動ログなど必要なデータの読み込み)」「Processor(読み込んだデータに対する処理)」「Recommender(機械学習モデルの生成、推薦結果の生成)」「SeriviceProcessor(各サービスで固有の処理を集約したもの)」「Writer(データストアへの推薦結果の書き出し)」の5つのタスクで構成されている。
ジョブの中身となるレシピはYAML形式で記述している。今後はより良いアルゴリズム、より精緻な機械学習モデルの開発に取り組みたいと考えている。またビデオ以外のコンテンツの推薦も検討しており、放送枠(時間の制約がある)についても、もう少し個人に最適化されたものが提供できればいいなと思っている。ページに表示されているモジュール自体の並び順のパーソナライズも将来的には取り組みたい。
【パネルディスカッション】テクノロジードリブンでビジネスインパクトを生み出す
続いて、パネルディスカッションが実施された。モデレータを務めたのは、マイクロソフトやGoogleで活躍した後に独立し、現在は複数の企業の技術顧問を務める及川卓也さんである。テーマは「テクノロジードリブンでビジネスインパクトを生み出すためには」。
▲イベント当時フリーランス技術アドバイザーで、
現在はTably株式会社 代表取締役 Technology Enabler 及川 卓也さん
及川:まずは、そもそも何をビジネスインパクトとしているのかについて聞かせてください。
安藤:広告主や広告代理店向けの案件が多いので、広告に対するROIの改善、広告出稿額などに着目しています。
西山:開発しているのはカスタマーサポート向けのサービス。問い合わせる方とテクノロジーのギャップが広がってしまっている。したがって、そこの距離を縮めていくことに社会的にインパクトを感じています。
福田:ユーザーが番組を何分ぐらい視聴しているかという点と、CTRなどをKPIに定めています。
及川:KPIによってはユーザー、運営者、カスタマーサポートなどのステークホルダーとトレードオフになるものもある。そのバランスをどうとって設計するのか。コツがあれば教えてください。
西山:我々の部署のミッションは、ユーザーに気持ちよく使ってもらうこと。トレードオフがあったとしても、その軸をぶらさないように考えることにしています。
安藤:ステークホルダーが増えると、それぞれが追っているモノが異なるので、どうしてもトレードオフが出てくる。その解決方法としては、コミュニケーションをとるしかないと思っています。
及川:アジャイルの手法のインセプションデッキが使えるのでは。ステークホルダーをあらかじめ全部リストアップし、どの地点まで妥協できるのか決め、コンセンサスを取っておくという方法です。
福田:我々はWebサービスなので、立場として、事業者側とユーザー側の2つの立場がある。西山さんが話したように、一番大切なKPIを追うことが大事だと考えています。CTRだけを追うと、ユーザーにクリックされやすいモノになり、CTRは上がりますが、ユーザーのためになっていない場合もあります。そこで、ユーザー体験の重要なところも指標として入れています。
及川:ビジネスインパクトを生み出すためには、パートナー作り、エコシステムづくりがカギを握ると考えていますが、いかがですか?
福田:社外との連携は立場上ありませんが、社内のチーム間の連携はあります。レコメンドは機械学習よりのシステムで、アルゴリズムが話の中心になりがちですが、アルゴリズムの話とそれをプロダクションで使うのには隔たりがあります。
システムを使うサービス側のチームとの連携も重要で、正しく問題を設定して正しくシステムを作るにはいろんなチームの連携なしにできない。そういうことから考えてもパートナー作りは重要だと思います。
西山:楽天ではビジネスを考えるチームと開発側が分かれています。特にCSチャットボットは仙台で開発されており、ビジネス側は東京にいます。ビジネス側と開発側の距離を縮めるため、毎週、テレビ会議システムでミーティングを行っています。毎月1回はミーティングで東京に行くので、カスタマーサポートの現場に赴くこともある。そこで、困っていることなどをヒアリングしています。
及川:最後に仙台在住の技術者に向けて、メッセージをお願いします。
安藤:エンジニアにとって一番達成感が得られるのは、自分がやりたいことができたとき。一方、テンションが下がるのは誰かに言われたことをやれと言われてうまくいかなかったとき。自分で何か課題を見つけて、起業するのがエクストリームなやり方ですが、企業内にいても、自分がコミットしてできることがある。そういうマインドを持つと、世界が変わってくると思います。
西山:最初、所属したプロジェクトの時に機能をもりもり作って提供しましたが、その7割ぐらい使われていなかった。使われないものを作ることほど、エンジニアとして悲しいことはないし、ユーザー体験ほど大事な価値はありません。したがって、このユーザーにはこういうふうにプロダクトを使ってほしいということを念頭に置き、技術を生かすことを考えることをお勧めします。
福田:最初から完璧なモノを作るのは大変です。ビジネスインパクトが出るかどうかはやってみないとわからない。少しずつ作って試してみることが重要だと思っています。
及川:非常に参考になるメッセージをいただきました。ありがとうございました。
前半の熱気あふれるセッションはここで終了。15分間の休憩を挟んで、後半のセッションへと移っていく。
後編はこちら!