Power Appsが重い・遅いと感じたときにまず試す5つの改善策

Power Appsが重くなる原因は、だいたい5つに絞られる

Power Appsが重い・遅いと感じたとき、原因はほぼ5つのどれかです。闇雲に設定を変えても改善しないので、まず原因を特定することが大切です。この記事では原因ごとの症状と対策をまとめます。

社内で複数のアプリを作ってきた経験から言うと、重くなるアプリのほとんどはデータの取得方法か、画面の構造に問題があります。

原因①:委任警告を無視してデータ取得している

委任(Delegation)とは、データの絞り込みや並び替え処理をデータソース側に任せる仕組みです。委任できない関数を使うと、Power Appsはまずデータを500件(設定変更で最大2,000件)取得してからアプリ内でフィルタリングします。

例えば20人が1日20件使う日報アプリだと、5ヶ月で2,000件を超えます。そのタイミングから急にアプリの動作が変わり、データが表示されなくなるという事態が起きます。委任の問題は、使い始めてすぐには現れないのが厄介です。

数式バーに黄色い警告が出ていたら、それが委任の問題のサインです。Filter関数で委任できる関数だけを使うか、データソースをSharePointからDataverseに移行することを検討しましょう。

Power Appsの委任の警告とは?意味と対処法を初心者向けに解説

原因②:OnStartに重い処理を詰め込んでいる

アプリ起動時に大量のデータを読み込んでいると、起動が遅くなります。OnStartで複数のコレクションをClearCollectしていたり、SharePointリストを丸ごと読み込んでいたりすると、3〜5秒の起動遅延が発生します。

対策は2つあります。1つはOnStartの処理をOnVisibleに移して遅延ロードにすること、もう1つはConcurrent関数で並列実行することです。

Concurrent(
    ClearCollect(colA, リストA),
    ClearCollect(colB, リストB)
)

並列化するだけで起動時間が半分以下になることもあります。OnStartとOnVisibleの使い分けについては別記事で詳しく解説しています。

原因③:コントロール数が多すぎる

1つの画面に500を超えるコントロールがあるとパフォーマンスが悪くなります。コントロールとはボタン・ラベル・テキスト入力・ギャラリーなど、画面に配置するすべての要素のことです。

ギャラリーを多用していると、カード内のコントロールがレコード数分レンダリングされることになります。ギャラリーのカード内は必要最小限のコントロールだけにするのが鉄則です。

また、Visibleプロパティでfalseにしたコントロールも、画面内に存在する限りレンダリング対象になります。使わないコントロールは削除するか、別の画面に移すことを検討しましょう。

原因④:データソースへの呼び出しが多すぎる

SharePointリストへのアクセスが1つの画面で何度も発生していると遅くなります。例えば複数の場所で同じリストをLookUp・Filterしていたり、ギャラリーのカード内でさらにFilterを呼んでいたりすると、レコードの数だけAPIコールが発生します。

対策はコレクションに一旦溜めておくことです。OnVisibleでClearCollectしてコレクションにデータを持ち、以降はそのコレクションを参照するようにします。SharePointリストへの直接参照を減らすだけで体感速度がかなり変わります。

// OnVisibleで1回だけ読み込む
ClearCollect(colItems, SharePointList)

// ギャラリーのItemsはコレクションを参照
Filter(colItems, ステータス = "対応中")

コレクションの使い方については別記事で解説しています。

Power Appsのコレクション(Collection)活用入門——一時データ操作の基本

原因⑤:データソースの接続数が多すぎる

1つのアプリで30を超えるデータソースを接続すると、起動時の読み込みが重くなります。SharePointサイトが複数あったり、複数のリストを個別に追加していたりすると気づかないうちに増えます。

定期的にデータソース一覧を見直し、使っていない接続を削除するのが効果的です。また、複数のSharePointリストを使う場合は同一サイトにまとめると接続数を減らせます。

改善の進め方:まずMonitorで計測する

闇雲に最適化するより、まず何が遅いかを計測することが先決です。Power AppsにはMonitorという開発ツールがあり、どの処理に何秒かかっているかを確認できます。

Monitorは Studio の「詳細設定」→「モニター」から起動できます。処理時間が長いAPIコールやコレクション操作がひと目でわかるので、対策の優先度をつけるのに役立ちます。

一気に全部直そうとせず、一番時間がかかっている箇所から1つずつ改善していく方が結果が出やすいです。市民開発はこういう地道な積み重ねだと思っています。

まとめ

Power Appsが重くなる原因は、委任・OnStartの重さ・コントロール過多・データソース多呼び出し・接続数の5つがほとんどです。まずMonitorで計測して一番遅い箇所を特定し、コレクション活用・Concurrent並列化・コントロール整理の順で対処していくと効果が出やすいです。

重いアプリも、原因がわかれば直せます。ユーザーから「遅い」と言われたら改善のチャンスだと思って、楽しみながら対処していきましょう。

Xでフォローしよう