VS Code の拡張機能、Teams Toolkit を使ってマイクロソフト Teams のアプリを開発しよう

みなさん、いかがお過ごしでしょうか👋

前回の Microsoft Teams 開発者プラットフォームに関連する記事では、[Tab](https://qiita.com/girlie_mac/items/97fa81e67ad6ba0f6f35) と [Bot](https://qiita.com/girlie_mac/items/18cb83a021f3412317c6)、そして[メッセージ拡張機能](https://qiita.com/girlie_mac/items/646a5bfeeb7bd5da73c9)といった機能を構築する方法を紹介しました。それらのチュートリアルでは Teams アプリ機能の種類や概念についてに焦点をあてるために App Studio を使用し、手動で最小限のローカル環境のみをセットアップする方法をとりました。

今回のチュートリアルでは、最近リリースされた開発者ツールを使っての開発方法を紹介したいと思います。
![toolkit-cover-1000x420.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/80b5acd5-8853-2244-dded-04c7b91c3d06.png)
この VS Code 用の [**Teams Toolkit** (プレビュー版)](https://marketplace.visualstudio.com/items?itemName=TeamsDevApp.ms-teams-vscode-extension&WT.mc_id=m365-35909-timura)を使うと複雑な Teams アプリを構築するのに必要な、統合されたアイデンティティ、クラウド ストレージへのアクセス、[Microsoft Graph](https://docs.microsoft.com/en-us/graph/?WT.mc_id=m365-35909-timura) からのデータ取得、および Azure および M365 の他のサービスを使用することが以前よりラクにできるようになります。

さて、開始する前にまず必要な作業環境の準備ができているかチェックしましょう。

## 📓 始める前に

まず、チーム クライアントでカスタム アプリを「サイドロード」できるかどうかを確認します。開始する前に[**カスタム Teams アプリを有効にする**をオンにし、カスタム アプリのアップロードを有効](https://docs.microsoft.com/en-us/microsoftteams/platform/concepts/build-and-test/prepare-your-o365-tenant#enable-custom-teams-apps-and-turn-on-custom-app-uploading/?WT.mc_id=m365-36909-timura)にします。

または、無料の Microsoft [**365 開発者プログラム**](https://developer.microsoft.com/en-us/microsoft-365/dev-program/?WT.mc_id=m365-35909-timura)にサインアップして、サンプル データ パックが付属された開発者テナントのサンドボックスを取得してください。

そして最新バージョンの [Visual Studio Code](https://code.visualstudio.com/download) を入手してください。(以前のバージョンでは、ツールキットでは動作しない場合があります)。

## 🖥 Teams Toolkit のインストール

まず、VS Code を起動し、Teams アプリの開発に役立つ拡張機能をインストールしていきましょう。

左側のアクティビティバーの**拡張機能**アイコンを選択し、**Microsoft Teams ツールキット**をインストールします。2 つの異なるバージョンのチーム、ツールキットが表示される場合は、このチュートリアルで使う「プレビュー」バージョン 2.x を選択してください。
![vscode-teams-toolkit2-install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/8e8207cd-c941-35cc-7699-45c74a33a924.png)

## 🔧 オプションツール

Teams ツールキット拡張機能は、必要に応じて以下のツールが自動的にインストールされます。ただし、Linux (WSL を含む) を使用する場合は、次のツールを自分でインストールしてから使用する必要があります。

- [Azure Functions コア ツール](https://docs.microsoft.com/en-us/azure/azure-functions/functions-run-local/?WT.mc_id=m365-35909-timura)
- [ngrok](https://ngrok.com/download)

## 🧰 ツールキットで新規プロジェクトの作成をする

**Microsoft Teams** 左側のアクティビティバーのアイコンを選択し　**Create New Project** をクリックし新しいプロジェクトの作成を開始します。そしてポップアップされるメニューから、**Create a new Teams app** を選択します。
![vscode-teams-toolkit2-new-project.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/2e1013e3-b97e-5acb-82ba-fab3379a0674.png)

**Select capabilities** セクションで機能を選択します。このチュートリアルでは、**Bot** のみを選択して Tab を選択解除し、**OK**を選択します。
![vscode-teams-toolkit2-bot.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/efb44cf0-d696-d8bc-a4ca-5cc3e02e967c.png)

**Bot registration** セクションで、**Create a new bot registration** を選択し、新規ボットの登録をします。
![vscode-teams-toolkit2-bot-registration.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/a629b903-17d2-cbc7-d9b5-f68999eacd00.png)

**Programming Language** セクションで、**JavaScript** を選択します。
![vscode-teams-toolkit2-javascript.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/366f7ec7-a904-1972-d9ac-ec179180aa78.png)

次にワークスペースを選択します。プロジェクトのワークスペース内に新しいフォルダが作成されます。
![vscode-teams-toolkit2-workspace.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/0514a54f-5be5-5638-d8a6-75b3e2474b16.png)

アプリの名前を入力してください。
![vscode-teams-toolkit2-name.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/dec6bb77-ed21-fb07-d0e4-b0dcaeb06888.png)
設定にはしばらく時間がかかりますのでしばらく待ちましょう。

このプロセスでツールキットが自動的に次のことをしています：

- M365 テナント内での Azure アクティブ ディレクトリ アプリケーションの登録
- アプリ マニフェストの作成
- アプリをサポートするために Azure Functions コア ツールを使用して API をローカルで実行
- ローカルホストからチームクライアントへのセキュアなトンネルを提供する ngrok のインストールと設定

## 🤖 サンプルボットをローカルで実行する

プロジェクトを設定したら、テンプレート アプリがどのようなものか見ていきましょう。
![vscode-teams-toolkit2-code.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/e0975d57-3038-3d83-6588-9fab56a0c9f6.png)

まず詳しく見ていく前に、先にこのサンプル アプリをビルドしてローカルで実行しましょう。

キーボードの **F5** キーを押してデバッグ モードを有効にします。

もしくは、このようにサイドメニューからデバッグアイコンをクリックします。
![vscode-teams-toolkit2-run.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/604a031c-e172-8f48-869a-32fa9cabdd92.png)
アプリが初めてビルドされる際には、すべての依存関係がダウンロードされますので完了までに数分かかる場合があります。

完了すると、チームの Web クライアントが自動的にブラウザー ウィンドウで開かれます。**Add** をクリックしてローカルにインストールします。
![vscode-teams-toolkit2-app-install.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/6cb7a11b-3674-dcc9-79b6-12ba3e3c5eb9.png)

アプリをインストールしたら、 Bot を試してみましょう。
![vscode-teams-toolkit2-app-running.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/bd3b76ee-2e2e-b525-8daa-e2386790bbc3.png)

## 🔏 ユーザー権限の付与

この Bot 用の show コマンドを試してみると、アプリが次のように情報を表示する許可を求めることがわかります。
![vscode-teams-toolkit2-app-graph.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/66e1a049-0ca5-af50-647c-05e64c8788c5.png)

**続行** (Continue) をクリックすると、認証画面が開きます。
![vscode-teams-toolkit2-app-graph-auth.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/663749/efa6a998-1641-5b63-63b3-9d8cad61dc54.png)


つまり、アプリ (およびサードパーティ製アプリ) は、ユーザーの同意なしではユーザーの情報を自動的に取得することはできないのです。

---

[次のチュートリアル](https://qiita.com/girlie_mac/items/3c5a87ccbe3550c634cc)では、ユーザー情報にアクセスする Microsoft Graph について説明し、チームの実装方法について説明しますので、ご期待👋 


🇺🇸 *この記事は先に英語で書いたものを和訳しています。原文（英語）で読みたいという方は  [dev.to](https://dev.to/azure/using-vs-code-toolkit-for-teams-app-development-2o0g) のリンクからどうぞ！*