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

image

とりあえずこんな感じのアカウントを作成しました。

hubot を使いたいトピックに招待して参加させておくのを忘れないようにしましょう。

image

2. Typetalk にアプリケーションを作成

Typetalk API を利用するため、Typetalk 上に「アプリケーション」を作成する必要があります。 詳しくは こちら をご参照ください。

https://typetalk.in/my/develop/applications/register より、アプリケーションを作成します。

Grant TypeClient Credentials を選択してください。

image

登録が済むと、Client IDClient Secret が発行されます。この値は後で hubot に設定します。

image

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 を呼んでみる

image

おお〜。hubot 君がちゃんと反応してくれてますね。

ここまで出来れば、あとは自由に hubot-scripts を追加して、レビュー依頼とかデプロイとか色々自動化できそうです。

おまけ

寿司ゆきかわいいよ寿司ゆき

image

hubot-sushiyuki