Hubotで始める簡単Bot開発

  • 28
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

こんにちは,sai研M1の @hico_horiuchi です.
この記事は SLP KBIT Advent Calendar 2014 の16日目です.
今回は,最近ハマっている Hubot について書きます.

もくじ

  • BotとHubotの概要について簡単に説明します.
  • Windows上でHubotを動かしてみよう.
  • 簡単なHubot Scriptを作ってみよう.

Botとは?

チャットに常駐して,発言に応じて応答を返したり,決められた条件に従って発言して参加者に通知したりするようなプログラムのことをBotと呼びます.
Botを使うことで,定型的な処理を自動化したり,人工無能のような受け答えをさせることでチャットを楽しくしたりすることができます.

TwitterのBotを想像してもらうと分かりやすいかな.
「特定のキーワードに反応する」「リプライを返す」「定期的に呟く」など,やることは同じです.

Hubotとは?

Hubotとは GitHub が開発したBotフレームワーク(枠組み)です.
CoffeeScript(またはJavaScript)で処理を書くことで,簡単に機能を拡張できます.
また,TypetalkやTwitterなど,複数のサービスに対応させることができます.

「フレームワーク」なので,実際の処理部分だけの開発で済みます.
Botとしての基本的な機能(チャットの取得と発言など)は,Hubotが提供してくれます.

Windowsで動かす

Hubotは Node.js というJavaScript環境上で動作します.
今回は,nodist というWindows用のNode.js環境をインストールします.

  1. コチラ からnodistの最新版をダウンロード
  2. nodist-master.zipを解凍して,C:\nodistに配置する.
  3. コマンドプロンプトを開き,以下のコマンドを実行する.
> setx /M PATH "C:\nodist\bin;%PATH%"
> setx /M NODIST_PREFIX "C:\nodist"
> nodist selfupdate
> node -v
v0.10.33

次にHubotをインストールします.
引き続きコマンドプロンプトで作業します.

> npm install -g hubot coffee-script yo generator-hubot
> mkdir C:\nodist\mybot
> cd C:\nodist\mybot
> yo hubot

対話形式でHubotの初期設定をしますが,全てEnterを押してください.
終わったら,Hubotを実行してみましょう.

> bin/hubot.cmd
Hubot> hubot ping
PONG
Hubot> hubot time
Server time is: Tue Dec 16 2014 15:35:30 GMT+0900 (東京 (標準時))

こんな感じでhubotに続けてコマンドを打つと,対応する結果を返してくれます.

簡単なscriptを作る

「SLPの活動時間を教えてくれる」scriptを作ってみましょう.
C:\nodist\hubot\scripts\slp.coffeeを作って,好きなエディタで開いてください.
開けたら,以下の内容をコピペします.

module.exports = (robot) ->
  robot.respond /slp$/i, (msg) ->
    msg.send 'SLPは毎週水曜日と金曜日の19時から活動しています!'

robot.respondは,hubotとBotの名前を付けた発言に反応します.
その後の/slp$/iという正規表現にマッチすると,msg.sendで発言します.
実際に実行して,動くか確認してみましょう.

> bin/hubot.cmd
Hubot> hubot slp
SLPは毎週水曜日と金曜日の19時から活動しています!

まとめ

BotとHubotについて解説した後,実際にHubotを動かしたり,scriptを書いたりしてみました.
今回は単純なコマンドに反応させただけですが,Hubotは他にも色んなことができます.

  • GitHubのリポジトリの更新(pushissueなど)を通知
  • 他サービスのAPIを呼出(アニメの放送時間をチェックなど)

Hubot Advent Calendar 2014@bouzuya さんがHubotについて連載しています.
興味のある人はチェックしてみてください.

また,TypetalkのSLPトピックに私が作ったHubot「Huboco」が居ます.
ぜひ話しかけてあげてください.

参考文献