パフォーマンスの最適化

完了

アプリのパフォーマンスを最適化する方法を知るため、まずアプリの起動時に何が起きるのかについて説明します。 次に、パフォーマンス低下のよくある原因について説明します。

アプリの実行フェーズとデータ呼び出しフロー

ユーザーがアプリとの対話を開始する前でも、アプリで発生するいくつかの実行フェーズがあります。 その後、データ ソースによって異なるデータ呼び出しフローがアプリにより実行されます。

キャンバス アプリの実行フェーズ

キャンバス アプリでは、ユーザーにインターフェイスを表示する前に次の実行フェーズが発生します。

  1. ユーザーを認証する: 初めてのユーザーに、アプリの接続用の資格情報を使ったサインインが求められます。 組織のセキュリティ ポリシーによっては、アプリを再度開いたときに再度求められることがあります。
  2. メタデータを取得する: メタデータ (アプリが実行される Power Apps プラットフォームのバージョンやアプリのデータ ソースなど) を取得します。
  3. アプリケーションを初期化する: アプリの OnStart プロパティでタスクが実行されます。
  4. 画面をレンダリングする: コントロールやデータなど、アプリの最初の画面がレンダリングされます。 アプリによって同じプロセスが実行され、ユーザーが開く後続の画面がレンダリングされます。

キャンバス アプリにおけるデータ呼び出しフロー

OData プロトコルは、キャンバス アプリのデータ呼び出しのデータの送受信に使用されます。 ほとんどのデータ ソースの場合、データ呼び出しはアプリから Azure API 管理へ、API 管理からデータ ソースへ、そして同じ手順を逆の順序で繰り返してアプリに戻ります。 オンプレミスのデータ ソース (SQL Server など) がある場合、呼び出しはオンプレミスのデータ ゲートウェイも通る必要があります。 これらの呼び出しフロー ゲートすべてによって、パフォーマンスに影響が及び、最適化の潜在的な機会が生じる可能性があります。

Microsoft Dataverse をデータ ソースとして使用すると、データ呼び出しフローが大幅に変化します。 データ呼び出しが Dataverse に移動すると、OData 要求は Azure API Management、コネクタ、またはデータ ゲートウェイを経由せずに Dataverse に直接移動します。 言い換えると、Dataverse を使用するとゲートの数が少なくなります。

キャンバス アプリのパフォーマンス低下のよくある原因

実行フェーズとデータ呼び出しフローの基本について理解できたので、次にキャンバス アプリのパフォーマンス低下のよくある原因について説明します。

アプリの設計

アプリケーションをデザインする方法は多くあるので、アプリケーションのデザインは広範な領域です。 ただし、アプリケーションのパフォーマンスに影響を与える可能性があるデザインの側面は次のとおりです。

  • このアプリはクライアントに負荷をかけます。つまり、最初は大量のデータセットをデータ コレクションに取り込みます。 その後、JSON、Sort、AddColumns、GroupBy など、クライアントのデバイス上で処理する関数でデータを (おそらく何度も) 使用します。
  • アプリの OnStart に長い数式がある: 他の画面に対して多数のデータ呼び出しがトリガーされ、これらのデータ呼び出しによって大量のデータ レコードが返されます。

モニターを使用して、アプリのパフォーマンス低下の原因として考えられるアプリの設計を確認できます。 時間がかかっているデータ呼び出しはどれかと、アプリに存在するデータ呼び出しの数を確認します。

さらに、クライアントとサーバー間のワークロードのバランスもとってください。 可能な場合は常に、サーバーにワークロードを委任します。 クライアントのメモリ消費の観点から、クライアント アプリを軽量にすることが重要です。

データ ソースのボトルネック

データ ソースのボトルネックとして考えられる原因は数多くあります。 しかし、最もよくある原因は、多数のトランザクション クエリまたは非トランザクション クエリが異なるユーザーから同じテーブルまたはレコードに向けられると、データ ソースのテーブルが活動の中心になるという点です。

次の場合、OData 呼び出しの速度が低下する可能性があります。

  • データ ソースをホストしているバック エンド コンピューターのリソースが不足している。
  • バックエンド SQL インスタンスに、ブロック、デッドロック、またはリソースの競合がある。
  • オンプレミスのデータ ゲートウェイが異常である。

これらの問題が発生した場合、アプリのパフォーマンス低下を避けるため、バック エンド データ ソースを調整してください。

クライアント ブラウザー、デバイス、場所

キャンバス アプリは、さまざまなデバイスやブラウザー、ネットワーク条件の異なるさまざまな場所で使用できます。 更新された最新のサポートされているブラウザーを使用するようユーザーを促してください。

オンプレミスのデータ ゲートウェイおよび環境の地理的位置

ユーザーは、キャンバス アプリに世界中からアクセスできます。 最も大規模なユーザー ベースの近くにデータ ソースを配置することをお勧めします。 たとえば、アプリがオンプレミスのデータ ソースにアクセスする場合、データ ゲートウェイとデータ ソース間の余分なオーバーヘッドを最小限に抑えるため、オンプレミスのデータ ゲートウェイをデータ ソースの近くに配置してください。

バック エンドにおける大量の要求の一時的な調整

キャンバス アプリの設計によっては、短期間で多数のデータ呼び出しが生成される可能性があります。 データ呼び出しがコネクタの調整の制限を超えると、アプリが一時的に調整されます。 したがって、多くの観点から、適切なデータ ソースとコネクタを選択することが重要であり、コネクタ固有の制限について理解することが重要です。 発生する可能性がある制限について詳しくは、コネクタに関するドキュメントを確認ください。

公開されたアプリのデバッグ設定が有効になっている

公開されたアプリのデバッグ設定を有効にすると、アプリの実行が遅くなります。 公開されたアプリをデバッグするときにソース式を表示する必要がなくなったとすぐに判断した場合、この設定を無効にした状態でアプリを再公開できます。

要約すると、ユーザーが実行フェーズおよびデータ呼び出しフローでアプリの使用を開始したときにどうなるかについて説明しました。 さらに、アプリのパフォーマンス低下のよくある原因もいくつか説明しました。 このユニットでは詳しく説明しませんが、キャンバス アプリのパフォーマンスを高めるための実用的なヒントとベスト プラクティスPower Apps における最適化されたパフォーマンスに関する考慮事項について学習することができます。