PowerApps モデル駆動型アプリとプラン1と2の違い

# 記事の概要
PowerAppsの価格に書かれているプラン1とプラン2の違いが分かりづらいなと思ったのでそれぞれ考察しました。

https://dinok.info/2019/01/19/powerapps-license/
自分のブログでもライセンスの違いについて調べた部分を書いていますが、
特にプラン2の欄に書かれている内容が難しいので、詳しく見ていきます。
ここに書いてあるということは、モデル駆動型アプリの推しの部分だと思います。

# PowerApps プラン1 と プラン2 の違い
PowerAppsの価格のページには以下のようにあります。
大きくはモデル駆動型アプリを作成できることです。
ただいろいろ書いてあって自分は初め見たときにすぐ理解できませんでした。。
https://powerapps.microsoft.com/ja-jp/pricing/
![image.png](https://qiita-image-store.s3.amazonaws.com/0/190486/23721a2b-5ed6-a587-25a9-0cc6210d9836.png)


## プラン2の部分に書かれている内容
一つずつ考えていきます。

### PowerApps プラン 1 に付属するものすべて
プラン1では、PowerAppsのキャンバスアプリが作成できるということが説明されています。
for OfficeではOffice365のアプリを元にしたアプリのみ作成できるようです。

「Premiumコネクタを使用して・・・」というのはTwitterやDropBox、GoogleカレンダーなどのG Suiteなど色々なサービスと接続できるということです。
コネクタ一覧は下記にあります。
https://docs.microsoft.com/ja-jp/connectors/

「Common Data Service for Apps で構築されたキャンバス アプリでサーバー側検証ロジックおよびビジネス ルールを使用する」
これに関しては、該当する機能がわかりませんでした。
もちろんPowerAppsのキャンバスアプリにチェックロジックを入れるということはできるんですが、
サーバーサイドのチェックロジックではないと思うので。。。
プラン1でもサーバーサイドのチェックロジックが動かせれば、より業務アプリケーションぽくなるとは思うのですが。

### モデル駆動型アプリを作成および実行する
詳細はこちらのリンクをクリックすると、下記のページに飛びます。
スクリーンショットの左上にDynamics365という文字が見えますが、これがPowerAppsのモデル駆動型アプリです。
これが作成できるということです。
https://docs.microsoft.com/ja-jp/powerapps/maker/model-driven-apps/model-driven-app-overview
![image.png](https://qiita-image-store.s3.amazonaws.com/0/190486/90d3581e-cad8-d45a-19ca-220ab9c42ea1.png)

### ビジネス プロセス フローを使用して多段階のプロセスをモデル化する
Dynamics365の機能の一つです。業務プロセスフローと記載されることもあります。
画面の各項目を入力漏れなくユーザーに入力してもらうよう、操作を補助します。
下は新しく作ったエンティティに業務プロセスフローを設定してみた図です。
問い合わせ種別に「商品の使い方」を設定すると次のステージに進めることができ、
次のステージではさらに２項目の入力を求めています。
このようにステージごとに入力が必要な項目を設定することで、順に入力していくと項目が埋まる様になっています。
条件分岐も設定できます。
（例えば問い合わせ種別に「苦情」を設定すると、次のステージで別項目の入力が要求される）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/190486/b083748e-b1c4-eadf-d04f-e417d12a8556.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/190486/92fca4c9-2b22-4f3f-4a0f-f4429b76eb74.png)


### Common Data Service for Apps のインスタンスを作成、管理する
DocsにCDSインスタンスの説明があります。
~~これを見ると、PowerAppsで作成した「環境」はDynamics365管理センターで管理できますとのことなので、
Dynamics365のインスタンスと同様に管理できる、ということなのでしょうか。。~~
コメントでご指摘頂いているとおり、PowerAppsのプラン2で「環境」が新たに作成できるようになります。
「既定」とあるものの他に作成でき、下記の記事に記載のあるようにアプリ等の管理を環境ごとにできるようです。
https://docs.microsoft.com/ja-jp/powerapps/administrator/create-environment

Dynamics365の管理センターで管理できるのは、PowerAppsの「環境」にひとつ作成できる、Common Data Service（DBのようなもの）です。
下記の記事で確認できるように、Dynamics365の管理センターにもCommon Data Serviceと表示されます。
Dynamics365の管理センターではインスタンスのコピーなどが実行できます。
https://docs.microsoft.com/ja-jp/dynamics365/customer-engagement/admin/common-data-service-instances

CDSインスタンス作成については、まだ十分に調べられていませんが
Dynamics365と同様であれば、インスタンスを増やすためにはお金を払わないといけないはずなので
PowerAppsについても同様ではないかな・・・と推測しています。

あと、試用環境でPowerAppsのモデル駆動型アプリを作ると、Dynamics365のストレージを使用しているようです。
本番でも同じであれば、これに気づかないとストレージを圧迫してしまうかもしれないですね。

### コード アドインおよびリアルタイム ワークフローが含まれた Common Data Service for Apps のエンティティを使用、作成する
プラグインやワークフロー機能のことを指していると思われます。

プラグインは、.netでライブラリを組んで、サーバーサイドの処理としてアプリケーションに組み込むことができます。
Dynamics365のAPIを使ってデータを作成・更新・削除などしたりできます。

ワークフローはGUI上で、データの作成や更新などをトリガーとして、
項目の更新を行ったりまた他にデータを作ったりといった設定ができます。
例えば、問い合わせのデータを作ったら顧客データの最終コンタクト日を今日に更新するなどです。
結構複雑な動きも組めるのでこれはまた別途紹介したいと思っています。

### 環境およびユーザー ポリシーのエンタープライズ級の管理
これは、詳細を説明できるほど理解していませんが、
個人情報の保護などがDynamics365と同じレベルで、
十分企業の業務システムとして使えるレベルですよ、と言いたいのではないかと考えています。

# 最後に
なかなかモデル駆動型アプリの使用例は少ないんじゃないかなと思っています。
Common Data Serviceの機能と合わせて使えば強力になり得るのではないかと考えているので、
より理解を深めていきたいと思います。