
Power Appsでフィルターを使ったとき、数式バーに黄色い三角のマークが出た経験はありませんか。あれは委任の警告と呼ばれるもので、放置するとデータが正しく表示されない可能性があります。
委任の警告とは何か
黄色い三角マークの正体
委任の警告は、Power Appsが「この処理をサーバー側に任せることができない」と教えてくれるサインです。簡単にいえば、フィルターや検索の処理がアプリ側(クライアント側)で実行されており、データの取得に上限が生じてしまう状態を意味します。
Power Appsは基本的に、フィルターや並び替えの処理をデータソース(SharePointやDataverseなど)のサーバー側に委任して実行します。これが委任という仕組みです。委任できれば、データが何万件あっても条件に合うものだけをきちんと取得できます。ところが、データソースやPower Appsが対応していない処理の組み合わせでは、委任が成立しません。

500件の壁
委任できない処理が発生すると、Power Appsはデータソースから最大500件(設定を変えれば最大2000件)しかデータを取得しません。その限られたデータの中で条件に合うものを絞り込むため、500件以降に存在するデータは見えなくなります。
具体的なイメージをつかんでおきましょう。SharePointリストに1000件の受注データがあるとします。委任できないFilterを使うと、先頭500件の中から条件に合うものだけが画面に表示されます。残り500件は存在しなかったことになる。現場で使うアプリでこれが起きたら、正しい業務判断ができなくなります。
私も最初は知らずにSearchを使っていて、勉強会で参加者から「なんか件数少なくないですか?」と言われて気づいたことがありました。黄色い三角は気になっていたものの、動いているから大丈夫だと思っていたんですよね。あの経験から、委任の警告は必ず潰す習慣がつきました。
どの関数が委任できて、どれが委任できないか
FilterとSearchの委任可否
Filter関数は、条件の書き方によって委任可否が変わります。SharePointリストを使っている場合、等号や比較演算子(=、<、>)、StartsWith などは委任可能です。一方で、Mid、Left、Len、Trim、EndsWith など文字列の中間を操作する関数は委任できません。
Search関数はあいまい検索ができて便利ですが、SharePointに対しては委任できません。Dataverseなら委任対応していますが、SharePointで全文検索したいときは工夫が必要です。データソースとFilterの組み合わせを以下にまとめます。
| 関数・条件 | SharePoint | Dataverse |
|---|---|---|
| Filter(=、<、>) | 委任可能 | 委任可能 |
| Filter(StartsWith) | 委任可能 | 委任可能 |
| Filter(in 演算子) | 委任不可 | 委任可能 |
| Filter(Mid、Left など文字列操作) | 委任不可 | 委任不可 |
| Search | 委任不可 | 委任可能 |
| Sort(単一列) | 委任可能 | 委任可能 |
| CountIf | 委任不可 | 委任不可 |
委任できないのはどんな処理か
委任が成立しない主なパターンは3つです。
- データソースが対応していない関数の組み合わせ(例:SharePointでのSearch、CountIf)
- 列に対して計算や変換を行う式(例:Left(タイトル, 2) = "東京" のような書き方)
- コレクションに対するFilter(これはコレクション自体がローカルなので警告は出ますが件数制限の問題は起きません)
2番目のパターンはついやりがちです。たとえば、列の値の先頭2文字を切り取って比較したいとき、Left関数を使うとSharePointへの委任が成立しません。代わりにStartsWithを使えば委任できるので、前方一致の検索ではStartsWithに書き直す習慣をつけましょう。
データソースによって委任の対応範囲が変わる
Dataverse、SharePoint、Excelの違い
委任の対応範囲はデータソースによって大きく異なります。最も対応が広いのはDataverseで、ほぼすべての関数で委任が成立します。大量データを扱う業務アプリならDataverseが第一候補です。ただし、Microsoft 365のライセンスだけでは使えず、Power Apps Premiumの有料ライセンスが必要になります。
SharePointリストは委任の対応範囲がやや限定的ですが、Microsoft 365を持っていれば追加費用なく使えるので、現場では一番よく選ばれています。委任の制約を把握した上で設計すれば、業務改善の用途では十分に実用的です。SharePointリストとMicrosoft Listsの違いについてはこちらの記事でも解説しています。
ExcelをOneDriveやSharePointに置いてデータソースとして使う場合は注意が必要です。ExcelはFilterやSortを含むほとんどの処理で委任が成立しないため、どんな条件を書いても先頭500件(最大2000件)しか取得できません。データ量が少いならいいのですが、増えてくると途端に危うくなります。Excelをデータソースにするときの考え方はこちらの記事も参考にしてみてください。
上限件数を2000件まで拡張する方法
Power Appsの設定から、データ行の制限を最大2000件まで引き上げることができます。Power Appsスタジオのメニューから 設定 → 全般 を開き、データ行の制限の値を変更します。デフォルトは500件です。

