RedBotでチャットボットをプロトタイピングする

チャットボットをはじめとした会話型サービスの開発に関心がある方向けに、この分野のオープンソースをざっくりレビューしていきます。

[前回](https://qiita.com/nakmas/items/be611bdadabac0904e0c) は [Articulate](https://github.com/samtecspg/articulate) をレビューしました。

今回は RedBot http://red-bot.io/ です。

##RedBotとは

[RedBot](http://red-bot.io/)とは、[Node-RED](https://nodered.org/)をベースにした「チャットボット開発フレームワーク」といえるものです。MITライセンスで、Guido Bellomo氏が開発しています。

[Node-RED](https://nodered.org/)とは、フローエディタを中心としたビジュアルプログラミングツールです。ブラウザ上のGUIで、ノードと呼ばれるプログラムモジュールを作図ツールのように紐付けることで、様々なサーバーアプリケーションを構築することができます。詳しくは、[Qiita上の優れた記事](https://qiita.com/tags/node-red)を参照してください。

![Node-RED 2019-03-25 22-50-59.png](https://qiita-image-store.s3.amazonaws.com/0/356716/4d2c71d7-a981-fb5f-4afb-bd830cd9d4b8.png)

RedBotは、Node-RED内にライブラリとしてインストールすることで、Node-REDを「チャットボットのビジュアルプログラミングツール」に変えるものです。

一般的に、チャットボットの主な機能はデータフローとして説明しやすいため、フロー図による可視化と相性がよく、[チャットボットプラットフォームの多くでビジュアルプログラミングツールが提供](https://www.google.com/search?q=chatbot+flow+editor&source=lnms&tbm=isch&sa=X&ved=0ahUKEwjk9IKZi5zhAhUI9rwKHVvaAIQQ_AUIDigB&biw=1290&bih=1115)されています。RedBotは、そのオープンソースバージョンの１つといえます。

##RedBotの特徴

### チャットボット用に最適化された開発フレームワーク

実のところ、Node-REDはそれ自体でもチャットボット開発に[よく利用されており](https://qiita.com/search?utf8=%E2%9C%93&sort=&q=node-red+%E3%83%81%E3%83%A3%E3%83%83%E3%83%88%E3%83%9C%E3%83%83%E3%83%88)、チャットボット開発に使えるライブラリもコミュニティから多く提供されています。なぜRedBotが必要なのでしょうか。

RedBotは、Node-RED上でのチャットボット開発に対して「最適化されたノードライブラリ」と「それらを接続してシステムを組み立てるお作法」（＝フレームワーク）を提供するものです。

チャットボットのシステムは、人間と接するメッセージングプラットフォームと外部の様々なサービスを結びつける、ハブのような機能を果たしますが、そのインターフェースは様々で、実際に繋ぐには多くのデータ加工や工夫が必要になります。フレームワークとして設計されたノードライブラリを使うことで、モジュールを繋ぐための煩わしさを最小限にして、チャットボットの本質的なプログラミングに集中できます。

###様々なチャットプラットフォームやNLUへの接続に対応

RedBotで提供されるノードライブラリでは、チャット系サービスとして、[Alexa](https://developer.amazon.com/ja/alexa), [Facebook](https://www.messenger.com/), [Slack](https://api.slack.com/), [Telegram]()https://telegram.org/, [Twilio](https://www.twilio.com/), [Viber](https://www.viber.com/), [Discord](https://discordapp.com/), そして[Smooch](https://smooch.io/)への接続に対応しています。

また、NLU系サービスとしては、[Dialogflow](https://dialogflow.com/) と [Recast.ai](https://cai.tools.sap/) (今はSAP Conversational AIでしたっけ) に接続して、ユーザー入力の意図理解に利用できます。

FacebookやSlackであれば馴染みのある方も多いでしょうし、NLUが必要ならDialogflowを使えば、とりあえずすぐ試せるものになります。便利ですね。

###チャットボットのプロトタイピングツール

RedBotは、最終的にプロダクション環境にデプロイして運用することも可能になっていますが、まずはプロトタイピングツールとして使うことに向いていると思います。

理由のひとつは、マルチプラットフォーム対応のシングルシステム開発が可能な点です。メッセージ処理用のノードの多くが複数プラットフォームに対応した仕様になっており、プラットフォームごとにロジックを書き分ける場面を減らせます。コンセプト検証をするうえでは、特定プラットフォームに依存しない形になっているほうが望ましく、そういったプロトタイピングがしやすいところがあります。

もうひとつは、セッションコンテキストなどの会話制御の基本的な仕組みが、標準でそこそこ揃っている点です。これらを基盤とすることで、スロットフィリングなどの高度な機能も開発が楽になります。

ほかにも、Node-REDのコミュニティにある豊富なライブラリを活用できる点があります。チャット以外のサービスとのインテグレーションも敷居が低く、アイデアを素早く形にすることに向いています。

##開発者向けアクションアイデア

このOSSの活用アイデアや、コントリビュートしたいことについてのアイデアも残します。

* LINEコネクタの開発
  * プロトタイピングツールとして使う際にはチャットUIは何でもいいのですが、やはり日本でシェアの高いLINEでも使えたら便利です。関係者も巻き込んだサービス検証もしやすくなります。
* Web版チャットUIアプリの開発
  * LINEと同じく、日本市場向けにサービスを検証をするのなら、Webサイトに導入できるチャットUIアプリが欲しいですね。メッセージングアプリ互換のUIと、RedBotに繋ぐゲートウェイサーバーのようなものが必要そうです。

個人レベルで開発されているOSSですが、開発が長期にわたって継続されており、質の良いプロジェクトであることが感じられます。ぜひ遊んでみて、アイデアを形にするツールとして有用かどうか試してみてください。

##We're hiring!
AIチャットボットを開発しています。
ご興味ある方は[採用ページ](https://www.relia-digital.com/careers/)からお気軽にご連絡ください！