[管理者向け] Power Platform CoE スタータキット スターターガイド（コア編）

前回の管理者向けガバナンスでも触れましたが、 Power Platform の全体管理で使う「 CoE スターターキット」の説明です。
このツールは Power Platform 管理のための便利ツール集なのですが、以下の二点で結構難しかったりします。
 
 - 機能が結構ある。そして毎月更新され増えたり（減ったり）している
 - インストール（導入）方法が良くわからない

ここでは、特に導入方法（具体的な作業手順）について触れています。

# 前提知識
CoEスターターキットを導入しよう！の前に以下をご確認ください。
## CoE ってなに？
Center of Excellence の略で「組織を横断する取り組み」「ノウハウや人材を中央に集約する」といった意味合いがあります。Power Platformの世界で言えば、市民開発者どうしの横のつながりや、それぞれの環境にあるアプリやフローといったリソースを中央で集約管理するといったアクションのことになります。
これを実現するためのツールが CoE スターターキットということになります。

## CoE 「スターター」キットです

CoEスターターキットはCoEを実現するための最初のステップです。CoEスターターキットでPower Platformの管理(GSC)が完結するものではありません。スターターキットによって作られた Dataverse にアクセスするようなアプリフローを作ってもよいですし、新規で必要な機能を実現するアプリフローを作ってもよいでしょう。CoEスターターキットが組織の要件をすべて満たす機能を有していることは稀です。

## CoE スターターキットは必要か？

Power Platform の管理には「管理センター」「管理コネクタ」「PowerShell」が利用できます。また「監査ログ」でアプリの起動や Dataverse の変更履歴などを追うことがある程度できます。
つまり、Power Platformの利用状況レポートが欲しい、環境に作成されたアプリの一覧を日時CSVに出力したい、といったように要望がそんなに多くなく複雑でない場合はCoEスターターキットは不要です。逆に以下に示すツールを複数利用したいとか、複雑な処理をしたい（Dataverse For Teams 環境が作成されたら作成者にメッセージを飛ばす等）といった場合は導入したほうがよいでしょう。

また、市民開発者にアプリケーションライフサイクルを任せて、ある程度自由に作らせたほうが利用促進につながることは多いです。

## 必要なライセンス

CoEスターターキット自体はオープンソースのため無償です。しかし、 Power Apps の有償ライセンスが必要な機能を利用しているため少しライセンスが必要となります。

 - モデル駆動型アプリ(Power Platform Admin Center)を利用しています。
 - 環境の情報を Dataverse に格納しています。
 - 監査ログの情報をカスタムコネクタで収集しています。

基本的な運用方針としては、管理者数名に有償ライセンスを付与し、 CoE 用運用環境(Production)を作成し、そこに CoE スターターキットの各ソリューションをインポートするという形になります。

お試しで使ってみたい場合は「開発者プラン」を利用するとよいでしょう。また、 Dataverse for Teams 版もリリースされています。こちらであれば有償ライセンスは不要ですが、上記のモデル駆動型アプリと監査ログ収集機能が利用できません。（Power Platform Admin Center はキャンバスアプリ版が用意されています）

# 導入手順

上記を理解したら導入していきます。

## CoE スターターキットをダウンロードする

CoE スターターキットは GitHub で公開されています。最新版をダウンロードするためには右側にある Releases をクリックします。本記事執筆段階では 2022年1月版があります。
https://github.com/microsoft/coe-starter-kit
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/b2adeeef-d20f-0dc2-b9df-5c3ff0fbe8d3.png)

いくつかファイルがありますが、 CoEStarterKit.zip をダウンロードすれば必要なファイルは一式入手できます。このファイルを1回解凍しましょう。中身にさらに zip ファイルがありますがそれは解凍不要です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/746d4b94-3adc-15c0-900a-9ccb794e03e2.png)

## Dataverse のある環境を用意する

上記の通り Dataverse for Teams 環境も利用できますが、ここでは開発者プランまたは運用環境を利用します。
※開発者プランの環境を作りたい場合は、管理者環境でサインインしてから以下にアクセスしてください
https://powerapps.microsoft.com/ja-jp/developerplan/

## 承認ワークフローを作る

何で？と思うかもしれませんが、承認ワークフローを作成すると、環境に Dataverse が展開され必要なテーブルが作成されるためです。また、 CoE スターターキットでは承認機能を利用しているため、この作業を実施していないと展開の途中でエラーが出ます。
作るワークフローは何でもOKです。インスタントフローで自分に承認を飛ばすのが一番簡単でしょう。
![qiita20220201-03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/45558e8b-5147-fcd8-cbbf-0061dcf7019a.png)

フローチェッカーに警告が出ますが、環境が正しいことを確認して、そのままテスト実行しましょう。

## Core Component のインポート

