10月3記事目〜
自動化に無頓着では死ぬ
— 前川 裕一 (@kaelaela31) August 9, 2016
でも意外と〜を自動化しようって思いつかなかったりする。それだけ普段やってる面倒なことに慣れちゃうよなって思う。 勉強会とかで聞いてて手頃なところから自動化していこうと思ったのでささっとやった内容。
やりたいことは、Slackでbotにメンション>監視開始>ストア反映>Slackに通知する、これだけ。 今までリリース後「まだかなまだかな〜」みたいな心理的負荷があったのがなくなるので良い。
実際はこんな感じで動く
去年に岡野さんがストア監視を自動化した話をしてて試したかったのと、botkitを使ってもう少し手順を簡単にしたかったのでやって良かった。
TONKOTSUはgoで書かれているのでgoの勉強にもなったし、botkitはNodeなのでjsの勉強にもなった。 TONKOTSUはマジ便利で最高なのだけど、tomlファイルにSlackのチャンネル情報やbotのtokenを起動時に使うので、社内のマシンに置きたかった。 botkitさえ動けばいいので、それぞれの環境があると思うけど、チームにiOSのビルド用Mac miniが転がっていたのでそいつにbotkit立てて社内Slackのbotを動かすことにした。岡野さんはGCMで動かしてるっぽい。
必要なもの
- 手頃なマシン
- Node.js
- yarn(npmでok)
- Slack bot
- go
- TONKOTSU
- botkit
Slack側の準備
さすがにチャンネルとかのセットアップは割愛。botの追加からいきます。
bot作成
以下の順番でbotを追加
↓
↓
↓
説明適当すぎかな笑 登録したらbotのtokenをメモ。 APIドキュメントはここ
チャンネルのIncomming WebHookURLを用意
ここにあるWebHookURLをメモる。なければチャンネルにIncomming WebHooksのインテグレーションを追加する。
マシンセットアップ
ここからが本番〜
TONKOTSUインストールとセットアップ
- cloneしてtomlファイルを編集
$ git clone https://github.com/operando/tonkotsu.git $ cd tonkotsu $ vim config.toml
主に以下の変更
- Slackへポストするbotのアイコンとか名前を可愛げにする(一番重要)
- アプリのidやスキーマを設定
- チャンネルとWebHookUrlを設定
これだけ。
iOSのアプリIDは 「id」に数字をくっつけて登録 これはURLの仕様なので .go
ファイルをよしなにしてくれると変えらる。
Node.js
入れ方はいくらでもあると思うけど、バージョンの使い分けを簡単にするために @1000chパイセンのQiita記事を読むとすぐできる。
brewもあるのでbrewがある環境ならそっちの方が早そう。
botkitインストール
npmからも正式に反応が来てますます、これから使っていくぞという気持ちになった Yarn
を使ってインストールしてみた。体感早かった。 (まだ何か困るほどnpmも使ってないけど)
$ yarn add botkit
もしくは
$ npm install --save botkit
Golang
この辺をみてインストール http://golang.jp/install
botkitのセットアップ
botの部分はこれくらいのコード。
var exec = require(‘child_proccess’).exec; controller.hears([‘ストア’], ‘direct_mention, mention’, function(bot, message) { startMonitoring(); }); function startMonitoring() { exec(‘go run /YOUR_DIRECTORY/tonkotsu.go /YOUR_DIRECTORY/config.go -c /YOUR_DIRECTORY/config.toml’, function(err, stdout, stderr){ if (err) {console.log(err);} }); };
exec
は spawn
とかと同じくシェルコマンドをjsで叩くライブラリ。
botkitはcontrollerの動きがわかればだいたい使えるかと。
注意したいのは .go
ファイルをプロセスが叩くときうまくやらないと場所わからないので、俺はフルパスで指定した。他にいい方法あったら知りたい。
なので /YOUR_DIRECTORY/
の部分を変えてもらうとよい。あと、configも実行場所にいないと読み込まれないので指定したのだけど、他にいい方法ないだろうか…
先に cd
でtonkotsuの場所まで移動すれば良いかもだけど、そうすると spawn
とかの方がいいのかな。
上で用意したbotのtokenを使って
$ token=YOUR_TOKEN node slack_bot.js
で起動。あとは上の画像な感じでうまくいく。
以上!簡単!botkit最高!botは活き活きとさせたいのでもっともっと成長させていきたい。 あれしたい、これしたいってときにサクッとjsのライブラリ調べればできるので、なんでもできる感。いいねぇ。
そういえばネスペ受けたけど今回は惨敗でした…かなり午後の準備不足だったので反省。 二年分「午前一」が免除になるので、来年こそはという気持ち。 4月はデータベーススペシャリストがあるので、そちらをまずは取りに行く。