作ったときは快適だったのに、データが増えてきたら遅くなった。
Power Apps の「遅い」は、原因が3つに分かれます。そして3つめは、遅いのではなく結果が間違っています。そちらから先に確認してください。
先に確認:全件を見ていない可能性
Power Apps は、データソースから一度に取ってくる件数に上限があります(既定で500件。設定で増やせますが、それでも上限があります)。
問題は、上限に当たったときにエラーにならず、静かに一部だけで処理されることです。
- 1,000件のリストで「未処理のものを探す」→ 先頭500件の中からしか探さない
- 合計を出す → 500件分の合計が出る
- 検索しても、あるはずのものが出てこない
件数が少ないうちは正しく動くので、気づくのが遅れます。
見分け方
作っているときに、数式の左に青い下線と警告アイコンが出ていませんか。「委任できません」という警告です。これが出ている数式は、上限の中でしか動いていません。
作ったときは50件だったので気づかなかった——というのが典型です。
対処
1. 委任できる書き方に変える
同じことをするのでも、書き方によって「データソース側で絞ってから取ってくる」か「全部取ってきてからアプリ側で絞る」かが変わります。前者が委任できる書き方です。
SharePointリストが相手なら、
Filter()で単純な比較(=,>,<,StartsWith)→ 委任できるSearch()、複雑な条件、一部の関数 → 委任できないことがある
警告が出ている関数を、出ない書き方に置き換えるのが基本です。
2. そもそも全件を見せない
これが本命かもしれません。
- 「今年度のもの」「自分の担当分」「未処理のもの」に最初から絞る
- 全件から探すのではなく、検索してから表示する形にする
利用者も、1,000件の一覧をスクロールしたいわけではありません。絞ってから見せるほうが、速いうえに使いやすいです。
3. 絞り込みに使う列にインデックスを付ける
SharePointリスト側の設定です。よく使う列にインデックスを付けておくと、絞り込みが安定します(ExcelをそのままSharePointリストに移すと にも書いた、件数が増えたときの対処と同じです)。
上限に当たった状態は、遅いのではなく答えが間違っている状態です。速度の改善より先に、必ずここを潰してください。数字を扱うアプリなら、なおさらです。
起動が遅い場合
アプリを開いてから使えるまでが長い、というケース。原因はだいたい決まっています。
OnStart で読み込みすぎている起動時にいくつものデータを全部読み込んでいると、その分だけ待たされます。
- その画面で必要になるまで読まない(使われない画面のデータを起動時に読まない)
- どうしても起動時に要るものは、同時に読む(順番に読むと合計時間になります)
- 「起動時に全件をコレクションに入れる」をやめる。件数が増えた瞬間に破綻します
画像が大きいロゴや背景に、撮ったままの写真を貼っていませんか。表示するサイズに縮めてから入れるだけで、体感が変わります。
画面とコントロールが多すぎる使っていない画面、隠しているだけのコントロールが残っていると、それも読み込まれます。使っていないものは削除する。
一覧のスクロールが重い場合
ギャラリー(一覧)の中に、部品を詰め込みすぎているケースです。
- 1行あたりのコントロール数を減らす(表示する項目を絞る)
- 行ごとに別のデータを取りに行く書き方をしていないか確認する(1行につき1回問い合わせが発生します)
- 画像やアイコンを行ごとに読み込んでいないか
「1行ごとに何かを取りに行く」は、行数が増えた瞬間に効いてきます。必要な情報は、最初のデータ取得にまとめて含めるのが基本です。
直す前に測る
どこが遅いのかを決めつけずに、順番に確認します。
- 警告(委任できません)が出ている数式はあるか → あれば最優先
- 起動が遅いのか、操作が遅いのか → 別の問題です
- 起動が遅いなら
OnStartを一時的に空にしてみる → 速くなればそこが原因 - 一覧が遅いなら、表示件数を減らしてみる → 速くなれば取得の問題
1つずつ変えて、1つずつ確かめる。まとめて直すと、何が効いたか分からなくなります。
そもそも Power Apps でやるべきか
最後に、身も蓋もない話を。
件数が数万件あって、複雑な絞り込みと集計が要る——という要件なら、画面を作り込むより、SharePointリストのビューで足りることがあります。あるいは、Excelのほうが向いていることも(そのアプリ、Excelの関数だけで足りませんか)。
「遅い」の相談を受けて、作り直すのではなく規模を見直して終わることも実際にあります。
まとめ
- まず「全件を見ているか」を確認する。上限に当たると、エラーにならず一部だけで処理される
- 数式の委任できませんという警告が出ていないか見る。出ていれば最優先で直す
- 委任できる書き方に変えるか、そもそも全件を見せない(絞ってから表示する)
- 絞り込みに使う列にインデックスを付ける
- 起動が遅いなら
OnStartの読み込み・画像のサイズ・不要な画面 - 一覧が遅いなら 1行あたりのコントロール数と、行ごとの問い合わせ
- 1つずつ変えて、1つずつ確かめる
- 規模が合っていないなら、作り直すよりやり方を見直す
数式の警告を見せてもらえれば、だいたいその場で当たりが付きます。作ったものを直すところからでも構いません。
この記事で使うシートを配っています
自動化ツール一覧(管理台帳)
社内で作った自動化フロー・アプリ・マクロ・RPAを1枚に並べる台帳です。止まると困る度と引き継ぎにくさから、危ない行に自動で色が付きます。
ダウンロード(無料・登録不要)読んだうえで「うちの場合はどうか」を話したい方へ
OKD SOFT は、生成AI(Microsoft 365 Copilot / Copilot Studio)と Power Platform を使った業務改善・内製化支援をしています。作って渡して終わりにせず、担当の方が自分で直せる状態までご一緒します。
「何から手をつければいいか分からない」の段階でも大丈夫です。まずは現状をうかがうところから。