Power Appsでアプリを作成する際、「委任に関する警告」が表示されたこと、あるかもしれません。
本記事では「委任」っていったい何?という観点で解説します。Power Apps を正しく使いこなす上で、委任とデータ行の制限に対する理解は必要です。ぜひ、最後までご覧ください。
Power Apps の委任とは?
Power Appsで表示される警告マークがありますよね。モノによってはアプリの動作に影響が出るものもありますが、その中でも「委任」という表示には注意しましょう。
委任とは
Power Appsでいう委任とは、簡単に言うとデータベースの処理をデータベース側に“お願い”することです。
です。例えば、SharePoint Onlineカスタムリストから2023年分のデータを抽出する場合、以下の2通りの方法が考えられます。
- A. SharePoint Online側で2023年分のデータを検索し、抽出したデータをPower Appsが受け取る
- B. SharePoint Onlineからすべてのデータを受け取り、Power Apps側で検索し抽出する
Power Apps的にはAの方が受け取るデータ量が少ないですよね。Power Appsでは、このようにデータベース側に処理を“委任”することができます。
しかし、この処理内容が高度になるとデータベース側では処理が行えず、データベース側にお願いできない、つまり委任できないケースが発生します。 委任に関する警告は、この「委任できないケース」が発生した時に表示されます。
委任できない場合、前述Bの処理が必要になります。一旦Power Apps側で全データを受け取りPower Apps側で処理を行うため、通信データ量も処理も負荷がかかります。
【委任の種類】Dataverse、SharePoint、Excel での違い
Power Apps の委任機能は、データソースの種類によってその挙動や制限が異なります。Dataverse、SharePoint、Excel それぞれで委任がどのように機能するのか、そしてそのメリット・デメリットを比較して解説します。
Excel | Sharepoint | Dataverse for Teams | Dataverse | |
Microsoft 365のプランに含まれるか | 〇 | 〇 | 〇 | – |
操作の難易度 | 低 | 中 | 中 | 高 |
委任のサポート範囲 | かなり限定的 | 制限アリ | 一番多くの内容をサポート | |
向いている規模感 | 小規模 | 小~大規模 | 大規模 | |
利用できるアプリ | キャンバスアプリ | キャンバスアプリ | Teams内で作成するキャンバスアプリ | キャンバスアプリ、モデル駆動型アプリ |
1. Dataverse:
委任のサポート範囲が一番広い点やPowerPlatform製品との連携しやすい点を考慮すると、アプリのデータソースとして一番優れたパフォーマンスを発揮できるといえるでしょう。
- メリット: 大量のデータに対応しやすく、レスポンスが速い。既存データからのインポートが可能。モデル駆動型アプリが作成できる
- デメリット: Dataverse を使用するには、Power Platform のライセンスが必要です。
DataverseはPower Appsの有償プランが必要なので、組織によってはDataverse for Teamsの範囲でキャンバスアプリを利用したい場合もあるかもしれません。
その場合、データソースはSharePointかExcelが対象となり、機能面などを考慮した結果SharePointを選択することが多くなるでしょう。
2. SharePoint:
SharePoint リストも委任に対応していますが、Dataverse と比べると、処理できるクエリの複雑さやデータ量に制限があります。 SharePoint リストは、ファイル共有やコラボレーションを目的としたサービスであるため、大規模なデータ処理や複雑なクエリには最適化されていません。
委任が有効に機能する範囲は、リストの項目数やクエリの複雑さによって大きく変動します。 大量のデータを含むリストに対して複雑なフィルターやソート条件を使用する場合は、パフォーマンスが低下する可能性があります。
- メリット: SharePoint とのシームレスな連携、手軽なデータアクセス。
- デメリット: 委任の制限が大きく、パフォーマンスの低下やエラーが発生する可能性がある。
3. Excel:
Excel は、委任に対応していません。 Excel をデータソースとして使用する場合、アプリは常に Excel ファイル全体を読み込むため、ファイルサイズが大きいとパフォーマンスが著しく低下します。 大量のデータを含む Excel ファイルをデータソースとして使用することは避けるべきです。
- メリット: Excel ファイルを容易にデータソースとして利用できる。
- デメリット: 委任に対応していないため、大規模データには不向き。パフォーマンスが非常に低下する可能性が高い。
委任可能な関数
以下の関数が委任可能です。またデータソースによって委任をサポートする範囲が異なるため、同じ関数でも対象のデータソースと行った操作によって委任をサポートするかどうかは変わります。
- Filter,Search,LookUp
- Sort,SortByColums
- Sum,Average,Min,Max
- AddColumns,DropColumns,RenameColumns,ShowColumns
委任によるパフォーマンス向上
Power Apps の委任機能を適切に活用することで、アプリのパフォーマンスを劇的に向上させることができます。特に、Dataverse をデータソースとして使用する場合、その効果は顕著です。 。
委任によるパフォーマンス向上効果
委任を使用しない場合、アプリはデータソースからすべてのデータを読み込み、クライアント側でフィルターやソートなどの処理を実行します。データ量が膨大になると、この処理に時間がかかり、アプリのレスポンスが遅くなったり、エラーが発生したりする可能性があります。
一方、委任を使用する場合、データソース(Dataverseなど)がサーバー側でフィルターやソートなどの処理を実行し、アプリには結果のみが返されます。そのため、アプリの処理負荷が軽減され、パフォーマンスが大幅に向上します。
具体的な効果
- 高速なデータ表示: ギャラリーやデータテーブルへのデータ表示速度が向上します。
- スムーズな検索: 複雑なフィルター条件を使った検索でも、高速に結果が表示されます。
- レスポンスの向上: アプリ全体のレスポンスが向上し、ユーザーエクスペリエンスが向上します。
- エラーの減少: クライアント側の処理負荷軽減により、エラー発生率が減少します。
委任の設定方法
委任の設定方法は、データソースによって異なります。 ここでは、Dataverse を例に、委任の設定方法を説明します。
基本的には、特別な設定は必要ありません。Dataverse は、デフォルトで委任に対応しています。ただし、委任が機能しないケースもあります。
委任が機能しないケース
- Lookups のネストが深い場合: Lookups 関数を複数回ネストして使用すると、委任が機能しない可能性があります。 可能な限り、Lookups 関数のネストは避けるようにしましょう。
- 複雑なフィルター条件を使用する場合: 非常に複雑なフィルター条件を使用すると、委任が機能しない可能性があります。 フィルター条件を簡素化するか、Dataverse の高度なクエリ機能を活用しましょう。
- All() 関数を使用する場合: All() 関数は、すべてのレコードを取得するため、委任が機能しません。 All() 関数の代わりに、Filter() 関数を使用しましょう。
- OrderByColumns、Search 関数の制限: これらの関数も、委任の制限があります。公式ドキュメントを確認し、適切に使用しましょう。
パフォーマンス測定方法
委任の効果を測定するには、委任を使用する前と後のアプリのパフォーマンスを比較します。 具体的には、アプリの読み込み時間、検索時間、データ更新時間を測定し、その違いを確認します。
Power Apps Studio のプレビュー機能を使って、パフォーマンスをテストできます。また、実際の運用環境で、ユーザーの利用状況を監視することも重要です。
まとめ
本記事では委任について解説しました。ほかにもTips系の記事をいくつか出しているので、そちらも合わせてご覧ください。