1 min to read
Power Apps の委任とはどういう仕組み?

概要
Power Apps の委任とはどういう仕組み?
動画
文字起こし
まずこの委任という機能は扱うデータが多いアプリの場合、パフォーマンスだったり、扱うデータの正確性といった部分に影響がある極めて重要な機能になります。
また、この機能は 500件問題や 2000件問題といった言葉と一緒に扱うことが多いですが、決して何か問題がある機能ではありません。そういったところも合わせて解説していきたいと思います。
まずそもそも委任とは何かというと、 Power Apps が実際に行う処理、例えば検索などの絞り込みや並び替えといった機能をアプリ側ではなく、接続している SharePoint リストや SQLDB や Dataverse などのデータソースに任せる仕組みのことです。
必要なデータのみをアプリ側は受け取るので、軽快に動くことができるようになります。データに関する処理はデータソース側のほうが得意なのでデータソース側に任せる、餅は餅屋にといったような仕組みになります。
ですので、委任という機能はマイナス機能ではなく、むしろプラスな機能ということになります。
ではなぜ 500件問題や 2000 件問題という風に、問題といわれてしまうかというと、それは委任ができないケースが存在するからです。
委任ができない状態は利用しているデータソースや関数の組み合わせによって異なります。この委任という機能を使えない場合、Power Apps はデータソースから最初の500件を取得し、そのデータに対して、アプリ側で絞り込みや並び替え表示するといったことを行います。
この場合、例えば検索対象のデータが 501件目にあった場合、アプリ側に取り込まれないため、検索結果として表示されない形になります。これが問題として扱われることが多いです。
この 500件という数値は設定から最大 2000件まで扱えるデータ量を増やすことができますが、データソースから見た場合ほんの一部しか扱えないように見えます。
データ数が1万件あったとしても、委任という仕組みを利用できていない場合、最初の500件や最大でも2000件しか扱えないため、500件問題や2000件問題という風に言われている理由になります。
この上限を 500から 2000 に増やした場合、当然アプリで利用するデータ数が増え、計算処理に時間がかかるようになるので、アプリの動作は遅くなります。ですので、上限を上げるのはそこも踏まえて慎重に判断しましょう
勘違いしてはいけないのは Power Apps が 500件しかデータを扱えないというわけではありません。委任の機能が利用できている場合、10万件のデータがあったとしても検索結果にデータを表示させることは可能です。
例えば、IDが1~10万まであるデータがあるとして、 ID 19876 のデータを委任機能が利用できている状態で取得する場合、これはアプリ上で表示されます。 委任機能が利用できていない場合は表示がされません。
ID 2万から3万までのデータを委任がある状態で取得したい場合、 2万から2万500までしか取得ができません。 委任ができていない場合は 1~500までしか取得ができないので、何も表示がされません。
このように委任がそもそもできていない場合、正しいデータを取得できない可能性があり、また、スマートフォンなどの端末側側で計算を行うのでその分計算の時間や、スマートフォンなどの端末側に負担がかかります。
対して委任ができている場合でも、その結果が 500件や 2000件以上の場合、すべてのデータを取得できるわけではない点に注意が必要です。
この委任機能ですが、利用するデータソースによってかなり変わります。 Excel などをデータソースにしたアプリの場合はほとんど利用ができません。 対して Dataverse を利用したアプリの場合は、かなりの関数で委任機能を扱うことが可能です。
SharePoint リストの場合はその間くらいになります。ですので、アプリによって適切なデータソースを選択しないと、動作が快適でなかったり、そもそも正しい結果にならなずアプリの作成に苦労したりします。
委任アプリ上でできていない場合、黄色い警告が表示されます。
委任が正しくできている場合は、この黄色い警告は表示されません。 ただし、委任ができていない場合でも黄色い警告が表示されないケースが存在します。
ですので、アプリが正しく委任を利用できているかを調べる必要があります。調査方法は概要欄に記載のこちらの動画をご確認ください。
少なくとも黄色の表示がされている場合は、委任が使えていませんので、アプリによっては修正が必要となります。
修正が必要ないケースとしては、そもそものアプリが扱うデータ数が少ない場合です。具体的にはデータソース側、例えば SharePoint リストに対して登録されているデータが 500件以下などの場合です。
この場合は、委任ができていなかったとしてもすべてのデータがアプリに取り込まれで、その後計算が行われるので、正しい結果を得ることができます。
ですので、データ数が少ないアプリの場合は特に委任という機能を意識する必要はなくなります。
ただし、よくあるケースとして、テスト用のアプリと本番用の2つのアプリがあり、それぞれ別の SharePoint リストに接続しているとします。
テスト用のデータソースには 100件程度のデータが登録されていて、本番には 10万件のデータが登録されているような場合、テスト用のアプリで正しい結果が出ていたとしても、委任が正しくできていないようなケースの場合、本番環境のアプリでは検索結果で正しく表示されないといった不具合が発生するケースがあります。
ですので、基本的にテスト用の環境に対しても、本番環境と同じか、少なくとも委任の件数の上限である 2000 件以上のデータを登録して動作を確認するようにしたほうが良いです。
大きなデータを扱うアプリの場合、この委任という機能は非常に重要になります。
例えば顧客データの一覧を表示するようなアプリで、顧客データが 10万件あるような場合、何も考えずに作ると、ほとんどのデータが表示されません。それは委任ができていたとしてもそうです。
そのためアプリの設計が非常に重要となってきます。
そもそも 10万件すべてのデータを1度に見る必要があるのか、から疑うようにしましょう。アプリケーションで人間が一度に見れるデータ数はせいぜい数十件とかです。
ですので、例えばページ切り替えのような仕組みを用意し、それを切り替えることによって、何度かデータソースに接続してくるような仕組みが考えられます。
古いデータを扱う必要がない場合、Sort 関数などで並び替えを行い、最新の500件のデータのみが表示される仕様も考えられます。
データソース側のビューの機能などで、あらかじめデータソース側で絞り込む方法も考えられます。
データ設計から見直すといったことも考慮に入れる必要があるかもしれません。
どうしてもすべてのデータを取得するために、ForAll 関数などで何度もコレクションに対してデータを追加する仕組みや、 Power Automate などを使う仕組みなども考えられます。
ダッシュボード画面などを作成した場合、Count や 平均などが正しく表示されないケースも存在します。そういった場合、そもそもそれは Power Apps で見る必要があるのか? Power BI などのほうが向いているかもしれません。
ほかにもいくつもありますが作成するアプリにおいてどの設計や仕様なら運用に耐えられるのか、そもそも Power Apps で作るべきなのか、そこまで踏まえてアプリの仕組みを設計する必要があります。
このアプリで扱えるデータ数の制限をどのように乗り越えるのか、ここに1つ腕の見せ所があるのかもしれません。
Comments