【導入編】hubotでチームだけのお手軽オリジナルslackリマインダーを作る

- [【実装編】hubotでチームだけのお手軽オリジナルslackリマインダーを作る](http://qiita.com/saino-katsutoshi/items/0ec10a7586226c7212a1)はこちらから。

GithubによってつくられたBOTであるHubotを使って今人気のチャットツールslackで何か遊んでみようと思います。
Hubotとは、Node.jsで動くCoffeeScriptで書かれたBOTです。herokuなどに簡単にアップして使うことができます。
BOTを調べてみると、

```
BOTとは、人間に代わって作業を行うコンピュータープログラムの総称。
```

と説明があるように、ロボットです。つまり、我々人間があれをしてとお願いしたらしてくれるわけですね。なんかIoTとかその辺に使えそう。。。って思ってたらこんな記事を発見しました。

[Slack経由で家の外からエアコンをon, offできる装置を、Raspberry Piで作ってみた。（しかも御坂美琴ちゃんが応答してくれる）](http://qiita.com/KAKY/items/55e6c54fa2073cdc0bbe)

fmfm。なにやらHubotとslackの組み合わせで色々面白いことができるみたいです。とりあえず、皆さんに快適なhubotライフを送ってもらうために、slackにhubotを導入することから始めます。

# 事前準備

これから始めるにあたって、Node.jsがインストールされていることを前提として進めます。まだインストールしていない人は、以下のページを参考にインストールしていただければと思います。

参考ページ

- [ハジメさんのブログ](http://www.tettori.net/post/293/ 'Node.jsのインストール方法')

また、Hubotの作成まではすでにたくさんの素晴らしい記事が投稿されています。なので、ここではコマンドと簡単な注意点のみだけとさせていただきます。

参考記事

- [bouzuyaさんの記事①](http://qiita.com/bouzuya/items/11c0c6da2b3ad54b827f)
- [bouzuyaさんの記事②](http://qiita.com/bouzuya/items/2a200c9e8a45e2478bc2)

```bash
#  Node.jsがインストールされていればnpmが使えるので、これでyoとgenerator-hubotをインストールします。
$ npm install -g yo generator-hubot

# yoとgenerator-hubotがインストールされていることを確認します
$ npm list -g generator-hubot yo
/usr/local/lib
├── generator-hubot@0.3.1
└── yo@1.5.0

# hubotを作成するための空のディレクトリを作ります。
$ mkdir hubot-reminder
$ cd hubot-reminder

# yoコマンドでhubotを作ります
$ yo hubot
# 基本的にすべてEnterで進めばいいですが、最後のBot adapterの質問だけはslackと入力してください。
```
<img width="418" alt="スクリーンショット_2015-12-04_1_07_23.png" src="https://qiita-image-store.s3.amazonaws.com/0/86426/d55dc7e6-dfe3-9066-2d9c-2b6bc52e10ac.png">

今回はslackと連携するためにアダプターにslackを指定しました。大丈夫だとは思いますが、念のためhubot-slack（slackアダプター）が入っているか確認するコマンドは以下です。

```bash
$ pwd
# .../hubot-reminder

$ npm list hubot-slack
hubot-reminder@0.0.0 /Users/saino/projects/hubot-hackers/hubot-reminder
└── hubot-slack@3.4.2
```

このように表示されなかったら、以下のコマンドでhubot-slackをインストールしてください。

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

これで一応hubotは動くので、試しにターミナルで動かしてみましょう。
`./bin/hubot -a shell -n`コマンドの後にbot名を入力してもしなくても大丈夫です。以下はしなかった場合でbot名は、`Hubot`になります。私は、このコマンドをhubotというエイリアスにしています。

```bash
$ ./bin/hubot -a shell -n
Hubot> hubot ping
Hubot> PONG

Hubot> hubot echo 眠いぞ！
Hubot> 眠いぞ！

Hubot> hubot time
Hubot> erver time is: Thu Dec 03 2015 17:43:25 GMT+0900 (JST)

Hubot> exit
```

![](https://i.gyazo.com/e7726f6b2a5ee3430b495090ba0ed069.png)

slackでhubotを使うためにherokuにhubotをアップします。おなじみのコマンドだと思うので、３秒くらいでぱっぱいきましょう。

```bash
$ git init
$ git add .
$ git commit -m 'initial commit'
$ heroku create
$ git push heroku master
```

slackにHubotを追加しましょう。
チャンネル名 > Add a service integration...

![](https://i.gyazo.com/02b4963e616a69027b857ad1f22b1497.png)

hubotと検索 > Hubot

![](https://i.gyazo.com/dd32fabf69c51318384b6d58dcff9a31.png)

ディレクトリ名がhubot-reminderなので、usernameはreminderにしました。

![](https://i.gyazo.com/b781e350919544372b890450f6d21851.png)

トークンをコピーしておきます。

![](https://i.gyazo.com/288790d53162a5138699a88c911b0197.png)

ターミナルでherokuの環境変数を設定します。

```bash
$ heroku config:set \
> HUBOT_SLACK_TOKEN=上でコピーしたトークンID \
> HUBOT_SLACK_TEAM=slackチーム名 \
> HUBOT_SLACK_BOTNAME=上のusernameで設定した名前
```
![](https://i.gyazo.com/f0c83baa1a16cbb76687e2717b5fb2da.png)

これでslackにhubotの導入は完了です。あとは、好きなチャンネルにbotを招待してください。

![](https://i.gyazo.com/30315e4cf4234c2746d26781c8fbafa7.gif)
![](https://i.gyazo.com/0b6d74788311ce6de3fa564fd1a67518.png)
![](https://i.gyazo.com/e52e3a7825bd9e9fdd1de3b65b4f88f1.png)

# まとめ

今日は導入だけで終わってしまいましたが、次は12日に書きます。決まった時間にメッセージを投稿したり、railsのデータベースと連携したり（これはできるか微妙）、色々アレンジを加えていきたいと思います。こちらにも記事リンクを貼ります。

# **12/12更新**
[【実装編】hubotでチームだけのお手軽オリジナルslackリマインダーを作る](http://qiita.com/saino-katsutoshi/items/0ec10a7586226c7212a1)
を書きました。是非実装してみてください。