【Dataverse】PowerAutomate・PowerAppsが使う容量について

　PowerAutomateやPowerAppsは市民開発のできるサービスとして社内需要がふつふつと高まっているのを感じますが、ある日突然管理者宛てに「Dataverse容量が残り少ないよ！」という通知が来てびっくり。
　よくよく調べてみると、[Power Automate for desktop が Dataverse 容量を勝手に消費する話](https://zenn.dev/ymasaoka/articles/how-pa-for-desktop-consumes-dataverse-capacity "Power Automate for desktop が Dataverse 容量を勝手に消費する話")（※外部リンク）の記事にもまとめられていますが、PowerAutomate DesktopがDataverse容量を食うことが発覚しました。なんてこった、無料じゃないのか。これは困りました。

　Dataverse容量は追加購入もできますが、とにかく高い。今ある容量を有効活用したいものです。となると現状把握や整理をしたい訳ですが、管理者としてはそもそもPowerAutomateやPowerAppsの何がDataverse容量を食うのか気になりますよね。
　Dataverse容量については[Power Platform Dataverseの容量について](https://qiita.com/skuramoto/items/844bd3e75cba8e0a37d5 "Power Platform Dataverseの容量について")の記事にもまとめていただいていますが、本記事ではPowerAutomateとPowerAppsの何がDataverse領域を消費するのか、分かった範囲でまとめようと思います。


 # PowerAutomate
　PowerAutomateはクラウドフローかデスクトップフロー（PowerAutomate Desktop）かで異なります。…実際はもっと細分化されますがややこしいのでいったんこの二つで区切ります。
　共通点としてはフローのアクション数が多い程、容量を食うことです。当たり前っちゃ当たり前ですね。

### クラウドフロー
　クラウドフローについてはソリューション内外か、で異なります。嘘です。もっと細かいです。

* ソリューション内
　ソリューション内のフローはDataverse領域を使います。

* ソリューション外
　ソリューション外のフローはAzure上に保存されます。

* 承認フロー
　フローに「承認」が含まれていた場合はソリューション外であっても承認に関するデータはDataverse領域に保存されるようです。なんてややこしい。
　しかもこれって承認の申請が回れば回るほどDataverse領域を食っていくってことですよね。恐ろしや。

* 実行履歴
　一方でソリューションの内外を問わずフローの実行履歴についてはAzure上へ保存されるようです。

 　Azure上のデータに関しては下記のPowerAppsも同様ですが、我々が触れるような領域では無いようです。これに関してはこちらで容量制限や費用を心配する必要が無いという点では嬉しいですね。


### デスクトップフロー
　デスクトップフローについては残念ながらDataverse領域を使用します。最初に紹介した記事の通りですね。
 　ただし、フローの実行履歴については有償か無償かで異なります。

* プレミアムライセンスを付与したユーザーが作ったフローの履歴
　Dattaverseに保存されます。つまり実行すればするほどDataverse領域を圧迫していきます。恐ろしい。
* 無償版で作ったフローの履歴
　こちらはPCのローカルに保存されるようなのでDataverse領域は消費しません。


 # PowerApps
 　PowerAppsはキャンバスアプリかモデル駆動型アプリかで異なります。
  
### キャンバスアプリ
　キャンバスアプリの場合はソリューション内のアプリで無ければアプリ自体や実行履歴も含めてDataverse領域には保存されないようです。
 　ではどこにいくのか、というとAzureの領域、しかも我々には触れない領域らしいです。つまるところ、現状は容量制限も無いし課金にも関わらないから気にしなくて良いということです。
  これは嬉しい（元々PowerPlatformの無償ライセンスにはこういう感じを期待していたのですが…）。

　ソリューション内のアプリについてはDataverse領域に保存されます。


### モデル駆動型アプリ
　モデル駆動型の場合は実行の履歴なども併せてDataverse領域に保存されるようです。
　アプリの各パーツでそれぞれどの程度容量を食うか、といった情報は残念ながらありませんが、シンプルにパーツ量の多さで考え得といいかもしれませんね。またログも蓄積されていくため実行頻度の高いアプリだとその点でも容量を食いそうです。


# アプリやフローの中でFormsやSharePointを使っているんだけど…
　Formsに入力したり、PowerAppsをインターフェースとしてSharePointのリストに書き込みをしたり、といったアクションをトリガーにPowerAutomateで承認フローなんかをまわす…なんてシナリオもありますよね。
　こちらについては、FormsやSharePointに書き込んだ内容はそれぞれの領域に保存されるので安心して使えます。



# ソリューションについて　（補足）
　上記にちょくちょく出てくる「ソリューション」、一体何なのか。実のところ私もちゃんと活用したことが無いのでよく分かっていないのですが、簡単な解釈ではアプリやフローなどをひとまとめのセットにした感じのようです。
　ソリューションについては[Power Appsのソリューションとは](https://qiita.com/skuramoto/items/bb053bdc8b12b771c6e4 "Power Appsのソリューションとは")の記事で分かりやすく解説いただいています。[Microsoftの公開情報](https://learn.microsoft.com/ja-jp/power-platform/alm/solution-concepts-alm "ソリューションの概念")（※外部リンク）をご参照いただくのも良いかと。


 # PowerBI （オマケ）
　PowerPlatformの一つとしてPowerBIについても調べてみました。
　が、PowerBIでは基本的にはPowerBIのリソースを使うためDaraverse容量を使うことはないようです。安心ですね。
　Dataverse領域を使用するのは、レポートのデータソースをDataverseとして意図的に指定した場合のみのようです。



 # まとめ
　いざ調べてみるとかなりややこしかったですね。
　まとめとして、Dataverse容量を消費するのは以下のようです。

 * **ソリューション内**のクラウドフロー自体
 * 承認フローの承認の情報（ソリューション内外問わず）
 * デスクトップフロー自体
 * プレミアムライセンスユーザーが作成したデスクトップフローの実行履歴
 * **ソリューション内**のキャンバスアプリ
 * モデル駆動型アプリ
 * データベースをDataverseとして指定した場合のPowerBIレポート

 PowerPlatformは本当に、本当に、ややこしいですね。
 PowerAutomate、PowerApps、PowerBI以外のPowerPlatformについては調べていませんので、あしからず。

何を管理すべきか理解して、限られた容量を上手く活用したいですね。