LoginSignup
9
5

More than 5 years have passed since last update.

Python製のBotでslackbotとErrbotを使ってみた感想と使い所

Last updated at Posted at 2018-02-06

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自体のリスタートやログ閲覧

などができます。

公式のドキュメントが充実

公式のドキュメントを見れば、大抵のことが書いてあります。

Plugin development

とりあえず一通り読んでみると、その充実っぷりがわかるかと思います。

デメリット

チャットツール独自の機能には未対応

Slackだけしか見ていませんが、ことSlackに関しては機能はそれほど多くはありません。これは、Errbotの志向もあるようで、他のツールと汎用的に使えることを目指している(と思う)ので、Slack独自の機能は大抵使えません。
基本的にプラグイン形式で動きますし、公式のドキュメントも揃っているので、作ろうと思えば作れるとは思います。

従って、チャットツールがSlackだけであり、かつ凝ったことをしたいのであれば、そもそもまずSlackの機能を拡張させる必要が生じるため、初動が重い、というのはあると思います(ただし、逆に他のチャットツールとの互換性はなくなるでしょう)。

名前…

前回も述べましたが、Errbotという名前もまた検索しづらい…。

使い所

以下のような人たちに向きそうです。

  • Slack、Skypeなどさまざまなチャットツールが混在している
  • できるだけ多くのツールを使いたくない。CI/CDなどを別途組むくらいならこれだけで完結させたい
  • 厳密なアクセス管理が求められる

結局どちらがいいのか

用途に応じて、選択にしどころは変わるかなと思います。まだBot自体不慣れなのであれば、最初はslackbotから触ってみると直観的で分かりやすいかなと思いますし、Botの面倒を見るのに疲れてくるのであればErrbotの方がいいかもしれません。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5