JavaScript + Hubot で HelloWorldが動くまで
はじめに
この記事について
この記事は2017/03時点においてHubotをゼロから導入してみた記録です
筆者はCoffeeScriptがいまいちよくわかってないのでCoffeeScriptではなくJavaScriptで書きます
Slack連携とかは後々やっていく予定ですが、本投稿ではCUIでHubotが動くまでの環境構築を主眼に置いています
開発環境
Mac OSX 10.11.6
目指す状態
- Mac上でHubotが動いている状態
- 他の環境に移行しやすい状態
- ndenv/npm 使います
- 他の環境に移行しやすい状態
- Hubotの機能としてはHelloWorldが動けば良い
完成するもの
https://github.com/kao-bee/js-hubot
1. hubotが動くNode.jsの環境を用意する
概要
公式ドキュメント に書いてありますが、hubotはNode.jsを使っているので、npmコマンドを使ってインストールします。
なのでnpmコマンドを使えるようにする必要があります。
環境移行のしやすさも考えて、今回はndenv/node-buildを使ってNode.jsを入れていきます
ndenv をインストール
hubot は Node.js で動いているのでNodeのバージョン管理とかをうまくやってくれるndenvを入れます。
ndenv公式 を参考にインストール
ndenv公式 では bash_profile に書いていますが、bashrcに書きたかったのでbashrcに書いてます
$ git clone https://github.com/riywo/ndenv ~/.ndenv $ echo 'export PATH="$HOME/.ndenv/bin:$PATH"' >> ~/.bashrc $ echo 'eval "$(ndenv init -)"' >> ~/.bashrc $ exec $SHELL -l
node-build をインストール
ndenvだけだと ndenv install
が使えないので node-build も入れます
node-build
$ git clone https://github.com/riywo/node-build.git ~/.ndenv/plugins/node-build
node をインストール
今回は 2016/03 時点の推奨バージョンである v6.10.0 を入れることにします
$ ndenv install v6.10.0
$ ndenv rehash
$ ndenv global v6.10.0
$ node -v
v6.10.0
2. hubotをインストール
公式ドキュメント にしたがってhubotをインストール
$ npm install -g yo generator-hubot $ ndenv rehash $ mkdir js-hubot $ cd js-hubot $ yo hubot
git管理
環境移行をかんがえるのであればgit管理をしておきましょう
$ git init $ git add . $ git commit -m "Initial commit"
hubotをコマンドラインから実行してみる
とりあえず下記コマンドを打ってみるとコマンドラインから実行できます
$ ./bin/hubot
これでhubotのインストールは完了です
3. HelloWorldを書く
コードを書く
とりあえず script/sample.coffe
を参考にしながらHelloWorldを書いてみます
script/hello.js
module.exports = function(robot) { robot.send({}, "Hello! World!"); };
この状態で実行すると
$ ./bin/hubot js-hubot> Hello! World! [Tue Mar 21 2017 18:28:19 GMT+0900 (JST)] INFO /Users/kao_bee/blog/code/js-hubot/scripts/hello.js is using deprecated documentation syntax [Tue Mar 21 2017 18:33:06 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. [Tue Mar 21 2017 18:33:06 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)` [Tue Mar 21 2017 18:33:06 GMT+0900 (JST)] INFO hubot-redis-brain: Using default redis on localhost:6379
という感じでHelloWorldと言ってくれます
ちなみに
robot.send({}, "HelloWorld");
の 第一引数 {}
はオプションで、slackとかで使う場合のチャンネル指定とかする場合はそこで指定します
Error/Warningを消す
今の状態だとerrorやらwarningやらが出ているので消しましょう
using deprecated documentation syntax
まずはこちら
INFO /Users/kao_bee/blog/code/js-hubot/scripts/hello.js is using deprecated documentation syntax
こちら 書いてあるのですが、documentを書かなければいけないらしいので書きましょう
script/hello.js
// Description: // HelloWorld module.exports = function(robot) { robot.send({}, "Hello! World!"); };
hubot-scripts.json を消す
続いてこちら
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.
消せと言われているので素直に消します
herokuの設定を消す
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)`
今回herokuを使っていないのにherokuの設定が残っているので怒られています
external-scripts.json
から hubot-heroku-keepalive
などの heroku 関連のものを削除すると消えます
hubot-redis-brain
INFO hubot-redis-brain: Using default redis on localhost:6379
INFOなので無理に削除する必要はありませんが、
こちらも external-scripts.json
から hubot-redis-brain
の記述を削除すれば消せます
これで、すべてのError/Warningが消えたので、実行すると
$ ./bin/hubot
js-hubot> Hello! World!
となり、綺麗にHelloWorldができました
4. 環境移行をしやすいようにする
概要
とりあえずmac上でhubotが動くようになりましたが 最終的にslack botを作るのであればどこかのサーバ上に置きたかったり 他の人と共同で開発したかったりすることも多いので 他の環境への移行が楽な状態にまでしておきましょう
すでにndenvの導入など流行ってあるので .node-version を設定するだけですけど
.node-version の設定
.node-version に今回使ったnodeのversionを指定しておきましょう。 そうすることで、他の環境に移した時のnodeのインストールが楽になります。
$ echo "v6.10.0" >> .node-version
README を書く
他の人がcloneして動かすまでのプロセスをREADMEに記載しておきましょう
https://github.com/kao-bee/js-hubot/blob/master/README.md
後記
今回はHubotをJavaScript + ndenvで作りました