SHOEISHA iD

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

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

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

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

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

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

チャット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株式会社

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

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

もっと読む

この記事の著者

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

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

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

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

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

この記事をシェア

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

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング