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

この記事はエウレカAdventCalendar2015からは漏れてしまった幻の26日目の記事です。
こんにちはこんにちは!
CouplesのAndroidを担当しています二川です。
今回はCouplesの開発を進める上でコミュニケーションをスムーズにし、開発スピードの「加速」に大活躍しているbotをご紹介しようと思います。
Couplesの開発の流れ
まずは現状のCouplesの開発の流れについて簡単に説明します。
CouplesのIssueはJIRAで管理されています。
画像はJIRAのカンバンボードです。モザイクばっかりで何も見えませんねw

下記はデザインの修正に関するチケットの例です。
デザイナーとのやり取りをチケットのコメントでおこなっています。

エビデンスを残すという意味でJIRAのチケットのコメントでやり取りをするのはすごく大切なことなのですが、JIRAのコメントに気づけずに作業が止まってしまうこともしばしばありました。俺がスロウリィ?状態です。
Slackで「JIRAにコメントしました!」みたいなmentionを送ったりしていたのですが、毎回は面倒でやってられないし、JIRAへのコメント自体をSlackで通知したいなーと思い、やってみました!
JIRAのコメントをSlackのDMで送信する
環境を整えるとこのようにhubotからDMが届きます。
(上記で紹介したやり取りの最後のコメントがDMで届いています。)
hubotとはGithub社が開発しているbotのフレームワークで、簡単にbotの作成・運用が可能になります。hubot自体の導入についてはたくさんの解説記事があるので、ここでは省きます。
JIRAへのissueの作成や完了を垂れ流しているSlackのチャンネルもあるのですが、コメントは関係者だけが見れればいいし、DMにすることでレスポンスが向上すると考えてDMにしています。

(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を選択します。

左側のサイドバーから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送ってきてくれたりします。
今後も開発をスムーズに進めるための機能を追加していく予定です。
eureka Advent Calender 実施中です。Go言語関連を始めとして、大規模サービス特有の事例、Tipsを共有しています!
- 2015.12.26
- Tech
- by Takahiro Futagawa
この記事はエウレカAdventCalendar2015からは漏れてしまった幻の26日目の記事です。
こんにちはこんにちは!
CouplesのAndroidを担当しています二川です。
今回はCouplesの開発を進める上でコミュニケーションをスムーズにし、開発スピードの「加速」に大活躍しているbotをご紹介しようと思います。
Couplesの開発の流れ
まずは現状のCouplesの開発の流れについて簡単に説明します。
CouplesのIssueはJIRAで管理されています。
画像はJIRAのカンバンボードです。モザイクばっかりで何も見えませんねw
下記はデザインの修正に関するチケットの例です。
デザイナーとのやり取りをチケットのコメントでおこなっています。
エビデンスを残すという意味でJIRAのチケットのコメントでやり取りをするのはすごく大切なことなのですが、JIRAのコメントに気づけずに作業が止まってしまうこともしばしばありました。俺がスロウリィ?状態です。
Slackで「JIRAにコメントしました!」みたいなmentionを送ったりしていたのですが、毎回は面倒でやってられないし、JIRAへのコメント自体をSlackで通知したいなーと思い、やってみました!
JIRAのコメントをSlackのDMで送信する
環境を整えるとこのようにhubotからDMが届きます。
(上記で紹介したやり取りの最後のコメントがDMで届いています。)
hubotとはGithub社が開発しているbotのフレームワークで、簡単にbotの作成・運用が可能になります。hubot自体の導入についてはたくさんの解説記事があるので、ここでは省きます。
JIRAへのissueの作成や完了を垂れ流しているSlackのチャンネルもあるのですが、コメントは関係者だけが見れればいいし、DMにすることでレスポンスが向上すると考えてDMにしています。
(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を選択します。
左側のサイドバーから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送ってきてくれたりします。
今後も開発をスムーズに進めるための機能を追加していく予定です。
eureka Advent Calender 実施中です。Go言語関連を始めとして、大規模サービス特有の事例、Tipsを共有しています!
Recommend
pairs開発責任者が考える「プロダクト・マネジメント」に必要な5つの資質
- 2015.12.25
- Product
- by Junya Ishibashi
第一回 Goもくもく会(ごもく会)を開催しました!
- 2015.12.22
- Event
- by Hiroki Kojima