Microsoft Teams と GitHub の連携～プルリクエストを例に～

みなさま、こんにちは！
日本マイクロソフトのカスタマーサクセスマネージャーの岩田です。
今回は、Github for Teamsを用いた、TeamsとGitHubの連携についてお話しします。

### 開発チームのコミュニケーションの課題
多くの開発チームでは、プロジェクト全般のコミュニケーションはTeamsで行われる一方、プルリクエストのレビューやissueの作成などはGitHubで行われており、2つのプラットホームでコミュニケーションが分断されています。
過去の履歴をさかのぼる時、このようなコミュニケーションの分断は、プロジェクト管理上好ましいことではありません。

### GitHub for Teamsとは
GitHub for Teamsは、Microsoft Teamsにインストールして利用するボット型のWebアプリケーションです。
Teamsにインストールし、対象リポジトリを設定することで、TeamsとGitHubのアカウントの紐づけが行われ、GitHubで行われている最新情報が、Teamsのチャネルに通知されます。
Github上で行われるコミュニケーションログをTeamsに取り込むことで、プロジェクト情報をTeamsで一元管理することが可能になります。
![TeamsFGitHub.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/6808c22a-4b10-56fe-22be-22000179db1e.jpeg)

### GitHub for Teams のインストールと設定
ここからは、GitHub for Teamsのインストールと設定を見ていきましょう。
Teamsを起動し、アプリを検索して、開発チームで利用しているTeamsのチームにアプリを追加してください。

1. Teamsのメニュー左下の「アプリ」（もしくは「ストア」）から"GitHub"と検索しGitHubをクリック
![TFGInstall1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/e8600d11-52f9-dbaf-5d82-982043d09f3c.jpeg)

2. 開くボタン右横の▼をクリックして、該当チームにアプリを追加
![TFGInstall2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/a9cfa0ac-2007-e980-71a6-6b1b0cd844f0.jpeg)



3. インストールしたチームのチャネルに、ボットからメッセージが届いている。ボットに返信する形で、`@github subscribe <リポジトリ名>`と入力する。GitHub側にもアプリ（コネクタのようなもの）をインストールするようメッセージが返されるので、「Install App」ボタンを押す
![TFGInstall3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/3964ce3b-aa9b-1424-971f-8a7a6d6ed91b.jpeg)

4. GitHubのアカウントでサインインし、紐づけるリポジトリを選択。すべてのリポジトリと紐づけることも可能
![TFGInstall4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/a6c672bf-01a8-a6be-dc5a-d0b2bdb9fe94.jpeg)

5. Teams側に戻ると、紐づけが完了した旨のチャットが入っていることを確認
![TFGInstall5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/ae4131e5-9b3c-0489-863f-91efa019267e.jpeg)

### 【備考】GitHub for Teams の呼び出し方
冒頭お話したように、GitHub for Teamsはボットです。Teamsでボットを呼び出す場合は、チャット入力欄に`@github`と入力して呼び出してください。
利用できるコマンドリストが一覧表示されます。
![command.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/8788c936-1a85-bf9f-dd0f-091e0392bc84.jpeg)


### 動作確認
それでは、動作確認をしてみましょう。
developブランチからfeatureブランチを切り、プルリクエストを作成。レビューアーのレビュー後、developブランチにマージするという流れで動作確認を行います。

GitHub側でプルリクエストを作成してください。
![pullreq1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/60a0dbd1-6740-d5f1-e13a-4e483223d86f.jpeg)

Teams側の画面です。ボットからプルリクエストがOpenになったことが通知されます。
レビューアーを含む開発チームメンバーは、プルリクエストを含むGitHubの最新ステータスの通知を、Teamsで受け取ることができます。
![pullreq2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/5f561b05-2c16-2b82-e42c-c6ec24811c57.jpeg)

GitHubの画面です。
レビューアーはプルリクエストに対してコメントし、最終的にApproveをしました。
レビュー依頼者（もしくはレビューアー）はマージして、プルリクエストは終了します。
![pullreq3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/edec1a5d-60ff-2a0d-a85f-4aca7e5b3d93.jpeg)

Teamsの画面です。
プルリクエストからマージするまでの一連のコメントが、スレッドとして保存されているのが分かります。
![pullreq4.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/f33c42da-9ba5-53a6-bc1b-811cb394d435.jpeg)

ステータスも、OpenからMergedに変わりました。
![pullreq5.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1552155/5d316ce0-f06e-e658-cd0b-95f408e07c4c.jpeg)

### GitHub for Teams 導入のメリット
いかがでしたでしょうか。
今回はプルリクエストを例にとって説明しましたが、最後に、GitHub for Teams 導入のメリットをまとめます。

- Github上で行われるコミュニケーションログをTeamsに取り込むことで、プロジェクト情報をTeamsで一元管理することが可能になる
- プルリクエスト等の通知がTeams側に届くため、メールでプルリクエストを送るといったプロジェクト内でのメールが不要に

ご活用いただければ幸いです。