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 は、動作の関数は含めることができないデータ フロー プロパティです。 データ フローの関数はすべて使用できます。以下に、よく使用される関数の例を示します。
アプリの起動に使用するパラメーターを読み取る Param() 関数
現在のユーザーに関する情報を読み取る User() 関数
データ ソースから読み取る LookUp()、Filter()、CountRows()、Max()、およびその他の関数
コネクタからの呼び出し (ただし、迅速な実装が必要)
Connection、Compass、App などのシグナル
グローバル変数やコレクション (OnStart で作成したものを含む) は、StartScreen プロパティでは使用できません。
StartScreen プロパティは、起動時に一回評価されます。 後でテストする必要がある場合は、プロパティを変更できます。 また、アプリ オブジェクトの StartScreen に移動するコンテキスト メニュー コマンドを使用して、手動で再評価することもできます。
古いアプリがある場合は、新しい StartScreen プロパティを使用するためにアプリを更新する必要があります。 アプリを更新するまでは、設定 > 近日公開の機能 > 廃止タブに移動して、App.OnStart の Navigate 関数を有効にする切り替えスイッチをオフにすることができます。 この切り替えスイッチをオフにすることで、OnStart で Navigate() 関数の使用を (期間限定で) 続けることができます。
OnStart の代わりに OnVisible を使用
App.OnStart の式を確認して、単一の画面の情報のみを事前に読み込む場合は、ロジックを App.OnStart からその画面の OnVisible プロパティに移動します。
アプリの設定の見直し
新しいアプリの設定は、Power Apps の更新で定期的に発表されます。 新しい設定が役立つかどうか、設定を見直すことをお勧めします。 アプリの読み込み機能を最適化する場合は、アプリの以下の設定を検討してください。
App.OnStart プロパティを有効にする: この設定は、既定で有効になっています。 OnStart が必要なく、その使用を推奨しない場合は、この設定をオフにすることを検討してください。
非ブロッキングの OnStart 規則を使用: 公開されたアプリでは、この設定によって App.OnStart の式を他のアプリの規則と同時に実行できます。 この設定をオフにすると、他の規則は App.OnStart が完了するまで待機します。 この設定は新しいアプリでは既定で有効になっていますが、古いアプリでは自分で有効にする必要があります。