HUBOTでSlackと連携する。（1回目）

## 現在の環境
  * Mac OS X El Capitan (10.11.5)
  * Node.js v0.12.2

## HUBOTを動かす環境の準備
1. Node.jsのinstall
	* 他プロジェクトでNode.js使っていたため、下記を参考にnodebrewを入れてバージョン管理
		* [node.jsのversionを管理するためにnodebrewを利用する](http://qiita.com/sinmetal/items/154e81823f386279b33c)
	* nodebrewでnode.jsをinstall 今回はv4.4.5をinstall

	```
	$ nodebrew install v4.4.5
	$ nodebrew list
	v0.12.2
	v4.4.5
	
	current: v0.12.2
	$ nodebrew use v4.4.5
	use v4.4.5
	$ node -v
	v4.4.5
	```

2. hubotのinstall
	* hubotとslackとの連携に必要なものを入れる。

	```
	$ npm install -g hubot hubot-slack yo generator-hubot coffee-script
	```

3. BOTの作成
	* BOT名のディレクトリを作成して移動する。

	```
	$ mkdir norabot
	$ cd norabot
	```
	
4. yeomanのジェネレーターでhubotを作成する
	* `yo hubot`でひな形を作成する。 Ownerとか聞かれるので適当に入力
	* Bot adapterはSlackと繋ぐので、slackを入力 

	```
	$ yo hubot
	                     _____________________________
	                    /                             \
	   //\              |      Extracting input for    |
	  ////\    _____    |   self-replication process   |
	 //////\  /_____\   \                             /
	 ======= |[^_/\_]|   /----------------------------
	  |   | _|___@@__|__
	  +===+/  ///     \_\
	   | |_\ /// HUBOT/\\
	   |___/\//      /  \\
	         \      /   +---+
	          \____/    |   |
	           | //|    +===+
	            \//      |xx|
	
	? Owner kijitora
	? Bot name nekobot
	? Description A simple helpful robot for your Company
	? Bot adapter slack
	   create bin/hubot
	   create bin/hubot.cmd
	   create Procfile
	   create README.md
	   create external-scripts.json
	   create hubot-scripts.json
	identical .gitignore
	   create package.json
	   create scripts/example.coffee
	identical .editorconfig
	                     _____________________________
	 _____              /                             \
	 \    \             |   Self-replication process   |
	 |    |    _____    |          complete...         |
	 |__\\|   /_____\   \     Good luck with that.    /
	   |//+  |[^_/\_]|   /----------------------------
	  |   | _|___@@__|__
	  +===+/  ///     \_\
	   | |_\ /// HUBOT/\\
	   |___/\//      /  \\
	         \      /   +---+
	          \____/    |   |
	           | //|    +===+
	            \//      |xx|
		
	```

5. Botの起動

	```
	$ bin/hubot
	[Wed Jun 29 2016 16:21:53 GMT+0900 (JST)] ERROR Error: listen EADDRINUSE
	  at exports._errnoException (util.js:746:11)
	  at Server._listen2 (net.js:1146:14)
	  at listen (net.js:1172:10)
	  at net.js:1270:9
	  at dns.js:85:18
	  at process._tickCallback (node.js:355:11)
	
	nekobot> [Wed Jun 29 2016 16:21:53 GMT+0900 (JST)] WARNING Loading scripts from hubot-scripts.json is deprecated and will be removed in 3.0 (https://github.com/github/hubot-scripts/issues/1113) in favor of packages for each script.
	
	Your hubot-scripts.json is empty, so you just need to remove it.
	[Wed Jun 29 2016 16:21:53 GMT+0900 (JST)] ERROR hubot-heroku-alive included, but missing HUBOT_HEROKU_KEEPALIVE_URL. `heroku config:set HUBOT_HEROKU_KEEPALIVE_URL=$(heroku apps:info -s  | grep web-url | cut -d= -f2)`
	[Wed Jun 29 2016 16:21:54 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
	```
	* なんかエラーが出ちゃったけど取り合えずおいといて、話しかけてみる
	
	```
	nekobot> nekobot PING
	nekobot> PONG
	```
	* ちゃんと動いてる見たい
	

6. エラーを解消してみる
	* エラーを見ると`hubot-scripts.json`は必要ないみたいなので、remove

	```
	$ rm -rf hubot-scripts.json
	```
	* 今回はherokuにのせないため、デフォルトで入っているheroku関連を削除
	
	```
	$ vim external-scripts.json
	[
	  "hubot-diagnostics",
	  "hubot-help",
	  "hubot-heroku-keepalive",
	  "hubot-google-images",
	  "hubot-google-translate",
	  "hubot-pugme",
	  "hubot-maps",
	  "hubot-redis-brain",
	  "hubot-rules",
	  "hubot-shipit"
	]
	```
となっているので`"hubot-heroku-keepalive",`を行ごと削除

* `ERROR Error: listen EADDRINUSE` については裏で他のHUBOTを実行していたため同じポートが使われていた。。。とりあえず裏のHUBOTを止めて再度起動

	```
	$ bin/hubot
	nekobot> [Wed Jun 29 2016 16:35:07 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
	nekobot>
	
	```

	* 今度はエラーもでず起動
	
	* ちょっと長くなってしまったので、slackと実際につなぐところは次回に。。。
	
## 参考にさせていただいたサイト
[HubotでSlackのボットを作成する](https://www.seeds-std.co.jp/seedsblog/2125.html)