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送ってきてくれたりします。
今後も開発をスムーズに進めるための機能を追加していく予定です。
Like what you read? Give eureka_developers a round of applause.

From a quick cheer to a standing ovation, clap to show how much you enjoyed this story.