Hubotに大変疲れたのでPython製のBotを触ってみていたのですが、Errbotは前回触ったので、Slackbotを触ってみました。
どちらもGitHub Star数は結構な数があって、どちらを使おうか悩んでいたところです。
今後、PythonでBotを作ろうと考えている方の参考になればと思います。
TL;DR
そもそも比較すること自体がおかしかったです。
以下は、特にどちらに優劣をつけるものではなく、そういう特徴がある、ということで捉えていただければと思います。
- Slackだけに対応するなら機能が豊富なのはslackbot、逆に複数のチャットツールに対応しているのはErrbot
- Slackとしてのチャット機能が充実しているのはslackbot、チャット機能としてではなくチャットツールとして機能が豊富なのはErrbot
slackbotとErrbotの特徴
slackbot
特徴
- 純粋にSlackのみが目的(名前からしてシンプル)
- Slack用途においてのみであれば機能はかなりある(thread, reaction, upload ...)
- Slackのattachmentsにも対応
メリット
Slack向けの機能は大抵ある
特徴の通りなのですが、純粋にSlack向けに開発されているので、ことSlackだけで使うのであれば申し分ないかと思います。
- thread
- reaction
- upload
ただ、slackbot自体にwebサーバ機能はデフォルトではないので、Webhookは使えません。つまり、Interactive Messagesは実現できません。
結局はPythonなので、書けばもちろん対応できます。
デメリット
チャット以上の機能は大抵作り込む必要がある
Hubotも同じといえば同じなのですが、例えば以下のような場合は自前で仕組みを作る必要があります。
- プラグインのデプロイやアップデートを行う仕組み
- Bot自体の管理(シャットダウンしたり)
- アクセス制御(例えばAさんが管理者で、Aさんだけが特権的な命令を送ることができる、など)
- Webhook(Slackのinteractive Messageで使う)
要はJenkinsやCircleCIみたいなものがいるってことですね。デメリットというか、むしろErrbotがよく出来てるなぁという印象。
未対応の機能があることはある
例えば、Hubotでいう永続化(robot.brain
相当)機能。
ただ、HubotはRedisでそれを実現しているし、コア機能として持つべきではないとして以下でrejectされています。
なので、デメリットというよりツールのポリシーとして持ちませんってことですね。
ドキュメントが少なめ
公式のREADMEだけ見てもそこまで情報は充実していないので、ソースコード見たり他の文献を見たりする必要はあるかもしれません。
ただ、そもそもツール自体がシンプルなので、そこまで語るべき内容があるわけでもなく、大抵は「あぁ、作る必要があるんだな」と分かる感じではあります。
名前...
名前が汎用的すぎて検索に引っかかりません。Errbotといい勝負です。なぜこんなことに…。
使い所
以下のような人たちに向きそうです。
- そもそもチャットツールはSlackだけ
- 豊富な機能よりもシンプルなものを使いたい、シンプルなものから必要なものだけ組み上げていきたい
Errbot
特徴
- XMPPにも対応している通り、そもそもSlackだけがカバー対象ではなく、主要チャットツールに幅広く対応
- それ故に、チャットツール独自機能をカバーしない(Slackでいうthread,reaction,attachmentsの細かい部分 など)
- チャットツールとしての機能が非常に充実していて、Webhookやプラグイン"管理"機能、Botのリスタートやログ閲覧、Botのアクセス制御など大抵の欲しい情報はある
- 公式ドキュメントも充実している
メリット
プラグイン管理がBotだけでできる
メリットでもありデメリットでもある気もしますが、プラグインをBot自体が管理するため、Botに命令を送ることで特定のプラグインをアップデートしたりできます。
従って、プラグインを更新したからといってBot自体を再起動…みたいなことは不要で、プラグイン更新→Botに取り込み命令だけで済みます。
他にもBot総体としての機能が充実
- 命令のアクセス制御
- Bot自体のリスタートやログ閲覧
などができます。
公式のドキュメントが充実
公式のドキュメントを見れば、大抵のことが書いてあります。
とりあえず一通り読んでみると、その充実っぷりがわかるかと思います。
デメリット
チャットツール独自の機能には未対応
Slackだけしか見ていませんが、ことSlackに関しては機能はそれほど多くはありません。これは、Errbotの志向もあるようで、他のツールと汎用的に使えることを目指している(と思う)ので、Slack独自の機能は大抵使えません。
基本的にプラグイン形式で動きますし、公式のドキュメントも揃っているので、作ろうと思えば作れるとは思います。
従って、チャットツールがSlackだけであり、かつ凝ったことをしたいのであれば、そもそもまずSlackの機能を拡張させる必要が生じるため、初動が重い、というのはあると思います(ただし、逆に他のチャットツールとの互換性はなくなるでしょう)。
名前…
前回も述べましたが、Errbotという名前もまた検索しづらい…。
使い所
以下のような人たちに向きそうです。
- Slack、Skypeなどさまざまなチャットツールが混在している
- できるだけ多くのツールを使いたくない。CI/CDなどを別途組むくらいならこれだけで完結させたい
- 厳密なアクセス管理が求められる
結局どちらがいいのか
用途に応じて、選択にしどころは変わるかなと思います。まだBot自体不慣れなのであれば、最初はslackbotから触ってみると直観的で分かりやすいかなと思いますし、Botの面倒を見るのに疲れてくるのであればErrbotの方がいいかもしれません。