
こんにちは! 株式会社エウレカでカップル専用アプリ「Couples」のAndroid版開発を担当している二川です。今回はCouplesの開発を進める上でコミュニケーションをスムーズにし、開発スピードの “加速” に大活躍しているbotを紹介しようと思います。
Couplesの開発の流れ
まずは現状のCouplesの開発の流れについて簡単に説明します。CouplesのIssueはプロジェクト管理ツールの「JIRA」で管理されています。
画像はJIRAのカンバンボード。モザイクばっかりで何も見えませんね(笑)
下記はデザインの修正に関するチケットの例です。デザイナーとのやり取りをチケットのコメントでおこなっています。
エビデンスを残すという意味で、JIRAのチケットのコメントでやり取りをするのはすごく大切なことなのですが、コメントが送られてきたことに気づかず、作業が止まってしまうこともしばしばありました。俺がスロウリィ?状態です。
Slackで「JIRAにコメントしました!」といった通知を送ったのですが、毎回は面倒でやっていられませんし、JIRAへのコメント自体をSlackで通知したいなーと思ったので、実践してみることにしました。
JIRAのコメントをSlackのDMで送信する
環境を整えると、hubotからDMが届きます。(上記で紹介したやり取りの最後のコメントです)
hubotとはbotの簡単な作成・運用を可能にしたGithub社開発のフレームワークのことです。hubot自体の導入についてはたくさんの解説記事があるので、ここでは省きます。
JIRAへのissueの作成や完了を垂れ流しているSlackのチャンネルもあるのですが、コメントは関係者だけが見られればいいですし、レスポンスを向上させるためにもDMにしています。
(Couplesでは、『リッチマン、プアウーマン』の主人公・日向徹「hyuga-toru-bot」が活躍しています! かっこいいですね)
実装
おおまかな手順は下記のとおり。今回の実装手順はhubotがHeroku上で動作している場合の方法です。
- スクリプトを用意する
- JIRAのWebHooksに実行するスクリプトのURLを設定する
- 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を選択します。

次に左側のサイドバーからWebHooksを選択します。

Create a WebHookを選択して新しくWebHookを追加します。作成画面では必須項目の入力と、issueのupdatedのチェックだけを入れて作成しましょう。
Herokuを使ってhubotを運用している場合は、URLに[heroku app url]/hubot/jira-comment-dm
を登録し、issueのupdatedのチェックだけを入れておきます。
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送ってきてくれたりします。
今後も開発をスムーズに進めるための機能を追加していく予定です。