CoE スターターキットの中心となるコアコンポーネントをインポート（インストール）します。
①まず、管理者のアカウントで Power Apps ホーム画面を表示します（管理者画面ではありません！）。環境を選択します。
②左ペインのソリューションを選択し、[インポート]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/ece3e3c4-eb91-7abe-3653-b5d130398ffc.png)

CoEStarterKit.zip に含まれている CenterofExcellenceCoreComponents_*_**_*_managed.zip を選択します（*_**_* にはバージョンが入ります）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/3d3e4280-7099-29b1-b9dc-53de04215a4d.png)

[開く]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/c1662f46-bc5a-4584-7c2d-73dcf2d5e9cf.png)
[次へ]をクリックします。以下のような画面になりますのでもう一度、[次へ]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/f8ba43d7-d6a2-96a1-f7d1-da0cf50dd83d.png)

すると以下のような画面がでます。ここが正念場その１になりまして、[接続の選択]と書いてあるドロップダウンをすべて自分のアカウント（管理者アカウント）に変える作業が必要になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/03fb08bd-b552-ee9e-70d6-4e865c841f45.png)

まずは一番上にある CoE Core -Dataverse Legacy のドロップダウンをクリックし、「新しい接続」をクリックします。
すると新しいタブが起動し以下のような画面になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/72530515-df67-16b9-4236-83aacf994d9b.png)
[作成]をクリックします。するとサインインウィンドウが出てきます（画面の裏側に出てくる可能性があるため、もし出てこなかった場合、画面下のタスクバーから確認してみてください）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/1a7fe32e-d9d7-6924-263c-d88e6aa20eb3.png)
サインインに成功すると以下のように接続が作成されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/d47cb9a1-8042-cef5-cf3e-442f0129fab5.png)
ここで元の画面（インポート作業をしていたタブ）に戻ると以下のようなダイアログが出ているので[更新]を押します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/63ed3888-b1e5-b28e-fc04-90086005891c.png)
これで CoE Core -Dataverse Legacy の接続が管理者アカウントのものに変更されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/f9c7b65a-d64b-5219-e1cf-450cf3ade478.png)

これをすべての接続に対して行います…大変ですが…。なお、管理コネクタや Dataverse など１回の作業で複数の接続に対応するものも中にはあります。その場合、新規に作成する必要はありません。その他注意事項は以下です。
 - 「認証の種類」を聞かれたら「ファーストパーティ」を選びます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/d6113431-2162-42c5-545f-09f16f321d74.png)
 - HTTP Azure AD (Azure AD を使用した HTTP )コネクタの場合、入力項目はともに「https://graph.microsoft.com 」とします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/6a0f8d78-0e1f-9116-588e-9b10a564f283.png)

全ての接続が設定し終わると[次へ]が有効になりますのでクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/5174ce1a-3dab-085a-1eb5-fa3f8af8825d.png)

環境変数の入力画面が出てきますが、これだとよくわからないと思いますので、何も入力せずに[インポート]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/7f137349-29f5-0363-6436-713469fc646a.png)

しばらく待ちましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/6b8f6f3b-f03d-83a5-0b01-8a1c33add52a.png)

完了すると以下のようにメッセージ（通知：Notify）が出ます。「Center of Excellence - Core Components」というソリューションが表示されますのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/e82cc1e7-f665-6500-d238-a20f49c8240f.png)

無事にインストールできたことが確認出来たら「←ソリューションに戻る」をクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/8a0593b9-99cc-8f80-e8a0-8392a61671bf.png)

すると「環境変数を更新しなさい」というメッセージが出てくると思いますのでクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/18418233-a9e7-40d9-057c-143c18e6fda3.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/3bd3fc41-ce41-6633-8422-305b1b5637e0.png)


環境変数は CoE スターターキットのバージョンによってかなり大きく変化します。執筆段階でわかる内容だけ記載しておきます。

|環境変数名  |設定例  |内容  |
|---|---|---|
|PowerApp Player Environment Variable  |https://apps.powerapps.com/ |アプリ実行用のURLですが日本では左記の通り入力します。  |
|Approval admin  |admins@contoso.onmicrosoft.com  |管理者の配布グループメールアドレスを入力します。  |
|Power Platform Maker Group ID  |ba66c667-f7df-4619-a9bc-d79637eef72d  |アプリ作成者の所属しているグループですが新規で365グループを作成してそのIDを入力します。（※１）  |
|Admin eMail  | admin@contoso.onmicrosoft.com |管理者のメールアドレスを入力します。  |
|Developer Compliance Center URL  |（あとで）  |Compliance Componentのアプリですが、まだ導入していないので空白にします。  |
|Community URL  |https://web.yammer.com/  |Power Platform 市民開発者コミュニティのURLですがYammerかTeams,SPOがよいでしょう |
|Tenant ID |46dda64d-feb7-495c-be0e-5259f20d484e  |テナントIDを入力します（※１）  |
|Command Center - Application Client ID  |（あとで）  | Command CenterのAzure AppIDです。あとで設定します。 |
|Command Center - Client Secret  |（あとで）  | Command Center の Application Secret です。あとで設定します。  |
|Power Automate Environment Variable  |https://japan.flow.microsoft.com/manage/environments/  |Power Automate 環境のURLです。日本では左記です。 |
|Environment Request Admin App Url  |（あとで）  |当該アプリのURLです。後で設定します。  |
|PowerApp Maker Environment Variable  |https://make.powerapps.com/  |アプリ作成用のURLですが以下のように設定します。  |
|

