Slack がコミュニケーションの中心になっていくなかで、Slack からできることを増やそうということで、Hubot(https://hubot.github.com/) を導入してみることにした。
Hubot を動かす環境として、お手軽な Heroku(https://www.heroku.com/) を利用する。
まず、Hubot を導入し、Slack 用の bot を作成する。Hubot の導入には npm(https://www.npmjs.org/) が必要なので、事前にインストールしておく。
$ npm install -g hubot coffee-script generator-hubot
続いて、bot 用のディレクトリを作成し、その中で bot を作成する。
$ mkdir [bot_path_name]
$ cd [bot_path_name]
$ yo hubot
_____________________________
/ \
//\ | Extracting input for |
////\ _____ | self-replication process |
//////\ /_____\ \ /
======= |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
? Owner: Your Name <your@mail.address>
? Bot name: hubot
? Description: A simple helpful robot for you
? Bot adapter: slack
create ...(省略)
_____________________________
_____ / \
\ \ | Self-replication process |
| | _____ | complete... |
|__\\| /_____\ \ Good luck with that. /
|//+ |[^_/\_]| /----------------------------
| | _|___@@__|__
+===+/ /// \_\
| |_\ /// HUBOT/\\
|___/\// / \\
\ / +---+
\____/ | |
| //| +===+
\// |xx|
hubot-...(省略)
これまでは、hubot --create を使っていたが、非推奨になっており、Yeoman(http://yeoman.io/) を使う方式に変わったようだ。そのため、generator-hubot のインストールが必要となっている。
yo hubot するとウィザードが始まるので、必要な情報を入力していく。入力した情報は、package.json に反映されるので、後から修正することも可能。
Bot adapter として slack を必ず指定すること。後から、個別にインストールする手間が省ける。
ここまでで bot の作成は完了したので、Heroku へデプロイするための準備を始める。まず git リポジトリを作成する。
$ cd [bot_path_name]
$ git init
$ git add .
$ git commit -m "Initial commit"
続けて Heroku 上にアプリケーションを作成する。Heroku の操作のために Heroku Toolbelt(https://toolbelt.heroku.com/) を事前に導入しておくこと。
$ heroku login
Enter your Heroku credentials.
Email: your@mail.address
Password (typing will be hidden):
Authentication successful.
$ heroku create [your-hubot-app]
Hubot の動作には Redis(http://redis.io/) が必要なので、無料で使えるプランのある Redis To Go という Heroku の Add-on を利用する。有料のものも含めれば、他にも幾つか選択肢がある。
$ heroku addons:create redistogo:nano
ここで、設定に必要な情報を取得するため、Slack の Integration の設定を行う。以下の URL より、Hubot との連携のための設定を追加する。
追加すると Heroku にデプロイする際に必要な Config の情報が表示されているので、こちらを使用する。
HUBOT_SLACK_TOKEN=[your token]
設定は、heroku コマンドで行う
$ heroku config:set HUBOT_SLACK_TOKEN=[your token]
Hubot を Heroku にデプロイする手順で HEROKU_URL という Config を設定するものがよくあるが、これは hubot-heroku-keepalive(https://github.com/hubot-scripts/hubot-heroku-keepalive) で必要な設定である(hubot-heroku-keepalive は、yo hubot により追加済)。
ところが、こちらも非推奨となっており、現在は HUBOT_HEROKU_KEEPALIVE_URL を使うようになっているので、こちらを設定しておく。
$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=[your bot app url]
URL は、以下のコマンドの結果の web_url に書かれているものを指定すればよい。
$ heroku apps:info
ここまでで、Heroku へのデプロイに必要な設定は完了したので、push してデプロイする。
$ git push heroku master
デプロイが終わったら、Slack で bot に ping を打って、動作確認をしよう!
追記
Hubot Integration の内容が変更になったので、これに合わせて書き換えました。
変更点は、必要な環境変数が減ったので、その記述を削除しています。
削除された環境変数
- HUBOT_SLACK_TEAM
- HUBOT_SLACK_BOTNAME