最近BOTあたりの技術が騒がしいです。Linebot とか facebook Bot Storeとか。
エンジニアからしてみたら、一体何十年前の話だよ、って感じですが、確かに概念は同じかもしれませんが、役割や必要な技術が異なっているようにも見えます。
本エントリでは、
- BOTとはなにか
- なぜ最近BOTが流行っているのか
- BOT実装の種類
- BOTの構成要素
の整理が自分なりにできればと思います。
反論ご意見あればコメントへお願いします。
BOTとはなにか
BOTとは"Robot"の略で、「人の介在なしに、何かを命令すると、その命令を遂行してくれるもの」という概念のことです。
それだけです。
よく「自動化」や「chatops」などの話をすると、一緒にBOTの話が出てきますが、それは当然のことといえます。なぜならBOTの有効な適用先として上記の者があるからです。
また、"hubot"などの話が出てきますが、それはBOTを実現しやすいようにする実装であり、BOTそのものではないと考えています。
BOTはただの概念です。
なぜ最近BOTが流行っているのか
エンジニアたちはBOTの概念をかなり前から使用していました。
僕が知っている中では、IRCの時代からbotがあったし、そもそもエンジニアは自動化が大好きで、人と付き合うことが大嫌いです。(要出典)
しかし、エンジニア以外にはあまりこの文化や概念が浸透しませんでした。なぜなら、BOTの実装の大半はエンジニアが主に使うツール上にあったからです。
さらに、BOTを実装するにはマンパワーがかかります。 そんな労力をかけるくらいなら自分でするわ、と思う人が大半だったのでしょう。
しかしここ最近、その状況が変わってきました。
HTTPによるPCウェブページ、ガラケーのページ、スマートフォンアプリに続く、サービスの、第4のユーザ接点になる可能性が見えてきたからです。
Facebook、Lineなどのメッセンジャーアプリを開発するプラットフォーマーが、ユーザ数、アクティブユーザを増やすため、次々とBOTを容易に実装できるWebAPIを作成し、開放しようという動きが強まっています。
また、Google DeepMindの囲碁勝負や、IBMのWatsonなど、AIが人間のように考えられるかもしれない、という夢も見えてきました。
これらを総合すると、コンシェルジュに話しかけるように、レストランの予約をしたり、買い物をしたり、
もしくは単純に必要なものの名前と個数を指定したら買い物ができる、といったものを開発すれば、サービスにおいてユーザの主な接点になりうる可能性が見えてきたわけです。
BOT実装の種類
ひとくくりにBOTと言っても、沢山の種類が存在すると考えています。
推薦型
- コンシェルジュのように、ユーザ個人の過去のデータなどを用いて最適化された情報を推薦し情報を提示する
- 例:「週末に箱根に行きたい」→(過去の購買データ、家族データ、閲覧履歴などを処理し最適な宿を選定)→「○○旅館はいかがでしょう?家族3人で○○円になります」
命令形
- 命令を入力し、決められた情報を提示する
- 例:「2016/4/16-2016/4/17 箱根」→「検索結果を表示します ○○旅館、xxホテル、△△旅館 もっと見る」
派生:自然言語での命令系
- 例:「カスタマーサポートは何時から開いてるの?」「カスサポって9時にはあいてんの?」→「(サービス名)のカスタマーサポートは平日午前○時から○時になります」
BOTの構成要素
BOTは3つの要素から構成されると考えています。
入力理解
ユーザの入力、命令を理解して、アルゴリズムに命令を出す
アルゴリズム
ユーザが求めている情報を選出する
情報提示
アルゴリズムによって選出された情報をユーザに提示する
リッチなBOTを作るためには、
-
入力理解
定められたコマンドではなく、自然な文を理解して求めている情報を判断する -
アルゴリズム
パターンマッチではなく、ユーザの嗜好、サービスのKPI/KGIを加味した情報の選出 -
情報提示
プラットフォームが定めた方法を熟知して魅力的に情報の提示
などを考える必要があります
まとめ
BOTとはただの概念であり、「BOTを作るぞ!」と言っても、様々なパターンがあります。
実現するものの定義や、機能分解を行って、何を、どのように作るか、を考えることが非常に大切だなと思いました。
次はLinebotで作ったものでも書ければいいな