チームにBotを召喚したら業務効率があがった話

こんにちは。
現在、モチベショーンクラウドの開発に参画している谷と申します。

この記事は、モチベーションクラウドアドベントカレンダーの7日目の記事となります。

## はじめに
簡単に自己紹介をさせて頂きます！

私は元々5年程、賃貸の仲介営業として不動産会社で働いておりました。
昨年の9月からエンジニアになり、同年の11月からモチベーションクラウド開発に参画しております。

11月～1月は障害対応や顧客対応をメインで行うチームに所属、2月～7月はスクラムマスター兼開発として、改善をメインで行うチームに所属し、現在は機能開発チームで開発を行っております。

2月～7月のスクラムマスター兼開発だった期間に、Botを召喚してかなり助けてもらったので、ここで紹介させてください！

## 召喚したBotたち
それでは、私が召喚したBotたちを紹介します！（他にも召喚したのですが、今回は2つに絞りました:persevere:）

- コードレビューを円滑に進めてくれる__レビューくん__
- 日々の「課題」や「やりたいこと」を管理してくれる__改善くん__

ちなみにすべて__Google Apps Script(以下GAS)__で作成しました！

GASで作った理由は、__サーバーレスですぐに開発できる__のと、__スプレッドシートとの連携が良い__からです。

それでは、Botたちを「何ができるか？」「なぜ作ったか？」「どのような効果があったか？」の3点で紹介させていただきます！

## レビューくん
### 何ができるか？
- プルリクにレビュワーをアサインするとSlackに通知をしてくれます
- プルリクにコメントすると、Slackに通知してくれます
- プルリクをapproveするとSlackに通知してくれます

__プルリクにレビュワーをアサインすると、、、__
![request.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/0817ec80-bd37-2836-3811-2166fc94b346.png)
:point_right: Slackのレビューチャンネルに通知をしてくれます
:point_right: To にはレビュワー、From にはプルリク作成者かプルリクにアサインされてる人が入ります
:point_right: プルリク名からプルリクのページに飛べます

__プルリクにコメントすると、、、__
![comment.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/99b7f680-b71f-4acb-9336-699ee7e17093.png)
:point_right: Slackのレビューチャンネルに通知をしてくれます
:point_right: To にはプルリク作成者かコメント内にメンションがある人、From にはコメントした人が入ります
:point_right: プルリク名からコメント箇所に飛べます
:point_right: コメントが表示されます

__プルリクがapproveされると、、、__
![approve.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/43cac361-fcca-aeef-a984-11c63c678e65.png)
:point_right: Slackのレビューチャンネルに通知をしてくれます
:point_right: To にはプルリク作成者かプルリクにアサインされてる人、From にはapproveした人が入ります
:point_right: プルリク名からプルリクのページに飛べます

### なぜ作ったか？
チームが発足したときにいくつかチームルール作り、その中で__レビューは最優先__というルールがあったので、コードレビューを円滑にしたいと思ったからです。

また、レビューくんを召喚する前は、プルリク作って、URLコピーして、SlackのチームのチャンネルにURLを貼り付けて、「レビューお願いします」と伝えて、コメントしたら、「コメントしたから確認して」と伝えて、「approveしたら、approveしたよ」と伝えてと、、、めんどくさい！と思ったのも理由の一つです！（笑）

既存のインテグレーションでも、GitHubとSlackは連携できますが、アカウント名が違うとうまくメンションできないので、メンションをつけれるようにしたかったです。

レビューくんでは、GitHubのアカウント名とSlackIdを記載するスプレッドシートを用意して、GitHubのアカウント名を検索キーに、SlackIdを取得して、Slackにメンションを飛ばしてます。
もしメンバーを追加する場合は、スプレッドシートにGitHubのアカウント名とSlackIdを書き込むだけでOKなので楽です！

__注意:__ _SlackAPIの仕様変更で、API経由でメンションをつけるときは `<@slack_id>`でないとメンションできなくなっているので、今は同一アカウント名でもメンションがうまくできないかもしれません。_

