Couplesの開発をスムーズにしてくれるbotの紹介 ~この世の理はすなわち速さだと思いませんか?~

この記事はエウレカAdventCalendar2015からは漏れてしまった幻の26日目の記事です。


こんにちはこんにちは!
CouplesのAndroidを担当しています二川です。
今回はCouplesの開発を進める上でコミュニケーションをスムーズにし、開発スピードの「加速」に大活躍しているbotをご紹介しようと思います。

Couplesの開発の流れ

まずは現状のCouplesの開発の流れについて簡単に説明します。
CouplesのIssueはJIRAで管理されています。
画像はJIRAのカンバンボードです。モザイクばっかりで何も見えませんねw
Couples_-_Android_-_Agile_Board_-_JIRA
下記はデザインの修正に関するチケットの例です。
デザイナーとのやり取りをチケットのコメントでおこなっています。
JIRA2
エビデンスを残すという意味でJIRAのチケットのコメントでやり取りをするのはすごく大切なことなのですが、JIRAのコメントに気づけずに作業が止まってしまうこともしばしばありました。俺がスロウリィ?状態です。
Slackで「JIRAにコメントしました!」みたいなmentionを送ったりしていたのですが、毎回は面倒でやってられないし、JIRAへのコメント自体をSlackで通知したいなーと思い、やってみました!

JIRAのコメントをSlackのDMで送信する

環境を整えるとこのようにhubotからDMが届きます。
(上記で紹介したやり取りの最後のコメントがDMで届いています。)
hubotとはGithub社が開発しているbotのフレームワークで、簡単にbotの作成・運用が可能になります。hubot自体の導入についてはたくさんの解説記事があるので、ここでは省きます。
JIRAへのissueの作成や完了を垂れ流しているSlackのチャンネルもあるのですが、コメントは関係者だけが見れればいいし、DMにすることでレスポンスが向上すると考えてDMにしています。
スクリーンショット 2015-12-22 7.54.44

(Couplesではhyuga-toru-botが活躍しています!かっこいいですね。)

実装

おおまかに手順は下記のとおりです。
今回の実装手順はhubotがHeroku上で動作している場合の方法になります。

1.スクリプトを用意する
2.JIRAのWebHooksに実行するスクリプトのURLを設定する
3.JIRAのURLをHerokuの環境変数に登録しておく

1.スクリプトを用意する

hubotなのでcoffeescriptで実装しています。
JIRAとSlackでのユーザネームが異なる場合はmapを用意してあげます。

# Use if the user name of jira and slack is different
# "jiraName": "slackName"
map =

module.exports = (robot) ->;

  convertHandleName = (name) ->
    map[name] || name

  extractHandleName = (body) ->
    temp = body.match(/[~.+?]/g)
    unless temp is null
      name = []
      for i in temp
        name.push("#{i}".replace(/[[~]]/g, ""))
      return name

  robot.router.post '/hubot/jira-comment-dm', (req, res) ->
    body = req.body
    if body.webhookEvent == 'jira:issue_updated' && body.comment
      issue = "#{body.issue.key} #{body.issue.fields.summary}"
      url = "#{process.env.HUBOT_JIRA_URL}/browse/#{body.issue.key}"
      handleNameList = extractHandleName(body.comment.body)

      unless handleNameList is null
      for i in handleNameList
        robot.send(room: convertHandleName(i),
        "*#{issue}* _(#{url})_n@#{body.comment.author.name}'s comment:n```#{body.comment.body}```")
  res.send 'OK'

2.JIRAのWebHooksに実行するスクリプトのURLを設定する

設定にはJIRAのAdministrator権限が必要となります。
設定のSystemを選択します。
futaDashboard_-_JIRA
左側のサイドバーからWebHooksを選択します。
JIRA_Configuration_-_JIRA
Create a WebHookを選択して新しくWebHookを追加します。
作成画面では必須項目の入力と、issueのupdatedのチェックだけを入れて作成します。
WebHooks_-_JIRA
Herokuを使ってhubotを運用している場合は、URLに[heroku app url]/hubot/jira-comment-dmを登録し、issueのupdatedのチェックだけを入れておきます。
WebHooks_-_JIRA 2
JIRAのWebHooksの設定は以上です。

3.JIRAのURLをHerokuの環境変数に登録しておく

HUBOT_JIRA_URL という名前でJIRAのURLをHerokuの環境変数に登録しておきます。
下記は弊社の場合です。JIRAのURLは適宜読み替えて登録してください。

$ heroku config:add HUBOT_JIRA_URL=https://eureka.atlassian.net

まとめ

Couplesの開発を進める上でスピードアップに貢献してくれているhyuga-toru-botを紹介しました。
hyuga-toru-botはこの他にもやる気の出る名言をつぶやいてくれたり、会話の中で特定のワードに反応してmention送ってきてくれたりします。
今後も開発をスムーズに進めるための機能を追加していく予定です。

  • このエントリーをはてなブックマークに追加

エウレカでは、一緒に働いていただける方を絶賛募集中です。募集中の職種はこちらからご確認ください!皆様のエントリーをお待ちしております!

Recommend

pairs開発責任者が考える「プロダクト・マネジメント」に必要な5つの資質

多言語・マルチデバイス対応のpairsを、チームでデザインするためのデザインデータ管理方法とは?