Power Appsでアプリを作り、テストでは問題なく動いた。ところが本番のデータで動かすと「あるはずのデータが出てこない」——これはPower Apps最大のつまずきポイントです。

原因はバグではありません。委任(デリゲーション)という仕組みによる、意図された動作です。この記事では、データの置き場所をどう選ぶか、そしてなぜデータが欠けるのかを解説します。

まず結論|Power Appsは「500件」で線を引いている

Power Appsには、ローカルで処理できるデータ量を既定で500件に制限するという仕様があります。設定で最大2,000件まで増やせますが、それ以上にはできません。

つまりデータが500件を超えた瞬間、書き方によっては結果が不完全になります。テスト時のデータが少ないと気づけないため、本番で初めて発覚します。

Microsoftの公式ドキュメントにも、この危険性が明記されています。100万件のデータに対して委任できない式で絞り込むと、最初の500件しか調べられません。探しているデータが501件目にあれば、見つかりません。

委任(デリゲーション)とは何か

委任とは、絞り込みや並べ替えの処理を「データ側にやってもらう」ことです。

委任できる場合 委任できない場合
誰が処理するか データ側(SharePointなど) Power Apps側(アプリの中)
やり取りされるデータ 条件に合う分だけ 最大500件を取り寄せてから絞る
件数が多いとき 正しい結果が返る 結果が欠ける

「10万件の中から東京の人だけ」を探すとき、委任できれば「東京の人を出して」と依頼して結果だけ受け取ります。委任できなければ先に500件だけ取り寄せ、その中から東京の人を探します。501件目以降に東京の人がいても、存在しないことになります。

警告は出るが、エラーにはならない

委任できない式を書くと、Power Appsは黄色い三角の警告と、式の下に青い波線を表示します。

ただしこれは「エラー」ではなく「警告」です。アプリは動きますし、データが少ないうちは正しく動きます。動いてしまうからこそ見逃される——ここが厄介な点です。

どのデータソースを選ぶか

データソース 委任 向いている場面
SharePointリスト 対応 社内の一般的な業務アプリ。追加費用なしで使えることが多い
Dataverse 対応(最も機能が豊富) 本格的な業務システム。Premiumライセンスが必要
SQL Server 対応 既存の業務DBと連携する場合。Premiumが必要
Excel(インポート) —(メモリ上で処理) 件数が少なく、更新頻度が低いデータ

ここで判断が分かれます。Dataverseは委任できる関数が最も多く、複雑な条件でも正しく動きます。しかしPremiumライセンスが必要です。

一方SharePointリストは追加費用なしで使えることが多く、委任にも対応しています。多くの社内アプリはこれで足ります。費用を抑えたいなら、SharePointリストで設計できるかを最初に検討するのが定石です。

なおExcelをインポートした場合は委任という概念自体がありません。データがすべてメモリ上にあるため制限を受けませんが、その分だけ扱える件数に限りがあります。

委任できる書き方・できない書き方

同じ「絞り込み」でも、使う関数によって委任できるかどうかが変わります。

関数・演算子
委任できる Filter、Search、LookUp、Sort、SortByColumns
=、<>、>、<、>=、<=、And、Or、Not
StartsWith、EndsWith、IsBlank
委任できない If掛け算・割り算、Text、Value
Lower、Upper、Left、Mid、Len などの文字列操作
FirstN、Last、Collect、GroupBy
CountRows、Count(件数を数える関数)

意外なのは「件数を数える」関数が委任できないことです。CountRowsやCountは対象外なので、大量データの件数表示は正確でなくなる可能性があります(Sum・Average・Min・Maxは委任できる場合があります)。

また文字列を加工する関数はほぼ委任できません。「名前を小文字にして比較する」といった書き方をした瞬間、委任が効かなくなります。

実務での対処法

①データ行の制限を「1」にしてテストする

これは公式でも推奨されている方法です。設定の「データ行の制限」を1に設定すると、委任できない箇所が1件しか返さなくなります

問題を意図的に目立たせることで、開発中に発見できます。本番移行後に「データが出ない」と騒ぎになるより、はるかに安全です。

②委任できる関数で書き直す

多くの場合、書き方を変えれば委任できます。たとえば文字列を加工して比較するのではなく、StartsWithのような委任可能な関数に置き換えるといった対処です。

③そもそも扱う件数を減らす

全データをアプリに持ち込む必要がないケースは多くあります。日付や担当者で最初に絞り込めば、扱う件数自体が500件を下回ります

④警告を無視しない習慣をつける

黄色い三角形は「今は動くが、データが増えたら壊れる」という予告です。テストデータが少ないうちは何も起きないため、警告の意味を理解していないと放置されます。

設計の順序

  1. 扱うデータの件数を見積もる——将来的に500件を超えるか。超えるなら委任を前提に設計する
  2. データの置き場所を決める——SharePointリストで足りるか、Dataverseが必要か。ここでライセンス費用も決まる
  3. 委任できる書き方で作る——警告が出たら、その場で対処する
  4. データ行の制限を1にしてテストする——問題を早期に発見する

アプリの具体的な作成手順はキャンバスアプリの作り方入門で解説しています。

よくある質問

Q. 500件を超えるデータは扱えないのですか?

扱えます。委任できる書き方をすれば、件数の制限はありません。制限がかかるのは「委任できない処理をローカルで行う場合」だけです。

Q. データ行の制限を2,000にすれば解決しますか?

根本的な解決にはなりません。2,000件を超えれば同じ問題が起きますし、件数を増やすほどアプリの動作が重くなります。委任できる書き方にするのが本筋です。

Q. 警告が出ているのに正しく動いています。問題ありますか?

データが少ないうちは正しく動きます。問題が出るのは500件を超えてからです。運用開始後にデータが増えて初めて不具合が現れるため、警告の段階で対処しておくべきです。

Q. SharePointリストとDataverseはどちらを選ぶべきですか?

費用と要件のバランスで決めます。SharePointリストは追加費用なしで使えることが多く、一般的な業務アプリには十分です。複雑なデータ構造や細かい権限管理が必要ならDataverseが適していますが、Premiumライセンスが必要になります。

Q. Excelをデータソースにするのは避けるべきですか?

用途によります。件数が少なく、複数人が同時に更新しないデータであれば問題ありません。ただし業務で継続的に使うアプリでは、SharePointリストのほうが扱いやすい場面が多いです。

まとめ

  • Power Appsはローカル処理を既定500件(最大2,000件)に制限している
  • 委任とは、絞り込みをデータ側にやってもらうこと。委任できれば件数の制限を受けない
  • 委任できないと最初の500件しか調べず、結果が欠ける。しかもエラーではなく警告なので動いてしまう
  • If・文字列操作・件数カウントは委任できない。Filter・Search・LookUp・StartsWithは委任できる
  • 費用を抑えるならSharePointリストで設計できるかを最初に検討する
  • 開発時はデータ行の制限を1にしてテストすると、問題を早期に発見できる

ライセンスの考え方はPower Appsのライセンスと料金、Power Automateとの使い分けはこちらの記事をご覧ください。

参考・出典