HubotをはじめるHubotをはじめる
nasa9084nasa9084
自己紹介自己紹介
名前
北村壮大 : Masahiro Kitamura
HN : nasa9084
所属
北海道大学
工学部
情報エレクトロニクス学科
コンピュータサイエンスコース
情報認識学研究室
botとはbotとは
チャットに常駐してコマンドを待ち受けて実行したり
決められた条件に従ってチャットに発言したり
HubotHubot
GitHub社謹製bot作成フレームワーク
特徴特徴
様々なチャットに対応
導入が簡単
簡単にスクリプトを書いて拡張できる
Hubotの構造Hubotの構造
RobotRobot
Hubotの本体
Adapterから情報を受け取って
scriptsに従って処理をして
Adapterに返事を返す
AdapterAdapter
チャットの状況をRobotに入力する
Robotの出力をチャットに伝える
公開されているAdapterの例公開されているAdapterの例
Service Adapter
IRC hubot-irc
Twitter hubot-twitter
HipChat hubot-hipchat
Slack hubot-slack
ScriptsScripts
Co�eeScriptかJavaScriptで記述された動作ファイル
400以上のScriptsが標準で付属
GitHub等に多数公開
自分でも簡単に書ける
InstallInstall
Node.jsが必要
→anyenv/ndenv を使うのが簡単
**env**env
rbenv, pyenvなど、言語環境バージョン管理ツールの総称
簡単に導入できる
簡単に複数バージョンの言語環境を導入できる
簡単にバージョンを変更できる
→ node.js用は ndenv
anyenvanyenv
**env管理ツール
→導入しておくと、別の言語に挑戦するのが簡単
anyenv/ndenvを使ってnode.jsを導入するanyenv/ndenvを使ってnode.jsを導入する
$ anyenv install ndenv
(略)
Install ndenv succeeded!
Please reload your profile (exec $SHELL -l) or open a new session.
$ exec $SHELL -l
$ ndenv install --list
Available versions:
v0.1.14
v0.1.15
(中略)
v6.2.2
v6.3.0
v6.3.1
iojs-v1.0.0
(以下略)
$ ndenv install v6.3.1
(略)
$ ndenv global v6.3.1
**envの例**envの例
**env Language
goenv go
hsenv Haskell
jenv Java
ndenv Node.js
phpenv PHP
plenv Perl
pyenv python
rbenv Ruby
hubotを動かす準備hubotを動かす準備
$ npm install -g hubot coffee-script yo generator-hubot
$ mkdir botdir
$ cd botdir
$ yo hubot
インストールしたものインストールしたもの
hubot
Hubot本体
co�ee-script
Co�eeScriptの実行環境
yo
Yeoman(雛形作成ツール)
generator-hubot
Yeoman用Hubot雛形
hubotを動かしてみるhubotを動かしてみる
$ bin/hubot
ScriptsScripts
Hubotの動作を記述するCo�eeScript/JavaScriptファイル
hubot-scriptsを使うhubot-scriptsを使う
hubotに同梱された、たくさんのScripts
hubot-scripts.json に使いたい名前を書くと使える
に一覧があるhubot-scripts-catalog
hubot-scriptsの例hubot-scriptsの例
�le name 内容
coin.co�ee "heads"か"tails"のどちらかをランダムで返す
kittens.co�ee 猫の写真をランダムに返す
tasks.co�ee タスク管理をしてくれる
weather.co�ee 天気を返す
GitHub等で公開されたものを使うGitHub等で公開されたものを使う
$ npm install --save nasa9084/scripts_for_hubot
→GitHubからインストールできる
external-scripts.json に追記で動作
自分で作る自分で作る
自分でCo�eeScript/JavaScriptで動作を書いて使うことができる
scripts/ ディレクトリに入れて使う
Scriptの書き方Scriptの書き方
module.exports = (robot) ->
robot.hear /正規表現/, (res) ->
#何らかの処理
res.send 'hogehoge'
入力入力
robot.hear /正規表現/
正規表現に合致する投稿に対して動作
robot.respond /正規表現/
正規表現に合致する呼びかけに対して動作
robot.enter
ユーザが入室したら動作
robot.leave
ユーザが退室したら動作
robot.topic
チャットルームのトピックが変更されたら動作
robot.respondrobot.respond
ロボット名を使った呼びかけに対して動作
robot.respond /hello/
hubot hello
hubot: hello
@hubot hello
に対して反応
出力出力
robot.send
単に反応
robot.reply
返信の形で反応
メッセージの取得メッセージの取得
module.exports = (robot) ->
robot.hear /正規表現/, (res) ->
#何らかの処理
res.send 'hogehoge'
res.matchにメッセージの配列が入っている
メッセージ本体
正規表現のグループに合致した部分
メッセージの処理メッセージの処理
res.random <LIST>
リストからランダムに一つ選ぶ
例例
あいさつ
module.exports = (robot) ->
robot.hear /寝る/, (res) ->
res.send res.random [
"おやすみ",
"オヤスミ_〆(・∇・*)",
"おやすみ(。´-ω-`。).zZ",
"|・ω・`)おやすみ。",
"(つ∀-)オヤスミー",
"(o・д・)尸~~おやすみ~♪"
]
面白いものが書けたら・・・面白いものが書けたら・・・
github: nasa9084/scripts_for_hubot にPRしてください!
まとめ!まとめ!
Hubotは色々なところで使えるbotフレームワーク
slack, twitter, HipChat, and so on.
導入が簡単
yo hubot するだけ
簡単に動作を追加できる
沢山付属Scriptsがある
いろんな人が公開しているので簡単に増やせる
自分で書くのも簡単
Co�eeScript/JavaScriptで書ける
→ Hubot、楽しい! ←

Hubotをはじめる