HubotとSlackを連携させてHerokuで動かす

#Pull Requestにランダムでレビューワーを作成するBOTを作ってみた⇦これが最終目標
##背景/目的
チームで開発していると、だれがプルリクエストをレビューするかに偏りがでてきます。そしてレビューに偏りが生まれることで、関係がフラットでなくなり、開発に支障をきたすことがあるかもしれません。

そこで今回はSlackのHubotを使って、プルリクエストにランダムでメンバーをアサインするBotを作成しました！
自動化して無駄のない開発を行っていきましょう！！

利用するものは
- Github Webhook
- Slack Hubot
- Heroku

この記事ではスラックでHubotと会話できるところまでを書き、二つ目の記事でGithubと連携部分を書いていきたいと思います。

エンジニアに寿司好きが多いことからこのボットはsushi-shokuninと名付けました！ちなみにアイコンはこちら。
![sushi.jpeg](https://qiita-image-store.s3.amazonaws.com/0/80383/0275a886-c884-cdf8-834d-934feb3c1623.jpeg)

##初めにHubotをインストールしよう！！

ますHubotを使うにあったってnode.js, redisが必要です。これらがインストールされてない場合は、まずインストールしてください。

[node.jsはここから](https://nodejs.org/en/)


redisは以下のコマンドでインストールしましょう！

```
brew install node redis
```

忘れないうちにredisを起動しておきましょう。

```
redis-server &
```

Hubotのインストールは[公式ドキュメント](https://github.com/github/hubot/tree/master/docs)にもあるように`npm`を使ってインストールします。

```
npm install -g yo generator-hubot
```

Hubotをインストールすることで`hubot`コマンドが利用できるようになります。

## Hubot のプロジェクトを作成

ではプロジェクトを作成しましょう！

```
$ mkdir name(僕はsushi-bot)
$ cd sushi-bot
$ yo hubot
```

`yo hubot`コマンドでこのディレクトリー内にHubotの環境が構築されます。

最後の`Bot Adapter`は元気に`slack`と入力してください

<img width="429" alt="Screen Shot 2016-05-29 at 12.32.10 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/2e5ee37f-a39e-41f8-c05f-d0af455ec90d.png">

エンターを押すと環境構築が始まります！

<img width="463" alt="Screen Shot 2016-05-29 at 12.33.22 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/08445ead-d8d0-1c86-a177-c3589c0457d6.png">


こんな感じにいっぱいインストールされます(^ ^)
<img width="281" alt="Screen Shot 2016-05-29 at 12.34.06 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/5e2985a8-a9a0-e301-f980-185661cd0833.png">


では正常にhubotが動くか確かめてみましょう！

以下のコマンドでhubotを起動できます。
※redisを起動していないとhubotは動かないので注意を
```
$ bin/hubot
```

herokuのエラーが出てますが無理でおっけーですー👍🏻

<img width="855" alt="Screen Shot 2016-05-29 at 12.36.13 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/c2c17405-2c3f-35c8-dca7-cbc9ddc63c4d.png">

では話しかけてみましょー

botの名前を入力して`ping`と入力し、`PONG`と返って来たら成功です！

<img width="164" alt="Screen Shot 2016-05-29 at 12.37.18 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/6ecae0aa-f520-a848-75f1-15774d1a7d3d.png">

## SlackのAccess-Tokenを取得しよう

ここからintegrationを設定できます！

<img width="268" alt="Screen Shot 2016-05-29 at 12.47.24 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/9a061e27-1320-4de0-c9e5-d8be7d50a16a.png">

検索からhubotにいき、hubotのConfigurationsを設定しましょう。

Usernameは好きなものを登録してください。

<img width="1157" alt="Screen Shot 2016-05-29 at 12.49.09 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/34b8428f-603d-0732-0ac6-8a7e2ad3cdbd.png">

登録したあとにAPI Tokenが表示されるので、メモっておいてください。

## Herokuにデプロイしてスラックから話しかけよう！

ヘロクのインストールは[この記事](http://qiita.com/Arashi/items/b2f2e01259238235e187)を参考にしてください！

デプロイの前にライブラリーを追加しておきましょう

```
$ npm install hubot-slack --save
```

herokuにデプロイします。

```
$ git push heroku master
$ heroku ps:scale web=1

```

![Screen Shot 2016-05-29 at 12.55.13 AM.png](https://qiita-image-store.s3.amazonaws.com/0/80383/022f81c4-38e0-d209-38b3-2bd4da89ad4d.png)


slackのセットアップをしていきましょう！

初めにslackのAPI Tokenを登録します！

```
heroku config:add HUBOT_SLACK_TOKEN=xxx
```

タイムゾーンにTOKYOをセット

```
heroku config:add TZ=Asia/Tokyo
```
 
rediscloudをHerokuにセット

```
$ heroku addons:add rediscloud
```

slackから個人メッセージを送ってみましょう！
pingと送りPONGと返って来たら成功です！！！！
<img width="323" alt="Screen Shot 2016-05-29 at 1.06.49 AM.png" src="https://qiita-image-store.s3.amazonaws.com/0/80383/6dc4d5da-2747-d147-a4ec-92cab1a4963b.png">


次の記事はGithubのWebhookから初めて行きます。
※botのプロフィール画像はHubotの設定画面から変更可能です！