Typetalk とは
Typetalk は、ヌーラボさんが開発している無料のチャットサービスです。 http://www.typetalk.in/ja/
直感的で楽しい UI が特徴で、アップデートも活発なので頼もしいです。
hubot とは
hubot (ヒューボットと発音するようです) は、GitHub 社が開発している BOT フレームワークです。 https://hubot.github.com/
BOT というのは、IRC などのチャット上で、呼びかけに応答したり、定期的に何かを発言したりといった処理を人の代わりに行ってくれるソフトウェアのことです。
チャット上で発言させる以外にも、バックグラウンドで複雑な処理を実行させることもでき、それをチャット上での発言によって命令できるため、チャットをシェルのように使うことができます。 hubot のタスクは CoffeeScript か JavaScript で作成することができ、Node.js のライブラリが使えるのでかなり色々なことができます。
Typetalk で hubot を使う
とりあえずこの記事では、hubot のインストールから、実際に Typetalk での発言を hubot に拾ってもらって反応してもらうところまでの手順を解説します。 説明多めですが、やってることはすごく簡単です。
1. Typetalk に hubot 用のアカウントを作成
まずは Typetalk に hubot 用のアカウントを作成します。このアカウントが Typetalk のトピックに常駐して色々やってくれるようになります。 アカウントの作成はこちらから:https://apps.nulab-inc.com/signup
とりあえずこんな感じのアカウントを作成しました。
hubot を使いたいトピックに招待して参加させておくのを忘れないようにしましょう。
2. Typetalk にアプリケーションを作成
Typetalk API を利用するため、Typetalk 上に「アプリケーション」を作成する必要があります。 詳しくは こちら をご参照ください。
https://typetalk.in/my/develop/applications/register より、アプリケーションを作成します。
Grant Type
は Client Credentials
を選択してください。
登録が済むと、Client ID
と Client Secret
が発行されます。この値は後で hubot に設定します。
3. hubot をインストール
一旦 Typetalk を離れて、サーバマシンに hubot をインストールしましょう。
hubot を動かすには node.js と redis がインストールされている必要があります。
例:OS X の場合
$ brew install node redis
例:ubuntu (12.04) の場合
$ sudo apt-get install nodejs redis-server
hubot 自体は npm でインストールします。 公式ドキュメント のとおりにインストールしていきます。
$ npm install -g hubot coffee-script
hubot
コマンドがインストールされたので、このコマンドを使って hubot 環境を作ります。
以下のコマンドで、カレントディレクトリ直下に myhubot という名前で hubot 環境用ワーキングディレクトリが作られます。
$ hubot --create myhubot
ワーキングディレクトリに移動して、依存ライブラリをインストールします。 (明示的にやらなかった場合は、hubot 初回起動時に自動でインストールされます)
$ cd myhubot
$ npm install
これで hubot のインストールは完了です。さっそく起動してみましょう。
起動してみる
まずは redis サーバを起動しておきます。
例:OS X の場合
[bash] $ redis-server & [/bash]
ちなみに、上記のようにバックグラウンドで起動したジョブを終了させたいときは、
jobs
コマンドで jobId を確認して、kill %[JobId]
で終了できます。$ jobs [1] + running redis-server $ kill %1 [1] + done redis-server
例:ubuntu (12.04) の場合
$ sudo service redis-server start
次に、hubot の起動。
$ bin/hubot
Hubot> [Sat Jun 07 2014 11:09:28 GMT+0900 (JST)] WARNING The HUBOT_AUTH_ADMIN environment variable not set
[Sat Jun 07 2014 11:09:28 GMT+0900 (JST)] INFO Initializing new data for brain
Hubot>
これで、既に CLI から直接コマンドを実行することは出来る状態です。hubot help
コマンドを実行してみましょう。
Hubot> hubot help
Hubot> Events:
debug - {user: <user object to send message to>}
Hubot <user> doesn't have <role> role - Removes a role from a user
Hubot <user> has <role> role - Assigns a role to a user
Hubot <user> is a badass guitarist - assign a role to a user
:
:
動いてますね。終了させるときは hubot die
コマンドです。
Hubot> hubot die
Hubot> Goodbye, cruel world.
Hubot> %
$
4. Typetalk 用の hubot アダプタをインストール
hubot を Typetalk で利用するためのアダプタは hubot-typetalk を使わせていただきます。
$ npm install --save hubot-typetalk # package.json を更新しつつインストール
hubot では各種設定を環境変数経由で行うのが一般的なようです。hubot-typetalk では以下の環境変数が必要となります。
- HUBOT_TYPETALK_CLIENT_ID - Typetalk アプリケーションの
Client ID
- HUBOT_TYPETALK_CLIENT_SECRET - Typetalk アプリケーションの
Client Secret
- HUBOT_TYPETALK_ROOMS - Typetalk のトピック ID (カンマ区切りで複数指定可)
- HUBOT_TYPETALK_API_RATE - 1 時間あたりの API コール数
以下のようにして環境変数を設定しましょう。
$ export HUBOT_TYPETALK_CLIENT_ID='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$ export HUBOT_TYPETALK_CLIENT_SECRET='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
$ export HUBOT_TYPETALK_ROOMS='9999'
$ export HUBOT_TYPETALK_API_RATE=100
あとは、hubot-typetalk
アダプタを指定して hubot を起動すれば準備完了です。
$ bin/hubot -a typetalk
5. Typetalk から hubot を呼んでみる
おお〜。hubot 君がちゃんと反応してくれてますね。
ここまで出来れば、あとは自由に hubot-scripts を追加して、レビュー依頼とかデプロイとか色々自動化できそうです。