Slack で Hubot を使えるようにする


Slack がコミュニケーションの中心になっていくなかで、Slack からできることを増やそうということで、Hubot(https://hubot.github.com/) を導入してみることにした。

Hubot を動かす環境として、お手軽な Heroku(https://www.heroku.com/) を利用する。

まず、Hubot を導入し、Slack 用の bot を作成する。Hubot の導入には npm(https://www.npmjs.org/) が必要なので、事前にインストールしておく。

```shell
$ npm install -g hubot coffee-script generator-hubot
```

続いて、bot 用のディレクトリを作成し、その中で bot を作成する。

```shell
$ 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 リポジトリを作成する。

```shell
$ cd [bot_path_name]
$ git init
$ git add .
$ git commit -m "Initial commit"
```

続けて Heroku 上にアプリケーションを作成する。Heroku の操作のために Heroku Toolbelt(https://toolbelt.heroku.com/) を事前に導入しておくこと。

```shell
$ 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 を利用する。有料のものも含めれば、他にも幾つか選択肢がある。

``` shell
$ heroku addons:create redistogo:nano
```

ここで、設定に必要な情報を取得するため、Slack の Integration の設定を行う。以下の URL より、Hubot との連携のための設定を追加する。

http://my.slack.com/services/new/hubot

追加すると Heroku にデプロイする際に必要な Config の情報が表示されているので、こちらを使用する。

> HUBOT_SLACK_TOKEN=[your token]

設定は、heroku コマンドで行う

``` shell
$ 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 を使うようになっているので、こちらを設定しておく。

```shell
$ heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=[your bot app url]
```

URL は、以下のコマンドの結果の web_url に書かれているものを指定すればよい。

```shell
$ heroku apps:info
```

ここまでで、Heroku へのデプロイに必要な設定は完了したので、push してデプロイする。

```shell
$ git push heroku master
```

デプロイが終わったら、Slack で bot に ping を打って、動作確認をしよう！

## 追記

Hubot Integration の内容が変更になったので、これに合わせて書き換えました。

変更点は、必要な環境変数が減ったので、その記述を削除しています。

削除された環境変数

* HUBOT_SLACK_TEAM
* HUBOT_SLACK_BOTNAME