複数サービスにまたがる定時処理はHubotにしてもらおう

こんにちは、ShareWisの濱田です。

今日は定型的な作業の自動化について話します。

社内でHubotを導入することになりました。もちろんただ遊びで導入したわけではなく、業務フローの改善を狙っての導入です。ちょっとした作業をHubotにお手伝いしてもらってます。


ShareWisでは週の最初と最後に週次ミーティングを行っています。

このミーティングの前準備として、以下の2つを行います。

  • Asanaにミーティング用の項目をタスクとして挙げる
  • Slackでメンバーへミーティングの告知

しかし、他の業務によってこれらの作業が遅れたりうっかり忘れてしまうことがあるんですね。

これら自体をAsanaにタスクとしてあげているんですが、Asanaはその日何をするかというタスク管理には強いんですが、時間指定でのリマインダーなどはないので、何時にこれをやるという作業をカバーするのは苦手。

こういう決まりきった作業なら、Hubotの出番ですね。


Hubotは node.js + coffeescript で動いており、cronを使えば定時処理も簡単に実装することができます。

一点ハマったポイントといえば、hubotはhipchatのadapterで単純に実装すると、一つの発言がinviteされた全roomに投稿されてしまいます。

しかし、cronでの告知は全メンバーが常駐している特定のroomにのみ投稿したい。そこで、Hubotを動かしているサーバにhttpリクエストを受け付けるように実装。これでリクエストのパラメータで投稿内容と投稿するroomを指定できるようになりました。
asanaでタスクを作る作業もAPIが公開されてますので、Hubotにせっせとやってもらいます。
hubot動作画面
うまくいったようです。Asanaにもタスクが準備されています。これでHubotがミーティングの準備をしてみんなに知らせてくれるようになりました。働き者ですね。

node.js自体をがっつり触るのは初めてでしたがnpmも手伝って様々なコードを簡単に書くことができました。

このように、ChatOpsとまではいかないまでも様々なAPIを連携させれば結構簡単に色々できますね。

これからこのHubotをじっくり育てて、このブログでもその成長ぶりをお伝えできればと思います。

 

(濱田)

コメント

タイトルとURLをコピーしました