SHOEISHA iD

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

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

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

ヒト化するチャットBotの作り方とは? 自然な会話でやり取り可能な栄養士・トレーナーのサービスをデモで体感【デブサミ2018】

【16-C-2】【全員参加型】Botで専属トレーナー・栄養士を雇う世界が来ています。先進の擬人化技術を今日、体験しよう。

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

 今や当たり前になりつつあるチャットBotの活用。独自のUIを用意するのではなく、LINEなどのメッセンジャーアプリやスマートスピーカーを利用し、会話形式でサービスを提供できる技術だ。現状では決まった言葉にのみ反応するものも多いが、人間が普段何気なく行っているような会話ができれば、より良いユーザー体験が実現可能なのは間違いないだろう。では、そんなチャットBotを開発するにはどうすればいいのだろうか。LINE株式会社の中嶋一樹氏が、来場者参加型のデモンストレーションを交えてセッションを行った。

  • このエントリーをはてなブックマークに追加
LINE株式会社 Developer Advocate LINE developers 中嶋一樹氏
LINE株式会社 Developer Advocate LINE developers 中嶋一樹氏

食事の記録、アドバイスができる栄養士のチャットBotを実演

 本セッションのテーマは、栄養士とトレーナーをテーマにした擬人化技術だ。「Bot」ではなく「擬人化技術」という表現には、今あるルールに縛られたBotではなく、人間同士の自然な会話に近づけたいという中嶋氏の思いが込められている。

 最初に中嶋氏が始めたのが、チャットBotを活用した栄養管理サービスのデモンストレーションだ。ユーザーが登録したプロフィールに応じて、1日にどのくらいのカロリーや栄養が必要かを計算してくれるだけでなく、食べたものを随時LINEで報告すれば、自動的にデータを記録可能なWebサービスを想定している。

 Webサービスを利用するには、ユーザーはまずログインしなくてはいけない。近年ではサービスごとに新規アカウントを作るのではなく、既存のSNSなどのアカウントを利用して異なるサービスにログインする「ソーシャルログイン」が主流になりつつある。

 「サービスのユーザー属性によりますが、若年層のモバイルユーザーをターゲットにするのであれば、LINEログインを活用するのは良い選択肢のひとつです」

 そのメリットとして、LINEにログインさえしていればシングルサインオン可能なだけでなく、ログインと同時にWebサービスをLINEの友だちに追加できることが挙げられる。これにより、パッシブなWebサービスであっても、ユーザーに対して能動的にコンタクトを取ることができるようになる。

 ログインが終わると、生年月日・性別・身長・活動量といったプロフィールを入力する画面に遷移する。それに応じた摂取カロリー量と三大栄養素が自動計算され、以降、食事を記録するごとにグラフが変動する。

 なお、ユーザーのデータは顧客情報としてデータベースに格納する必要がある。今回のデモンストレーションではSalesforceが利用された。

 食事の記録は、チャットBotを通じて行う。中嶋氏はユーザーに対して朝食の内容を確認するチャットBotを起動した。

 すると、「今日の朝食は何を食べたのかしら?」と栄養士アカウントからLINEにメッセージが入る。中嶋氏に指名された来場者が「食べてません」と答えたところ、「なんと。カロリーメイトか何か食べておきなさい」と栄養士から返答があり、会場は笑いに包まれた。次に、別の来場者が「おにぎりです」と答えると、おにぎりのカロリーである179kcalが自動で登録され、「了解。カロリー満タンまであと2196kcalです」と栄養士から返信が届いた。

 「フォームがあって『おにぎり』とピンポイントで入れるのではなく、自然言語で会話する中から、重要なエンティティを抜き出して、その栄養量を計算した上で、構造化データベースに収められます。ほとんどのスマホユーザーはLINEを使っているといわれますから、新しいサービスであっても、わざわざ使い方を覚えるストレスを感じることなく、すぐに使い始めることができます」

 今度は栄養士から問いかけられるのを待つのではなく、「お昼にサンドイッチを食べました」と自ら報告してみる。すると、マイページでは昼食のところにサンドイッチが記録された。つまり、食事を入力する際に必要なパラメーターは「食品名」と「いつ食べたのか」であり、「食品名=サンドイッチ」「いつ=お昼=昼食」と判定され、データベースに構造化された上で蓄積されたことがわかった。

