Hubot

@bouzuya の Hubot 連載をふりかえってみた

More than 3 years have passed since last update.

これは Hubot Advent Calendar 2014 の 25 日目の記事です。

また、今回は @bouzuya の Hubot 連載の第 17 回 (最終回) です。目次は、第 1 回にあるので、そちらをどうぞ。


前回、そして今回は

前回は 使えない Hubot アダプターをつくろう ということで、Hubot アダプターを実際につくってみました。

今回は、最終回なので、ここまでのまとめと紹介できなかった細々としたなどに触れて、おしまいにします。


ふりかえり

過去の 16 回をふりかえってみます。

いま思うと冗長なところや、不十分なところがたくさんありますね。


第 1 回 『Hubot / ChatOps とは』

Hubot / ChatOps の概要を紹介しました。

この 2014/12/01 タイミングでの Hubot の最新バージョンは 2.9.3 で、この記事を書いている 2014/12/25 時点で 2.11.0 です。2.10.0, 2.11.0 と二度もバージョンアップされてしまいました。普段あんまり早く上がらないのですが、意外と上がるものですね。

Hubot は GitHub のつくった BOT 。ChatOps のメリットは「共有」にあり。最後に弊社の :sushi: の紹介をしました。


第 2 回 『Hubot のインストール』

Hubot をローカルにインストールして動かす手順を紹介しました。

yo + generator-hubot で Hubot を生成する手順というのはまだまだ少ない感じがします。簡単だからかもしれませんが。

反省として、標準スクリプトの紹介が控えめだったなあと。標準スクリプト紹介で丸1回とっても良かったと思います。


第 3 回 『Hubot を Heroku で動かして Slack から話す』

Hubot を Heroku にデプロイする ( Slack アダプターを使用) 手順を紹介しました。

この手順のあとに slackhq/hubot-slack がバージョンアップされて大幅に手順が変わっているので、イマイチな記事です。

さらに言うと、世間的に Hubot + Heroku + Slack という構成があたかも当然のように広がっているので、ありふれたつまらない記事でした。もっとマニアックなアダプターのほうが良かったのかもしれません。


第 4 回 『Hubot スクリプトを追加インストールしよう & 自分だけの Hubot スクリプトをつくろう』

Hubot スクリプトを追加する手順と、Hubot スクリプトを改造する手順を紹介しました。

詰め込みすぎたと反省しています。Hubot スクリプトを追加する手順で 1 回、Hubot スクリプトを作成する手順で 1 回にしておけば良かったですね。


第 5 回 『簡単な Hubot スクリプトをゼロからつくろう』

Hubot スクリプトを作成する手順を紹介しました。

yo + generator-hubot で Hubot スクリプトを生成する手順は、ブログなどでは見たことがないので、まま価値があると思います。

robot.respond / msg.send を紹介しています。

hubot コマンドのオプションにも触れています。


第 6 回 『簡単な Hubot スクリプトをもっとつくろう (おみくじ系)』

msg.random を使った Hubot スクリプトを作成する手順を紹介しました。

robot.hear / msg.match / msg.random / msg.reply に触れています。

おみくじは定番で、他にもレビュアーを決めたり、昼ごはんを決めたり、msg.random が使われているスクリプトはよく見ます。


第 7 回 『スクレイピングする Hubot スクリプトをつくろう』

スクレイピングをする Hubot スクリプトを作成する手順を紹介しました。

request / cheerio のこれまた定番の組み合わせで Adventar をスクレイピングしてみました。

外部 npm パッケージの追加はここで紹介しました。


第 8 回 『Hubot でホームページをつくろう』

HTTP で待ち受ける Hubot スクリプトを作成する手順を紹介しました。

robot.routerexpress のインスタンスなので Web アプリケーションを Hubot に組み込めます。 Web Hook などへの対応もこれを使います。


第 9 回 『Hubot スクリプトの読み込み処理を読んでみよう』

hubot コマンドから順に Hubot の起動処理を追いかけました。

robot.load / robot.loadHubotScripts / robot.loadExternalScripts / robot.loadFile に触れています。


第 10 回 『設定を読み込む Hubot スクリプトをつくろう』

process.env.* から Hubot の設定の読み込む方法を紹介しました。


第 11 回 『robot.brain を使った Hubot スクリプトをつくろう

robot.brain で永続化する Hubot スクリプトを紹介しました。

robot.brain.get / robot.brain.set に触れています。


第 12 回 『robot.brain を永続化する Hubot スクリプトをつくろう』

robot.brain を永続化する Hubot スクリプトを紹介しました。

robot.brain.setAutoSave / robot.brain.mergeData に触れています。


第 13 回 『いまさらだけど Hubot のドキュメントを読んでみよう』

ドキュメントの一覧とその概要を紹介しています。


第 14 回 『Hubot スクリプトのテストやその環境を知ろう』

Hubot スクリプトのテストについて紹介しました。

generator-hubot で生成される grunt & mocha & chai & sinon な構成でのテストに触れました。また個人的に使っている gulp & mocha & power-assert & sinon な構成にも触れました。


第 15 回 『Hubot 標準同梱の Shell アダプターを読んでみよう』

Hubot のアダプターの処理を追いかけました。

robot.loadAdapter / use / adapter.run / adapter.send などに触れました。


第 16 回 『使えない Hubot アダプターをつくろう』

Hubot のアダプターを作成する手順を紹介しました。

Chadventar という仮想チャットと連携する Hubot アダプターをつくりました。最小構成のアダプターです。

記事のふりかえりが意外と長くなりました。


紹介し忘れたもの

ドキュメントに記載されているものを基準に紹介し忘れているものを紹介します。


robot.logger

ログ出力をします。npm パッケージ log のインスタンスです。この log はもうリポジトリも公開されていないのかな。

https://www.npmjs.com/package/log

robot.logger.debug('debug message')

robot.logger.info('info message')
robot.logger.error('error message')

→ 「 Hubot のログ情報 (Robot#logger) まとめ - Qiita 」にまとめました。


robot.topic

トピック変更時のリスナーを設定します。

robot.topic (msg) ->

msg.send 'トピックが変更されました'

前回のアダプター作成時も紹介した気はしますが、 TopicMessage に反応するものです。


robot.enter / robot.leave

入退室時のリスナーを設定します。

robot.enter (msg) ->

msg.send '入室しました'

robot.leave (msg) ->
msg.send '退室しました'

これまた前回のアダプター作成時も紹介した気はしますが、 EnterMessage / LeaveMessage に反応するものです。


robot.on / robot.emit

ほとんど使わない気はしますが RobotEventEmitter なので on / emit できます。


JavaScript で Hubot スクリプト

最初に Hubot スクリプトを書いた回で併記した気もするのですが、JavaScript でも Hubot スクリプトは書けますので、好きな AltJS で書いて JavaScript にすれば自由に言語を選べます。


最後に

Hubot Advent Calendar 2014 もようやく終わりですね。お疲れ様でした。

入門記事なのか、何なのか分からなかったけど、@bouzuya の Hubot 連載もこれで終わりです。来年はたぶんやりません。

Hubot 連載読んで Hubot スクリプトを書く人が増えたり、そのスクリプトですこしでも楽しんでいただければ幸いです。

では。