残り4個になりました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/6f8dbf0f-563f-4c69-0ff8-aad4a78a761f.png)

[Center of Excellence - Core Component]を選択し、[アプリ]から[Admin - Environment Request]を選択し[再生]をクリックします。アプリが実行されますが、表示される URL をコピーして上記の Environment Request Admin App Url 環境変数に設定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/d7dd0b8f-9930-949a-e931-0704d16506f0.png)

これで残り 3 個になります。

## 子フローの実行可能ユーザーを指定する

ソリューションをインポートした段階では Power Automate フローはすべて停止しています。これを動作させることで CoE スターターキットは情報収集等が可能になります。
まずは子フローを実行させます。

ソリューションから [Center of Excellence - Core Component]を選択し、[クラウドフロー]を選択します。
その中から、[HELPER - CloudFlowOperations]を探し出しクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/ce2beef9-4772-077a-6a87-838c70724f8a.png)
実行のみのユーザーという項目にある[編集]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/22af566f-a202-7830-e992-d17b272330e1.png)

[使用する接続]にある各ドロップダウンをすべて自分「この接続(admin@contoso.onmicrosoft.com)を使用する」に変更します。
[保存]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/87d05e76-6196-49e6-c31f-3f37bdc301f8.png)
そのまま[オンにする]をクリックしましょう。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/dd6f295b-63ce-68a2-3cd0-cbf3b3ab74ea.png)
表示が[オフにする]に変われば成功です。[クラウドフロー]をクリックすると一つ前の画面に戻ります。
同じ操作を以下の子フローに対して実行します。（実行のみのユーザーの設定が必要ないもの、すでに設定済みもあります。それらはオンにするだけで大丈夫です）
 - HELPER - Send Email
 - HELPER - Maker Check
 - HELPER - CanvasAppOperations
 - HELPER - ObjectOperations
 - CLEANUP HELPER Checked Deleted (Canvas App)
 - CLEANUP HELPER Checked Deleted (Cloud Flow)
 - CLEANUP HELPER Checked Deleted (Custom Connectors)
 - CLEANUP HELPER Checked Deleted (Model Driven App)
 - CLEANUP HELPER Checked Deleted (PVA)
 - CLEANUP HELPER Power Apps User Shared With

上記手順を実行したフローはオンになっており、それ以外はオフになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/7f6b3bba-1609-fb13-4a9c-c04bff62679e.png)

## その他のフローをオンにする
上記ソリューションのクラウドフロー一覧から [CLEANUP - Admin | Sync Template v3(Checked delete)]を三点リーダを選択し、[有効にする]をクリックします。（似たような名前のフローが複数あるので注意）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2095776/8260d91e-de56-0755-dd78-c4dc2476d885.png)
しばらくすると右側の表示がオフから[オン]に変わります。

 -  「Admin | Sync Template v3」を有効にします。
 -  以下残りの「 Admin | Sync Template ～～～」をすべて有効にします。
 -  「CLEANUP - Admins |～～～～」をすべて有効にします。
 -  「Admin | Add Maker to Group」「Admin | Capacity Alerts」「Admin | Excuse Support Evnts from Governance Flows」を有効にします。
 -  App Catalog ～～、DLP Editor～～、DLP Request、Env Request～をすべて有効にします。(child)と書かれているものは先に有効にします。


※ Admin | Compliance ~~~~~　というフローは Compliance Component ソリューションをインポートした後で有効にします。
※ Core Componentの新機能であるCommand Center Appについては別途触れます。その際にCommand Center Appフローは有効にします。
※エラーが出たフローがある場合は、一旦それ以外のフローを有効にして次に進みます。あとで再度有効をお試しください。

ひとまず、ここまででコアコンポーネントの導入が完了しました。しばらく待ってから各アプリを実行し動作を確認してみてください。

## CoE 関連記事：今後の予定

 - ガバナンス（コンプライアンス）コンポーネントと監査コンポーネント
 - Command Center App
 - 各コンポーネント（アプリ）の説明…は長くなりそうなのでいくつかピックアップ紹介