
チャットツール slack に常駐する bot をつくったので、そのときの導入メモ。 bot 開発には lita を利用した。lita は Ruby で書かれた chat bot フレームワーク。hubot にインスパイアされて開発されたようだ。 js (coffee script) よりも ruby のほうがとっつきやすかったので採用した。
環境は、ubuntu 14.04, ruby 2.1.5, lita 4.0.4.
ゆくゆくは、iRKit とか使って家電と連携したりしたい。

今回の構成図を上記に示す。
1. 事前準備: もろもろインストールする
1.1 lita をインストール
lita は gem でインストールできる。
1
| |
1.2 redis をインストール
lita はデータ永続化ストレージとして redis を使うことが前提となっている。 つまり、ローカル環境で lita を実行するには(開発するには)、redis が必要なため、redis をインストールする。
1 2 | |
redis を起動する。
1 2 3 4 | |
2. lita プロジェクト作成、起動
lita プロジェクト”sample”を作成する。
1 2 3 | |
ruby のバージョンを rbenv で指定しておく。
1 2 3 | |
bundler でインストールする。
1
| |
lita start で lita をローカル環境で起動してみる。
lita help で返ってくればOK。
1 2 3 4 5 6 7 8 9 10 11 | |
lita プラグイン もたくさんあるので、適当に Gemfile に追加して bundle install するとよい。
3. herokuへデプロイして Slack と連携する
lita bot を heroku へデプロイする。 また、アダプタ lita-slack を利用して Slack と連携する。
3.1 事前準備
heroku へのデプロイは、git push して行うので、git でバージョン管理を開始する。
1 2 3 | |
heroku で ruby バージョンを指定するには、Gemfileでruby "VERSION"と記述する。
また、Slack と連携するため、lita-slack アダプタもインストールする。
この時点で、Gemfileは以下の通り。
1 2 3 4 5 | |
bundler でインストールする。
1
| |
slack とつなげたり、Redis To Go を利用するために、lita_config.rb を以下のように修正する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
heroku でのアプリケーション起動には foreman でのアプリケーション起動が必要となる。
以下の Procfile を作成する。
1
| |
3.2 heroku の設定
新規に heroku アプリケーションを作成する。
ここでは、lita-sample という名前にした。
1
| |
heroku の redis アドオン Redis To Go をアプリケーションへ追加する。 事前に heroku へクレジットカードの登録が必要。
1
| |
heroku の環境変数を設定する。 設定するのは、Slack APIキーのみでOK。 Slack API キーは、https://YOUR-DOMAIN.slack.com/services/new/lita から Integration の設定をしたら入手可能。
REDISTOGO_URL などは、アドオン追加時に自動で設定されている。
1 2 3 | |
3.3 heroku へデプロイする
git commit して git push してあげる。 そうすると heoku アプリケーションが起動する。
1 2 | |
Slack に lita さんが見えるはずなので 適当なチャンネルに招待して @lita help とか声をかけると答えてくれる。
3.4 heroku アプリケーションをたたき起こす
heroku を無料で使う 1 web dyno (webサーバインスタンス) のときは、1時間アクセスがないとアプリケーションがスリープする。つまり、せっかくデプロイした bot も眠ってしまうため、定期的にhttpアクセスさせてたたき起こしておく。
なお、lita-cron で bot に定期的に投稿させてもだめだったので、heroku アプリケーションへの http アクセスが必要なもよう。
定期的な http アクセスには Uptime Robot を利用した。
4. handler 作成
以下のように handler のひな形を生成する。
lita- というプレフィックスが自動で付与される。
1 2 3 4 | |
handlers/lita-hello_handler/lib/lita/handlers/hello_hundler.rb を修正する。
route で正規表現にマッチした場合の処理へルーティングする。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | |
Gemfile に以下を追記し、 bundle install する。
1
| |
commit して再度 heroku へ push してデプロイする。
1 2 | |
slack 上で @lita java あなた とかつぶやくとサイコーにジャバな気分になる。
