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

こんにちは、開発メンバーの濱田です。今日は定型的な作業の自動化について話します。
先日のHipChat料金体系変更により、ShareWisでは開発メンバーのみの利用だったHipChatを全メンバー使用することに。この変更に便乗してHubotを導入することにしました。もちろんただ遊びで導入したわけではなく、業務フローの改善を狙っての導入です。ちょっとした作業をhubotにお手伝いしてもらいましょう。


ShareWisでは週の最初と最後に大きな週次ミーティングを行いますが、このミーティングの前準備として、以下の二つを行います。

  • Asana(タスク管理ツール)にミーティング用の項目をタスクとして挙げる
  • HipChatでメンバーへミーティングの告知

しかし、他の業務によってこれらの作業が遅れたりうっかり忘れてしまう事があるんですね。これら自体を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をじっくり育てて、このブログでもその成長ぶりをお伝えできればと思います。

採用情報

株式会社シェアウィズでは、新しいメンバーの募集を積極的に行っています。フルタイムの勤務から学生インターンまで、ご関心をお持ちの方はお気軽にコンタクトしてください!

採用ページへ

フォローする