Botを作るためのサービスとかまとめ

# はじめに

Botを作るためのサービスとかのまとめ。
とりあえず目についたものをまとめているので、
他にもこんなの有るよとかあれば教えてもらえると嬉しいです。
**2017年11月29日時点**でのまとめなので仕様変更などされている可能性があります。

## [Bot Framework](https://dev.botframework.com/)

#### 特徴

- Microsoftが提供するBot開発フレームワーク。
- 会話シナリオはコードを書く必要がある。
- 自然言語処理は[LUIS](https://www.luis.ai)を使用する必要がある。
- 対応言語はコードで書くので何でもOK

#### 対応プラットフォーム

- Bing
- Cortana
- Email
- Facebook
- GroupMe
- Kik
- Skype
- Skype for Business
- Slack
- SMS
- Microsoft Teams
- Telegram
- WebChat
- WeChat ※ドキュメントには存在するけど、設定で選べない…。
- Direct Line(REST API)

#### 開発言語
- .Net(C#)
- Node.js

## [Lex](https://aws.amazon.com/jp/lex/)

#### 特徴

- Amazonが提供するBotプラットフォーム
- 会話シナリオはWebの設定画面から作成。
- 自然言語処理はLexで行われる。
- 対応言語は**米国英語**のみ…。
- 音声入力も出来る。

#### 対応プラットフォーム

- Facebook Messenger
- Slack
- Kik
- Twilio SMS
- REST API

#### 開発言語

会話シナリオの中でAWS LAMBDAも使用できるので、LAMBDAで使用できる開発言語。
クライアント向けには各種SDKも用意されている。用意されているSDKは以下の通り。

- iOS
- Android
- Java
- JavaScript
- Python
- CLI
- NET
- Ruby on Rails
- PHP
- Go
- CPP

## [Dialogflow](https://dialogflow.com/)

#### 特徴

- Googleが提供するBotプラットフォーム。元々はAPI.AIという名前だったがGoogleに買収され最近今の名前に。
- 会話シナリオはWebの設定画面から作成。
- 自然言語処理はDialogflowで行われる。
- 対応言語は[豊富](https://dialogflow.com/docs/reference/language)。
- 音声入力も出来る。

#### 対応プラットフォーム

- Google Assistant
- Facebook Messenger
- Slack
- Dialogflow Web Demo
- Kik
- Line
- Skype
- Cisco Spark
- Telegram
- Cisco Tropo
- Twilio
- Twilio Programmable Chat
- Twitter
- Viber

#### 開発言語

会話シナリオの中でWebhookで外部APIと連携出来るので、その部分は開発言語は何でも。
クライアント向けには各種SDKも用意されている。用意されているSDKは以下の通り。

- Android SDK
- Botkit SDK
- C++
- Cordova SDK
- HTML + JS
- iOS SDK
- Java SDK
- JavaScript SDK
- .NET
- Node.js SDK
- Python SDK
- Ruby SDK
- Unity SDK
- Xamarin SDK

## [Repl-AI](https://repl-ai.jp/)

#### 特徴

- NTTドコモとインターメディアプラニングが共同開発、提供するBotプラットフォーム。
- 会話シナリオはコードを一行も書かずにマウス操作で作れるらしい。作成画面は画像の通り。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/199859/bcbd8659-506e-40cb-f013-aa6d39e0dbe5.png)
- 自然言語処理は、曖昧一致や部分一致、ユーザー辞書機能に複数のキーワードを登録させることにより表記のゆれを吸収させる仕様。
- 会話シナリオ内からREST APIを呼ぶみたいなことは出来ないみたいなので使いどころを選ぶ気がする…。※docomo Developer supportの一部APIは呼べるようです。
- 対応言語は自然言語処理等無いので何でもOK
- 少し前に話題になった横浜市のゴミ分別BotはRepl-AIで開発されているようです。

#### 対応プラットフォーム

- LINE
- Facebook Messeger
- REST API

#### 開発言語

コードを書かずに作れるので、開発言語なんてありません。
と言いつつREST APIは用意されているので、クライアント側はREST APIを叩けるならどんな開発言語でも可能です。

## [Wit.ai](https://wit.ai/)

#### 特徴

- Wit.aiが提供するBotプラットフォーム。Facebookに買収され傘下に。
- 会話シナリオはWebの設定画面から作成。
- 自然言語処理はDialogflowを使用して行われる。
- 対応言語は[豊富](https://wit.ai/faq)。

#### 対応プラットフォーム
- Facebook Messenger
- REST API

#### 開発言語
- Node.js
- Python
- Ruby

色々な人が書いている記事を見ると↑以外の言語も対応と書いているが、
公式のドキュメントでクライアント向けSDKが用意されているのは3つだけでした。
もちろんREST APIが用意されているので、SDK無くても開発は可能です。

## [Motion AI](http://www.motion.ai/)

#### 特徴

- Motion AIが提供するBotプラットフォーム。
- 会話シナリオはGUIベースで作成出来る。
- 自然言語処理はMotion AIで行われる。
- 対応言語は有料プランでBetaだが[豊富](https://docs.motion.ai/docs/translation) ※ドキュメントを読む限り翻訳をしてくれそう。

#### 対応プラットフォーム

- Webchat
- SMS
- Messenger
- Slack
- Email
- REST API

#### 開発言語

GUIで会話シナリオを作成するため特に開発言語は無し。REST APIが用意されているので、クライアント側はREST APIを叩けるならどんな開発言語でも可能です。
公式ドキュメントのサンプルはNode.js版が用意されています。

## [hangoutsbot](https://github.com/hangoutsbot/hangoutsbot)

#### 特徴

- GitHubで公開されているGoogleアカウントをハングアウト上でBot化するオープンソースライブラリ。Google公式では無い。
- チャットBotでは無く単機能Botを開発するのに向いている。
- 自然言語処理は他のサービスを使用する必要がある。
- 対応言語はコードで書くので何でもOK

#### 対応プラットフォーム

- Googleハングアウト

#### 開発言語

- Python