#MSIgnite 2022 Power Platform CLI 周り (Learn Live) セッションの参考リンク集

2022 年 5月 26日、Microsoft グローバルの公式イベントの『[Microsoft Ignite 2022](https://ignite.microsoft.com/en-US/home?WT.mc_id=spatial-build-machiy&ocid=MSlearn)』で
セッション『[Learn Live: 開発者ツールを使用して Microsoft Power Platform を拡張する](https://ignite.microsoft.com/ja-JP/sessions/8705758b-7a27-4e7e-9ce1-c6b039152937?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn)』をデリバーさせていただくことになりました。

そのセッション内でたくさんのページや資料を紹介しているので、それらをこの記事にまとめました。


# 概要

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/64143df7-e2db-88a0-7092-990f6a49c057.png)

Code-first developers (コードを書く開発者) と Citizen developer (市民開発者) の方々が
協業する (work well together) ためにある、
開発者向けのツールとして
Power Platform CLI (コマンド ライン インターフェイス) を紹介します

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/5adf6d06-7996-43e8-7107-e74a3cfc8084.png)

(こちら Power Platform チームの公式 YouTube で詳しい説明が聞けます (英語) 『[Command Line Interface for Power Platform - Power CAT Live](https://www.youtube.com/watch?v=GUmn-cxSomE)』)

## 該当セッションページ

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/75919be6-f4da-d777-1157-a4f5fb239a8a.png)


https://ignite.microsoft.com/ja-JP/sessions/8705758b-7a27-4e7e-9ce1-c6b039152937?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

『[Learn Live: 開発者ツールを使用して Microsoft Power Platform を拡張する (delivered in Japanese)](https://ignite.microsoft.com/ja-JP/sessions/8705758b-7a27-4e7e-9ce1-c6b039152937?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn)』

### スピーカー (登壇者)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/2e40a31f-1b48-e394-e1e1-187061dd06ba.png)

* 山口さん ([@Gucchiy](https://twitter.com/Gucchiy))
* ちょまど ([@chomado](https://twitter.com/chomado))


## 該当 Learn モジュール

『[開発者ツールを使用して Microsoft Power Platform を拡張する](https://aka.ms/learnlive-20221012K-JP)』

チュートリアル形式なので、セッションでは (補足説明に加えて) これをランスルーしていく形になります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/d545652a-4f7c-de0d-607b-7c73bc7e2f65.png)


https://learn.microsoft.com/ja-JP/training/modules/use-developer-tools-extend/?WT.mc_id=learnlive-20221012K-JP

## M365 デベロッパーセンター

無料で開発権限のあるテナントをゲット
『[Microsoft 365 デベロッパーセンター](https://developer.microsoft.com/ja-jp/microsoft-365/dev-program/?WT.mc_id=spatial-build-machiy&ocid=MSlearn)』

https://developer.microsoft.com/ja-jp/microsoft-365/dev-program/?WT.mc_id=spatial-build-machiy&ocid=MSlearn


## Microsoft Azure 無料トライアル


https://azure.microsoft.com/ja-jp/free/?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

# セッションの流れ

1. Dataverse のデータを使った Canvas App デモ
1. Dataverse とビジネスロジック 紹介
1. ビジネスロジックを PlugIn で作る
1. PlugIn の登録
1. ソリューション～SolutionPackager～PackageDeployer
1. PCF によるコンポーネントの作成

それぞれの項目での該当ドキュメントのリンクをご案内します

## 1. Dataverse (データバース) のデータを使った Canvas App デモ


https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/data-platform-intro?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/data-platform-create-app?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

![](https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/media/data-platform-cds-intro/platform.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/35ecc213-5b4f-d1a8-0c0e-13799596bff4.png)

## 2. Dataverse とビジネスロジック 紹介

![](https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/media/data-platform-cds-create-business-rule/business-rule-field.png)

https://learn.microsoft.com/ja-jp/training/modules/get-started-with-powerapps-common-data-service/4a-use-data-cds-exercise?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/data-platform-create-business-rule?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

## 3. ビジネスロジックを PlugIn で作る

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/43ac397e-0acd-c784-383a-5a6c43f84fc5.png)


https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/tutorial-write-plug-in?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/write-plug-in?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/power-apps/developer/data-platform/tools/devtools-install?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

## 4. PlugIn の登録
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/0cbb1704-b936-9829-2876-b894cc4ced69.png)


https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/1-introduction?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/2-exercise?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

## 5. ソリューション～SolutionPackager～PackageDeployer

https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/3-solution-packager?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/2-package-deploy?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

## 6. PCF によるコンポーネントの作成

![イラスト.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/fc66d0ff-3b51-fe88-7f44-ba9e218ef0c4.png)

https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/4-exercise?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

https://learn.microsoft.com/ja-jp/training/modules/build-power-app-component/2-package-code-component?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/1dfdd23e-4f95-eae6-c1f7-dc04b25ab3be.png)

# モジュールの PowerShell スクリプトのエラーについて

『[演習 - 開発者ツールのインストールと使用](https://learn.microsoft.com/ja-jp/training/modules/use-developer-tools-extend/2-exercise)』の
PowerShell スクリプトを使用して NuGet のツールをインストールするところですが、
こちらコマンドに一部不備があり叩くとコケます。
その原因とワークアラウンドをこちらに載せます

## 原因

↓ 該当部分の例
```powershell
$prtFolder = Get-ChildItem ./Tools | Where-Object {$_.Name -match 'Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool.'}
move .\Tools\$prtFolder\tools\*.* .\Tools\PluginRegistration
```

ここの `Get-ChildItem` が フルパスを返すので
`$prtFolder` にもフルパスが入ります。

なので次の `move` コマンドのパス指定 `.\Tools\$prtFolder\tools\*.*` でコケます😢


![MicrosoftTeams-image (1).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/24609/43d90b1f-38cb-ca12-a362-1faa5bf773b0.png)

ここのコマンド群は全部そんな感じなので
ごっそり入れ替える必要があります

（モジュール author にはフィードバック済み、修正待ち）

## ワークアラウンド

パス指定をよしなにしたものがこちらです

```powershell
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$sourceNugetExe = "https://dist.nuget.org/win-x86-commandline/latest/nuget.exe"
$targetNugetExe = ".\nuget.exe"
Remove-Item .\Tools -Force -Recurse -ErrorAction Ignore
Invoke-WebRequest $sourceNugetExe -OutFile $targetNugetExe
Set-Alias nuget $targetNugetExe -Scope Global -Verbose

##
##Download Plugin Registration Tool
##
./nuget install Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool -O .\Tools
md .\Tools\PluginRegistration
$prtFolder = Get-ChildItem ./Tools -Name | Where-Object {$_ -match 'Microsoft.CrmSdk.XrmTooling.PluginRegistrationTool.'}
move .\Tools\$prtFolder\tools\*.* .\Tools\PluginRegistration
Remove-Item .\Tools\$prtFolder -Force -Recurse

##
##Download CoreTools
##
./nuget install  Microsoft.CrmSdk.CoreTools -O .\Tools
md .\Tools\CoreTools
$coreToolsFolder = Get-ChildItem ./Tools -Name | Where-Object {$_ -match 'Microsoft.CrmSdk.CoreTools.'}
move .\Tools\$coreToolsFolder\content\bin\coretools\*.* .\Tools\CoreTools
Remove-Item .\Tools\$coreToolsFolder -Force -Recurse

##
##Download Configuration Migration
##
./nuget install  Microsoft.CrmSdk.XrmTooling.ConfigurationMigration.Wpf -O .\Tools
md .\Tools\ConfigurationMigration
$configMigFolder = Get-ChildItem ./Tools -Name | Where-Object {$_ -match 'Microsoft.CrmSdk.XrmTooling.ConfigurationMigration.Wpf.'}
move .\Tools\$configMigFolder\tools\*.* .\Tools\ConfigurationMigration
Remove-Item .\Tools\$configMigFolder -Force -Recurse

##
##Download Package Deployer 
##
./nuget install  Microsoft.CrmSdk.XrmTooling.PackageDeployment.WPF -O .\Tools
md .\Tools\PackageDeployment
$pdFolder = Get-ChildItem ./Tools -Name | Where-Object {$_ -match 'Microsoft.CrmSdk.XrmTooling.PackageDeployment.Wpf.'}
move .\Tools\$pdFolder\tools\*.* .\Tools\PackageDeployment
Remove-Item .\Tools\$pdFolder -Force -Recurse

##
##Remove NuGet.exe
##
Remove-Item nuget.exe
```

# 参考


https://www.youtube.com/watch?v=GUmn-cxSomE


https://learn.microsoft.com/ja-JP/training/modules/use-developer-tools-extend/?WT.mc_id=learnlive-20221012K-JP


https://learn.microsoft.com/ja-jp/training/paths/transform-business-applications-with-fusion-development/?WT.mc_id=spatial-ignite-machiy&ocid=MSlearn