2017/01/17追記
Herokuのプランが変更されたようです。
詳しくは、コメント欄を参照してください。
追記ここまで
みなさん、bot活用していますか?
どんどん便利なスクリプトを追加し、日々の業務や生活になくなてはならない存在になっていると思います。しかしながら、botをどこで運用するかという悩ましい問題があります。少し前ならheroku一択でしたが、herokuのプランが変更され24時間完全に無料で運用することが難しくなりました。
herokuで運用する問題点
herokuは素晴らしい環境です。が、無料でbotをつくるとなると話は少し変わってきます。
- 30分アクセスしなければスリープ
- 24時間連続で動かすことができない(6時間のスリープ)
hubot-heroku-keepaliveによって30分のスリープの問題はいいですが、24時間稼働できないのはどうしようもありません。まあ、最悪な方法を使えば24時間運用は可能ですが、バカバカしいですよね。
そこで、IBM Bluemixです。
Bluemixとは何か。
いわゆるPaaSで、一言で説明するとHerokuみたいなもの、という雑な認識です。Bluemixについて、詳しく知りたい方はググれば素晴らしい記事が見つかるでしょう。とゆうのもbot以外使っていないので、誤解を生んでは申し訳ありませんし、これ以上の言及は避けたいです。逆にいうと、こんな認識でもさくっと使えるということでご容赦ください。herokuからbluemixに移行する所要時間は多くて30分ぐらいを見積もればいいでしょう。
さて、Bluemixには無料枠があります。この無料枠を使ってbotを運用しようというわけです。1ヶ月あたり365GB時間のメモリー,2 パブリック IP アドレス,20 GB 外部ストレージが無料で使えます。詳しくは下のリンクを見てもらえばいいですが、つまるところ、botを無料で運用できるということです。
なお、無料で運用できますが、クレジットカードの登録が必要です。Bluemixの無料枠については、詳しいまとめ記事があるので参考にしてください。
登録やインストール
Bluemixの登録については、キャプチャ付きの素晴らしい記事があります。
hubotをBluemixへの導入するには、以下のhubotのdocsを参照してコマンドを叩いていくだけです。
herokuにheroku toolbelt
があるのと同様cf
コマンドでコマンドラインから操作できます。
macの人は、brewからインストールできます。
$ brew tap cloudfoundry/tap
$ brew install cf-cli
helpも日本語にできるので迷うことはないでしょう。
新規につくるのではなく、すでにあるbotを移行する場合でも、procfileの代わりにmanifest.yml
を追加するだけです。
applications:
- buildpack: https://github.com/jthomas/nodejs-v4-buildpack.git
command: ./bin/hubot --adapter slack
path: .
instances: 1
memory: 256M
公式のreadmeままですが、slackのbotの場合、以下のコマンドで稼働できます。herokuと似たようなものですね。細かいコマンドはhelpを参照してください。また、apiに設定するurlはこれと異なるかも知れません。
$ cf api https://api.ng.bluemix.net
$ cf login
$ cf push bot名
$ cf set-env bot名 HUBOT_SLACK_TOKEN slackのトークン
また、herokuのgithubコネクトと同様にBluemix側にgitのレポジトリを指定すれば、githubにpushからの自動アップデートが実現できます。
まとめ
IBMを使うと無料でbotが運用できるよという話でした。
それでは、よいbotライフを。