NTTドコモ様_dカーシェア
NTTドコモ様_dカーシェア
2016.03.01
#5
bot開発日記

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

二川
※本記事は「eureka tech blog」の記事をもとに編集された記事です

こんにちは! 株式会社エウレカでカップル専用アプリ「Couples」のAndroid版開発を担当している二川です。今回はCouplesの開発を進める上でコミュニケーションをスムーズにし、開発スピードの “加速” に大活躍しているbotを紹介しようと思います。

Couplesの開発の流れ

まずは現状のCouplesの開発の流れについて簡単に説明します。CouplesのIssueはプロジェクト管理ツールの「JIRA」で管理されています。

画像はJIRAのカンバンボード。モザイクばっかりで何も見えませんね(笑)

Couples_-_Android_-_Agile_Board_-_JIRA

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

JIRA2

エビデンスを残すという意味で、JIRAのチケットのコメントでやり取りをするのはすごく大切なことなのですが、コメントが送られてきたことに気づかず、作業が止まってしまうこともしばしばありました。俺がスロウリィ?状態です。

Slackで「JIRAにコメントしました!」といった通知を送ったのですが、毎回は面倒でやっていられませんし、JIRAへのコメント自体をSlackで通知したいなーと思ったので、実践してみることにしました。

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

環境を整えると、hubotからDMが届きます。(上記で紹介したやり取りの最後のコメントです)

hubotとはbotの簡単な作成・運用を可能にしたGithub社開発のフレームワークのことです。hubot自体の導入についてはたくさんの解説記事があるので、ここでは省きます。

JIRAへのissueの作成や完了を垂れ流しているSlackのチャンネルもあるのですが、コメントは関係者だけが見られればいいですし、レスポンスを向上させるためにも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送ってきてくれたりします。

今後も開発をスムーズに進めるための機能を追加していく予定です。