IBM Bluemixを使って、Slackで動くHubotを構築する手順

#記事を書いた目的#
IBM BluemixでHubotを動かせることが分かっていても具体的な手順はネットで探してみてもよく分からなかったので、本記事を作成した。

なお、ローカル環境はWindowsを使用している。

#手順#
<b>1.IBM Bluemixのアカウントを作成</b>

[IBM Bluemix](https://console.ng.bluemix.net/)にて、
右上の登録ボタンを押す
       
以下の記事を参考にして、アカウントを登録
[IBM Bluemixフリートライアルアカウント作成手順](http://qiita.com/KenichiSekine/items/6ad49b25167b3f4cdb63)
	
<b>2.SDK for Node.js でアプリを作成</b>

以下の手順でアプリを作成
IBM Bluemixポータル画面>クラシック・エクスペリエンスに進む>
カタログ>ランタイム>SDK for Node.js
	
アプリの名前:hubotdev(任意名称で作成。この記事では、hubotdevで作成を行う)
ホスト:hubotdev(任意名称で作成。この記事では、hubotdevで作成を行う)
	
作成ボタンを押す
	
<b>3.cfコマンドラインツールをインストール</b>

以下の記事を参考にインストール
[Bluemixとは一体何者か？第三回 Cloud Foundry CLI導入](https://www.change-makers.jp/news/10128)

<b>4.動作確認</b>
	
以下のコマンドをコマンドプロンプトで打つ
```cf```
	
ずらっと文字が表示されたら成功

<b>5.Node.js,npmをインストールする</b>

以下の記事を参考にインストール
[Node.js / npmをインストールする（for Windows）](http://qiita.com/krtbk1d/items/9001ae194571feb63a5e)

<b>6.動作確認</b>
	
以下のコマンドをコマンドプロンプトで打つ
```node --version
npm --version```

バージョンが表示されたら成功

成功しなかった場合、以下の記事を参考にして、対処を行う

[WindowsのNode.jsインストーラでパスが正しく設定されない]
(http://webdev.jp.net/windows-nodejs-path/)

<b>7.APIエンドポイントを設定</b>

以下のコマンドをコマンドプロンプトで打つ
```cf api https://api.au-syd.bluemix.net```

上記はBluemixでシドニーにスペースを作成した場合。
他の地域では、以下のURLを指定すること。
米国南部：https://api.ng.bluemix.net
英国    ：https://api.eu-gb.bluemix.net

<Font color="blue">注)7から15までの手順で詰まったら、以下の記事とgithubの記述を参考にすること</font>
[HubotをCloud Foundryにデプロイする](https://blog.ik.am/entries/372)
[github/hubot/docs/deploying/bluemix.md](https://github.com/github/hubot/blob/master/docs/deploying/bluemix.md)
		
<b>8.IBM Bluemixにログイン</b>

以下のコマンドをコマンドプロンプトで打つ
```cf login -a https://api.au-syd.bluemix.net
  email:IBM bluemixに登録したメールアドレス
  pass:IBM bluemixに登録したパスワード
```
	
<b>9.Hubotをインストール(ローカル環境)</b>
	
以下のコマンドをコマンドプロンプトで打つ
<Font color="blue">注) コマンドプロンプトで表示されているカレントディレクトリに
demohubotというフォルダが作成され、その配下にHubotのプロジェクトが生成される。
プロジェクトの名前は任意。この記事では、demohubotで作成を行う)
</font>

```
npm install -g yo generator-hubot
mkdir demohubot
cd demohubot/
yo hubot --adapter slack --defaults
```

<b>10.HubotをIBM Bluemixにデプロイ</b>

以下のコマンドをコマンドプロンプトで打つ
```cf push hubotdev -m 256m --no-start```

<b>11.Hubotをインストール(Slack)</b>

以下をSlackで実施
Channel Settings>Add an app or integration>App Directory>Hubot
Installボタンを押す

<<図>>
![キャプチャ1.PNG](https://qiita-image-store.s3.amazonaws.com/0/124488/c3ee915a-2385-6f80-f4b8-852f9aa18ecf.png)

![キャプチャ4.PNG](https://qiita-image-store.s3.amazonaws.com/0/124488/793b6bf5-c801-a74e-5a72-27e359ac69cf.png)


	
<Font color="blue">注)Hubotを新たに追加したいときは・・・</font>
	Channel Settings>Add an app or integration>App Directory>Hubot
	Add Configurationボタンを押す

<<図>>
![キャプチャ2.PNG](https://qiita-image-store.s3.amazonaws.com/0/124488/50b9f383-925d-e705-2600-52ecf82a8a1c.png)

	
<b>12.APIトークンの設定</b>

以下のコマンドをコマンドプロンプトで打つ
```cf set-env hubotdev HUBOT_SLACK_TOKEN APIトークン```
											
APIトークン:SlackのHubotの設定ページに記載あり

<<図>>
![キャプチャ3.PNG](https://qiita-image-store.s3.amazonaws.com/0/124488/b0796e8d-9465-9e00-91a3-58bc799693fc.png)

<b>13.IBM BluemixのHubotを起動</b>

以下のコマンドをコマンドプロンプトで打つ
```cf start hubotdev```

<b>14.動作確認</b>

以下のコマンドをコマンドプロンプトで打つ
```cf logs hubotdev --recent```

<b>15.動作確認</b>

以下をSlackで実施
Hubotをチャネルにinviteする。招きたいチャンネルで以下のコマンドを発行
```/invite hubotdev```


[SlackのHubot Integrationが知らぬ間にアップデートされてた](http://qiita.com/KeitaMoromizato/items/0ee11d795d18a49538d8)

@hubotdev ping
と送り、PONGと返ってきたら、成功

<b>16.カスタマイズ</b>

以下のファイルを編集
Hubotをインストールしたパス\demohubot\node_modules\hubot-diagnostics\src\diagnostics.coffee

```
以下のように追記
robot.respond /manufacturer$/i, (msg) ->
msg.send "hubot_make_user"
```    
<b>17.再度デプロイ</b>

以下のコマンドをコマンドプロンプトで打つ
```cf push hubotdev -m 256m --no-start```

<b>18.サーバーのhubotを再起動</b>

以下のコマンドをコマンドプロンプトで打つ
```cf restart hubotdev```

<b>19.動作確認</b>

以下をSlackで実施
@hubotdev manufacturer
と送り、hubot_make_userと返ってきたら、成功

<Font color="blue">注)Hubotの反応が無いときは・・・</font>
チャンネルにいるHubotのアイコンがaway(離席)状態になっている可能性がある。
この場合は、再度以下のコマンドをコマンドプロンプトで打ち、動作確認を行う。
```cf restart hubotdev```