ただし、これは根本的な解決ではありません。2000件を超えるデータを扱う可能性があるなら、設計を見直す必要があります。上限を上げることで問題を先送りにするのではなく、委任できる書き方に変えることを先に検討してください。
委任の警告が出たときの対処法
委任できる書き方に変える
一番基本的な対処は、委任対応の書き方に変えることです。前方一致の検索をしたいなら、SearchではなくStartsWithを使います。
// 委任不可(SharePointの場合)
Filter(受注リスト, Search(受注リスト, テキスト入力1.Text, "件名"))
// 委任可能(前方一致で代替)
Filter(受注リスト, StartsWith(件名, テキスト入力1.Text))
前方一致に限定するだけで委任が成立します。部分一致が必要な要件かどうかを一度立ち止まって確認してみると、実は前方一致で十分というケースも多いです。
ClearCollectでデータを取得してからFilterする
委任できない処理をどうしても使いたい場合、OnVisibleなどのタイミングでClearCollectを使い、データをコレクションに取り込んでから絞り込む方法があります。
// 画面の OnVisible で全件取得(委任可能な条件で絞り込んでおく)
ClearCollect(colJuchu, Filter(受注リスト, 担当者 = User().Email))
// ギャラリーの Items で部分一致検索(コレクションなので委任の問題なし)
Filter(colJuchu, テキスト入力1.Text in 件名)
コレクションはローカルに存在するデータなので、委任の制約を受けません。ただし、ClearCollectに取り込める件数も最大2000件までです。取り込むタイミングでSharePoint側で絞り込み(委任可能な条件で)、件数を絞ってからコレクションに入れるのがポイントです。
データ設計を見直す
根本的には、2000件を超えるような設計をしないことが最善策です。データを年度や部署ごとにリストを分ける、古いデータをアーカイブリストに移す、といった方針をあらかじめ決めておくと安心です。
私が社内で作った日報アプリを例にすると、1日20件の日報が毎営業日蓄積されます。月400件、年間4000〜5000件になるペースです。SharePointリストを使い続けると3年も経たないうちに2000件を超えます。そこで設計段階から、年度ごとにリストを分ける方針にしました。最初に計算しておくだけで後からの手戻りがかなり減ります。
Power Appsの基本的な仕組みや設計の考え方についてはPower Appsとは?完全ガイドやPower Appsで使える実用テクニックも合わせて読んでみてください。
まとめ
委任の警告は、Power Appsが出してくれる親切なサインです。動いているからといって無視して作り続けると、本番稼働後にデータが正しく表示されないという事態になりかねません。
まずは使っているデータソースと、どの関数が委任できるかを確認することから始めましょう。完璧に委任を通すのが難しいケースも正直あります。そういうときはClearCollectで逃げるか、データ設計を見直すか、割り切りが必要です。ただ、知っているのと知らないのでは大違いです。
委任の制約を理解した上で設計を組み立てていく。これがPower Appsを使いこなすうえで避けては通れない第一歩だと思っています。地道な積み重ねですが、それが後から余計な手戻りを防いでくれます。