筋トレのトレーナーもチャットBotに!?

 次に、中嶋氏はトレーナーのデモンストレーションを実施。筋トレで重要なポイントは、正しいフォームで行うことと、ギリギリの感覚で反復運動を繰り返すことであるとした上で、どのトレーニングを何回やったか覚えておくため、チャットBotを活用する方法を提案した。

 中嶋氏はチャットBotに対し、「トレーニングを開始します」と話しかけた。するとアイコンが先ほどの栄養士からトレーナーに切り替わり、「何のワークアウトをしますか?」と返答があった。ここでも会場から選ばれた来場者が舞台に上がり、「じゃあ腕立て伏せ」と回答。そのままチャットBotに話しかけると、「3セットやるとして1セットあたり何回やりますか?」と質問が続いた。

 「とりあえず5回」と答えると、「OK、5回ね。ではワークアウトを開始してください。終わったらワークアウトが完了したことを教えてください」とトレーナーから指示が出る。来場者が腕立て伏せをしたあと、「腕立て伏せを完了しました」と言うと、トレーナーから「お疲れ。今回の負荷がどうだったか教えてください」とメッセージが届き、「楽勝・ギリギリ・限界を超えた」の選択肢が表示される。「ギリギリ」と回答すると、「腕立て伏せについて5レップでギリギリだったことを記録しておきます」と返信があり、一連の流れが終了する。

 こうして何を何回やってどんな状態だったかを自動で記録したチャットBotは、次回に腕立て伏せをやるときには、「3セットやるとして1セットあたり何回やりますか? ちなみに前回は5レップでギリギリでした」と、前回の状況を教えてくれるのだ。

 「私から発言する内容については指示していません。自由に話してもらっても会話が成り立つようになっているのです。あまり作り込みすぎると、Botの意味がない。多少会話が脱線したとしても、ちゃんと続くことが重要だと思います」

 さらに、別の来場者が壇上に招かれた。「願わくばジムでスマホなんて持ち歩きたくない。スマートスピーカーが置いてあって、会話ができたら面白いなと思って、スマートスピーカーを用意しました」……と中嶋氏が取り出したのは、LINEの「Clova」ではなく、「Google Home mini」。「LINEの製品ではありません!」と会場の笑いを誘いながら、デモンストレーションを再開した。

 「OK Google 『私のトレーナー』につないで」「これはどうも」「トレーニングを開始します」「OK。何のワークアウトをやりますか?」「ショルダープレス」「何kgでいきますか?」「10kg」「3セットやるとして1セットあたり何回やりますか?」「5回」「OK。5回ね。ではワークアウトを開始してください。終わったらワークアウトが完了したことを教えてください」(ここでいったん、音声アシスタントがいなくなる)

 「OK Google 『私のトレーナー』につないで」「トレーニング終わりました」「お疲れ。今回の負荷がどうだったか教えてください」「ギリギリです」「ではショルダープレスについて今回は10kg、5レップでギリギリだったことを記録しておきます」

 といったように、先ほどLINE上で行っていたやり取りが、すべて音声のみで再現された。

 「こんな感じで、すべてきれいに進めばいいのですが、人間の会話はそんなにうまくはいきません。それをどこまで柔軟に受け止められるかが、Botが擬人化されているかどうかのポイントになると思います」

 さらに、トレーニング後にはプロテインを摂取する必要があるということで、トレーナーに「プロテインを買いたいのですが」と話しかける中嶋氏。「高級プロテインですね。価格は9,000円になります。よろしいでしょうか」というトレーナーの問いに対し、「OK」と中嶋氏が答えると、「ありがとうございます。ではLINEで決済URLをお送りしますね」とトレーナーは喜び、すぐに決済URLが送られてきた。こちらをタップするとLINE Payが起動する。値段はあらかじめセットされているので、「Pay Now」を押すだけで決済が完了するようになっている。

 「このようにそのまま購買へつなげることも可能です」と中嶋氏は語り、チャットBotを活用したサービス×ECといった新たなビジネスの可能性を説いた。

