App.OnStart の最適化

完了

アプリ オブジェクトの OnStart プロパティは、ユーザーがアプリを起動すると実行されます。 このプロパティは、式を評価して、事前に読み込むデータの取得やキャッシュを行ったり、グローバル変数を設定したりするためによく使用されます。 そのため、App.OnStart プロパティの処理に時間がかかって、パフォーマンスの問題が発生する場合があります。 このような問題を減らすために、代替の方法を使用することができます。また、Microsoft Power Platform の今後のリリースで対応が予定されています。 アプリのニーズに合わせて、代替の方法を使用してください。 このトピックでは、使用できる代替の方法のいくつかについて説明します。

アプリの起動時によくあるニーズの 1 つは、ユーザーに表示する最初の画面を選択することです。 たとえば、最初の実行でようこそ画面を開いたり、特定の詳細ページへの ディープ リンク を実装したりすることができます。 以前は、App.OnStart プロパティに条件ロジックを追加したり、Navigate() 関数を使用したりすることが行われていました。 現在では、OnStart での Navigate() の使用は廃止されており、すべての新しいアプリでは App.OnStart で Navigate() 関数を使用することはできません。

新しい方法は、App.StartScreen プロパティを使用することです。 既定では、このプロパティは空で、画面ツリー ビューの最初の画面が表示されます。 StartScreen プロパティで指定されている式を評価してエラーが発生した場合は、このプロパティが空の場合のように最初の画面が返されます。 IfError() 関数を使用すると、エラーをキャッチして、適切なエラー画面にリダイレクトすることができます。

StartScreen プロパティに特定の画面を設定すると、ツリーで移動したとしてもその画面を開始画面にすることができます。 また、次の図に示すように、ユーザーを検索する条件ロジックを使用することができます。 ユーザーにアドレスがない場合は、HomeScreen ではなく、ChooseLocation の画面にリダイレクトされます。

アプリの StartScreen プロパティのスクリーンショット。

StartScreen は、動作の関数は含めることができないデータ フロー プロパティです。 データ フローの関数はすべて使用できます。以下に、よく使用される関数の例を示します。

  • アプリの起動に使用するパラメーターを読み取る Param() 関数

  • 現在のユーザーに関する情報を読み取る User() 関数

  • データ ソースから読み取る LookUp()、Filter()、CountRows()、Max()、およびその他の関数

  • コネクタからの呼び出し (ただし、迅速な実装が必要)

  • Connection、Compass、App などのシグナル

グローバル変数やコレクション (OnStart で作成したものを含む) は、StartScreen プロパティでは使用できません。

StartScreen プロパティは、起動時に一回評価されます。 後でテストする必要がある場合は、プロパティを変更できます。 また、アプリ オブジェクトの StartScreen に移動するコンテキスト メニュー コマンドを使用して、手動で再評価することもできます。

Power Apps Studio のアプリ オブジェクトで使用できるコンテキスト メニューのスクリーンショット。

古いアプリがある場合は、新しい StartScreen プロパティを使用するためにアプリを更新する必要があります。 アプリを更新するまでは、設定 > 近日公開の機能 > 廃止タブに移動して、App.OnStart の Navigate 関数を有効にする切り替えスイッチをオフにすることができます。 この切り替えスイッチをオフにすることで、OnStart で Navigate() 関数の使用を (期間限定で) 続けることができます。

アプリの設定 > 近日公開の機能 > 廃止タブに移動して、App.Onstart の Navigate 関数を有効にするオプションをオフにするスクリーンショット。

OnStart の代わりに OnVisible を使用

App.OnStart の式を確認して、単一の画面の情報のみを事前に読み込む場合は、ロジックを App.OnStart からその画面の OnVisible プロパティに移動します。

アプリの設定の見直し

新しいアプリの設定は、Power Apps の更新で定期的に発表されます。 新しい設定が役立つかどうか、設定を見直すことをお勧めします。 アプリの読み込み機能を最適化する場合は、アプリの以下の設定を検討してください。

  • App.OnStart プロパティを有効にする: この設定は、既定で有効になっています。 OnStart が必要なく、その使用を推奨しない場合は、この設定をオフにすることを検討してください。

  • 非ブロッキングの OnStart 規則を使用: 公開されたアプリでは、この設定によって App.OnStart の式を他のアプリの規則と同時に実行できます。 この設定をオフにすると、他の規則は App.OnStart が完了するまで待機します。 この設定は新しいアプリでは既定で有効になっていますが、古いアプリでは自分で有効にする必要があります。