### どのような効果があったか？
レビュー依頼、コメント通知、approve通知が自動でできるので、レビューの遅延がほとんどなくなりました！

プルリクにレビュワーをアサインすると、自動で通知が行くので、URLコピーして、貼り付けて、、、などのレビュー依頼が不要になりました！

また、レビューくんを使うことで、「プルリクの reviwers にアサインする」がルールになります。
そうすることで、自分がレビュワーになっているプルリクは GitHub の ReviewRequests に表示されるので、自分がレビュワーになっているプルリクを探しやすくなりました。
![review.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/36093182-9096-3faa-c938-b3a934e9007a.png)

## 改善くん
### 何ができるか？
- Slackの改善チャンネルで「課題」や「やりたいこと」を投稿できる
- 投稿すると自動でスプレッドシートに内容を書き込んでくれる
- 振り返りで、今スプリントでやると決めたものは毎朝リマインドしてくれる

__改善チャンネルで`/kaizen`と入力すると、、、__
![pt.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/575a40bd-9eb8-2470-67ea-460eda7761f6.png)
:point_right: 入力モーダルが表示され、「課題」や「やりたいこと」を登録できます

__「課題」や「やりたいこと」を登録すると、、、__
![kaizen.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/b42780e5-6d8f-46b5-4b20-8f86bf4f3c7f.png)
:point_right: Slackに通知してくれます
:point_right: スプレッドシートに書き込みしてくれます

__毎朝10時くらいになると、、、__
![remind.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/325018/63b302ac-feaf-0511-76ee-50881440afb9.png)
:point_right: リマインドを通知してくれます

### なぜ作ったか？
週一で振り返りを行っていたのですが、常日頃から「課題」や「やりたいこと」は転がってるので、週一で溜め込んで言わなくても、そのときにつぶやけば良いじゃん！と思いました。

デイリーPTとかフライングPTと呼んでましたが、デイリーPTおすすめです！

投稿はスプレッドシートに書き込んでもらうより、Slackがやりやすいだろうと思い、Slackに投稿してもらうことにしました。

ただ、あがってきた課題は一覧で見れるようにして、「やる・やらない」「いつまでに」「誰が」「完了したか」などをスプレッドシートで管理したいと思いました。

そうなるとSlackにつぶやかれたものをスプレッドシートに移して、投稿日書いて、誰が投稿したか書いて、、、またしても私はめんどくさいと思ってしまいました:scream:

さーどうする？？
考えた結果Botにやってもらうことにしました！

### どのような効果があったか？
まずはじめに、デイリーPTではちょっとしたことでも吸い上げて改善を行いたかったので、__このチャンネルは気づいたことを気軽につぶやく場所__ということを意識的してもらえるように心掛けました。

その結果、「席が遠い」「レビュー依頼、コメントしたよ通知が面倒」「デイリーPTのやることを忘れる」など、本当につぶやきのようなものから、普段の振り返りで出る内容のものまで様々な意見が出てくるようになりました。
もちろん、「これはやらなくて良い」というものも出てくることはあるので、「やる・やらない」の判断はちゃんと行ないました。

例をあげると、「席が遠い」という本当につぶやきのようなものが出てきたのですが、単純に席を近くしようとなりました。
そうすることで雑談や相談をしやすい環境になり、業務効率が上がったというGOODが次の振り返りで出たりしました。

また、レビューくんを作ることになったのと、やることを毎朝リマインドすることになったのも、この改善くんのおかげです！

## さいごに
Botたちはチーム内で運用していたのですが、レビューくんが出世して今は開発チーム全体で運用しています:clap:

元からSlackBotやGASは、何か作ってみたいと思って勉強してたのですが、実際に勉強した内容をアウトプットし、現場で使ってもらえたことがめちゃくちゃ嬉しかったです！

__これからもBot作りに没頭します！！__