Hubotでslack用のメタル桃子botを作ってみた
メタル桃子は、
話しかけられたら『メタル桃子だけど。』と回答するだけでよいので。
bot開発に入門するには、取り組みやすいテーマだと考えられます。
そこで、このエントリでは、
Hubotというbot-frameworkを使って、slack用のメタル桃子botを作ることにします。
作成したbotは、herokuにdeployします。
Hubot
https://hubot.github.com/
前提とする環境:
- Node.js (v10.7.0を利用しました)
- yarn (1.7.0を利用しました)
- Heroku
以下の流れでメタル桃子botを作成していきます。
- ローカルPCでhubotの環境を準備する
- メタル桃子botを実装する
- Herokuにbotをdeployする
- メタル桃子アイコンを作る
- slackと連携させる
ローカルPCでbotを動かしてみる
Node.jsとyarnは利用可能となっている前提として。
以下のチュートリアルに従ってhubotの環境を用意します。
Getting Started With Hubot | Hubot
https://hubot.github.com/docs/
以下のコマンドで、hubot generatorをインストールします。
$ yarn global add yo generator-hubot
以下のコマンドで、hubotのインスタンスを生成します。
$ mkdir metalmomoko-hubot
$ cd metalmomoko-hubot
$ yo hubot
「yo hubot」で、いろいろと聞かれますが、
「? Bot adapter (campfire)」に対して「slack」と答える以外はデフォルトでよいです。
以下のように、生成したコードをgitにコミットしておきます。
$ git init
$ git add .
$ git commit -m "Initial commit"
generatorの生成するコードが、
nodeのバージョンが古い、npm前提なので、
バージョンの変更とyarnへの切り替えを行います。
以下のように、package.jsonのenginesのversionを修正。
"engines": {
"node": "10.7.0"
}
以下のように、npmからyarnに変更します。
$ yarn install
$ git rm package-lock.json
$ git add yarn.lock
ここでも、いったんコミットしておくことにします。
$ git commit -a -m "nodejs verup and use yarn"
「bin/hubot」で起動して、エラーが表示されず入力待ちになればローカルでの環境準備は完了です。
メタル桃子botを実装する
ここまでで環境は整備できたので、次はメタル桃子を実装してきます。
hubotでは、script配下にbotの処理を実装していきます。
何か話しかけられたら『メタル桃子だけど。』と返答するbotは、以下のように実装します。
scripts/metalmomoko-dakedo.js
module.exports = function (robot) {
robot.hear(/.*/i, res => {
res.send('メタル桃子だけど。')
})
}
hear以下の正規表現が、反応する文言(ここでは「.*」として、すべての問いかけに反応)
send以下が、返答するメッセージです。
このスクリプトを配置して、
再びhubotを起動し、話かけてみると、返答が返ってきます。
$ bin/hubot
※途中省略※
メタル桃子って何?
metalmomoko-hubot> メタル桃子だけど。
実装が完了したので、ここでコミットしておきます。
$ git add yarn.lock
$ git commit -a -m "add metalmomoko-dakedo"
Herokuにbotをdeployする
作成したbotをHerokuにdeployします。
Herokuアカウントがあること、CLIのセットアップは前提として説明します。
Herokuのアカウント作成とCLIセットアップは、以下を参考にしてください。
Heroku
https://jp.heroku.com/
Heroku CLI
https://devcenter.heroku.com/articles/heroku-cli
CLIでHerokuにログインします。
$ heroku login
以下のようにして、アプリケーションの作成とdeployを行います。
※create時のアプリケーション名は任意に指定してください。
$ heroku create metalmomoko
$ git push heroku master
デプロイが成功することを確認します。
※nodeのバージョンが古いままだと失敗します。
以下のコマンドでRedisも追加しておきます。
$ heroku addons:add redistogo:nano
メタル桃子アイコンを作る
slackにメタル桃子botを参加させる前に、メタル桃子bot用のアイコンを作っておきます。
対応しているスマートフォンでミリシタを起動し、
周防桃子をセンターにして好きな曲のMVを再生し、スクリーンショットをとります。
※まだミリシタをやっていない方は、以下から入手し周防桃子が手に入るまでプレイしてください。
アイドルマスター ミリオンライブ! シアターデイズ
http://millionlive.idolmaster.jp/theaterdays/
スクリーンショットをPhotoshopに取り込み、以下のように加工します。
(Photoshop CS6で作業しました)
(1) 顔部分アップの正方形にトリミング(300x300px)
(2) フィルター→表現手法→エンボス
(3) レイヤー効果→グラデーションオーバーレイ
(4) png形式で出力
slackと連携させる
最後に、作成したbotをslackに参加できるように設定します。
slackのワークスペースメニュー(左上)から、
「Administration」->「Manage Apps」を選択します。
「Search App Directory」(上部中央)に「Hubot」と入力して、Hubotアプリを追加します。
「Integration Settings」で以下の項目を設定します。
- Customize Name: metalmomoko
- Customize Icon: 前項で作成したアイコン
- Full Name: メタル桃子
同じページの「Setup Instructions」に記載されている
「HUBOT_SLACK_TOKEN=xxxx」の部分をコピーして。
以下のように、herokuに設定します。
$ heroku config:add HUBOT_SLACK_TOKEN=※コピーした値※
正しく設定出来ていれば、slackのApssに「メタル桃子」が出てきます。
直接話しかけたり、チャネルにInviteしてメンションすると、
以下のように返答してくれるようになります。
以上で、
『メタル桃子だけど。』と回答するbotが作成出来ました。
Webhookと連携させたbotなど、便利なbotを作成する入門として、
メタル桃子botを作ってみるのも楽しいのではないかな思います。