Power AppsキャンバスのApp.OnStart内の処理はどうしても重くなりがちで、その解決にむけて少しずつAppに機能を追加していくとのこと。
今回はその機能の1つ、起動画面を指定するApp.StartScreenについて。
※今回の記事のソースはこちら。
https://powerapps.microsoft.com/ja-jp/blog/app-startscreen-a-new-declarative-alternative-to-navigate-in-app-onstart/
App.OnStartでNavigateするのはパフォーマンスに影響する
今回の記事のソースによると、App.OnStartでNavigate関数を使用して最初に表示する画面を指定する方法にはパフォーマンス上の問題があるらしい。
それは、アプリの最初の画面を表示する前にApp.OnStartの実行を完了する必要があること。
つまり、App.OnStartの処理が重ければ重いほど最初の画面を表示するのが遅くなる、というのが問題だった。
App.StartScreen
App.StartScreenはそんな問題を解決するための新しいプロパティで、アプリに表示する最初の画面を指定できる。
なぜこのStartScreen導入でアプリの起動が早くなるかというと、
- 色々な処理
- 最初の画面を指定(Navigate関数呼び出し)
の2つを実施するより、
- 色々な処理
App.StartScreenで
- 最初の画面を指定
と処理を分離した方が、アプリの起動は早くなるらしい。
App.StartScreenを使うとどのように起動が変わるか実験
言葉で聞くより見た方が早いかなと思ったので、StartScreenのあるときとないときの違いをサンプルアプリで実験。
事前準備
指定秒数だけ待って「終わったよ」テキストを返すだけの単純なフロー。
今までのやり方:OnStartでNavigate関数呼び出し
まずは今までのやり方として、OnStartでNavigate関数を使用しアプリ起動時にScreen2を表示してみる。
以下の設定を変えてOnStartでNavigate関数を呼び出せるようにしておく。
これが従来の動作で、起動するまで(PowerAutomateが完了し、アプリが操作できるまで)5秒もかかるので、正直ちょっと遅いなと感じてしまうw
StartScreenを使ってみる
そしたら今度はStartScreenプロパティを使ってみる。
※このとき「終わったよ」テキストは表示されておらず、よく見てみると画面左上にOnStart処理実施中の「・」が確認できる
これが今回実装されたStartScreenを使うことによる効果!
OnStart処理中も画面UIに触ることができる
さらにすごいのがOnStart処理中も画面コントロールに触ることができて、
OnStartに重い処理があってもすぐにユーザーは操作を開始できるので、とても便利!
StartScreenではグローバル変数は使えない
とは言え、OnStartが終わるまでは触ってほしくないコントロールは触れないようにしておかなきゃいけないし、
これは、StartScreenでグローバル変数を参照する際にその変数に必要な値がちゃんと設定されているか?を意識させたくないんだと思う。
なので、StartScreenではParam関数やLookUp関数、User関数とかを使って、起動画面を切り替えることになるんじゃないかな~。
コメント