チャットBotをヒト化させるポイントとは

 最後に、今回のチャットBotの内部的な構造が紹介された。ちなみに、デモンストレーションでは、LINEとGoogle Homeを使っていたが、それぞれ別のチャットBotを作っているわけではなく、どちらにも対応できるシングルインスタンスでまかなっているのだという。そのアーキテクチャーの全体像を表したのが下図だ。

チャットBotを中心としたアーキテクチャーの全体像
チャットBotを中心としたアーキテクチャーの全体像

 ユーザーが接するインターフェイスは3つあるが、実際にデータベースとアクセスしているのはWebだけだ。LINEとスマートスピーカーはBotの同じインスタンスにつながっていて、それがすべてのリクエストを処理してレスポンスを返している。とはいえ、当然ながらLINEとスマートスピーカーはメーカーが異なるため、APIの仕様やレスポンスの仕様も異なる。通常は別々のコードを書く必要があるのだが、今回はBotの本体を作るため「bot-express」(Node.jsのフレームワーク)で抽象化を実現している。そのため、中嶋氏がLINEのフォーマットで書いただけで、自動的にGoogle Homeでも動くようになっているのだ。

 そしてBotで重要な自然言語解析については、Googleの「Dialogflow」と「Natural Language」が用途によって使い分けられている。食品データベースは「日本食品標準成分表」と「EDAMAN」をハイブリッドで使用することで、精度を上げているという。また、先述した通り顧客情報はすべてSalesforce上に入っている。

Botの内部構造。bot-expressは中嶋氏が開発しているフレームワークだ
Botの内部構造。bot-expressは中嶋氏が開発しているフレームワークだ

 上図がBotの内部構造だ。Botで重要なNLU(Natural Language Understanding)を効果的に使えるようにしていることと、Skillという単位でモジュール化することで開発者が集中して作業できるようになっているのが特徴だという。

Skillの中身。パラメーターとアクションで構成されていることがわかる
Skillの中身。パラメーターとアクションで構成されていることがわかる

 Skillの中身を見てみよう。Skillは大きく分けるとパラメーターとアクションに分かれている。Skillを完遂するのに必要なパラメーターは、「message_to_confirm」「parser」「reaction」の3つ。「message_to_confirm」はパラメーターが不足しているときに、どんなメッセージで確認するかを指定し、「parser」でバラエティ豊かなユーザーの答えの中にエンティティが含まれるのかどうかを突き止める。それによって「reaction」で反応を設定していく。

 「『parser』と『reaction』をいかに作り込んでいくかによって、弾力性のある作りになっていきます。ユーザーが脱線するのを、どうカバーするかがSkill開発の難しいところだと思います」

 チャットBotを作る上で「ひとつだけ注意すべきことがある」と中嶋氏は強調した。それは「Webが得意なところをBotでやらない」ということだ。よくありがちなのが何かを検索するBotである。検索はWebの得意エリアなので、「Botでやっても劣化版ができるだけ」と指摘。「Webではなく電話やヒトの方が得意なことをBotに置き換えるというのが正しいユースケースなのではないか」と説いた。

 今回紹介された開発フレームワークやBotのサンプルコードはGitHubに上げられている。

サンプルコード

 最後に中嶋氏は「自分でもBotを作ってみたい方は、私たちの勉強会にお越しください。Slackのワークスペースの中でもコミュニケーションしているので、こちらにもご参加いただければ」と語り、講演を締めくくった。

お問い合わせ

 LINE株式会社

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

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

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

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

この記事をシェア

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

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング