1. システムとオフィスの融合
  2. media
  3. マイクロソフトソリューション Power Apps Power Platform Power Automate
  4. Power Apps キャンバスアプリテンプレートを作る④ 初期化処理

QESブログ

Power Apps キャンバスアプリテンプレートを作る④ 初期化処理

  • LINEで送る
  • このエントリーをはてなブックマークに追加



こんにちは。システムソリューション営業本部の吾妻です。

この記事は、私たちが今までに Power Platform サポート&アプリカタログサービス をはじめとする Power Apps アプリ開発で得てきた経験をもとに、「アプリテンプレート」を作りながら、構成要素と考え方についてご紹介している連載の第4回目のものになります。

アプリテンプレートに含めたい事柄としては、

  1. マスタデータ
  2. 設定情報
  3. ログ・デバッグ(前回)
  4. 初期化処理
  5. データロード
  6. UIパーツ
を考えていますが、今回は4つ目の、アプリの初期化処理を実装する際の考え方についてご紹介していきます。


初期化処理の主な内容

キャンバスアプリが起動した直後に行う「初期化処理」として、以下のようなものが挙げられます。
 処理   内容 
 ①実行ユーザーの取得   画面上に利用者の情報を表示したり、後続処理でデータを読み込む際のキーとしてUPN※1を利用したりするために、ログインユーザーの情報を取得 
 ②設定値の読込み 
 Dataverseに用意した設定テーブルから、アプリ共通またはユーザー別の設定値を取得して、変数に格納 
 ③データの読込み  アプリの機能で利用するデータを、Dataverseのようなデータストアから取得したり、Office365ユーザーコネクタのようなコネクタを経由してサービスから取得したりする 
 ④クエリ文字列の取得と画面遷移   アプリが起動された際のURLからクエリ文字列を取得して、そこに含まれるパラメーターに応じて起動画面を変化させる 
 ⑤プログレスサークルの表示   ここまでの初期化処理を行っている間、利用者の体感速度の低下を防ぐためのUIを表示する 
※1…UPN=ユーザープリンシパル名

アプリの機能や、取り扱うデータの特性、対象とする利用者の層といった要因によって、これらのうちどの処理を初期化処理として実装するか選択する必要があります。それぞれの処理について、具体例を交えてご説明したいと思います。

まず、「①実行ユーザーの取得」では、キャンバスアプリの実行ユーザーを取得することで、アプリの利用者を特定します。
キャンバスアプリを実行する際には、必ずMicrosoft 365アカウントでログインを行っているので、User関数を利用してUPNを取得することで、一意に特定することができます(  User().Email  の結果には、SMTPメールアドレスではなく、ユーザーのUPNが返ります)。

次に、「②設定値の読込み」では、アプリのバージョン情報やテーマカラーのような、ユーザーを問わず共通の設定値や、言語設定や承認ワークフローの承認経路のような、ユーザーごとに異なる設定値を、それぞれ取得して、変数に格納します。
設定値については、アプリ内で何度も参照する可能性が高いこと、設定画面を用意してそれ以外では設定値を変更させない(設定画面で確定した時点でのみ変数に再度読込み直す)ことから、データソースに何度もアクセスするのではなく、変数をキャッシュ的に利用するために、初期化処理のこの時点に含めると良いかと思います。

一方で、「③データの読込み」で対象とするデータの場合、アプリの外側(データソース側)でデータ更新されたり、同じアプリを使っている他ユーザーによってデータ更新されたりする可能性が高いのであれば、初期化処理に含めない方が良いかもしれません。また、あまりにもデータ量が大きい場合、初期化処理がなかなか終わらないために、アプリの機能をユーザーが利用できるようになるまで待たされる時間が長くなってしまうことから、初期化処理とは別に非同期的に取得する必要があります。
例えば、郵便番号を検索するようなアプリであれば、郵便番号マスタが更新されるのは1か月~数か月に一度程度で、アプリを起動し続ける時間(長くても1日程度)よりもかなり長いので、アプリ起動時にキャッシュしてしまいたくなりますが、全都道府県の郵便番号は12万件存在するので「データ行の制限」に引っ掛かってしまいます。このため、初期化処理に含めるのではなく、Dataverse側に委任して都度検索する必要があります。
また、テキストチャットをユーザー同士で送り合うようなアプリであれば、自分以外のユーザーが任意のタイミングでデータを更新し、その更新されたチャットデータをリアルタイムに取得しなければならないので、都度データの取得を行わなければなりません。このように、対象とするデータの特性に応じて、初期化処理に含めるか否かを選択する必要があります。

続いて、「④クエリ文字列の取得と画面遷移」では、アプリが起動された際に受け取ったパラメーターに応じて起動画面や読込むデータを切り替えます。QRコードを読み取ってアプリを起動したり、Power Automateクラウドフローでメールを配布し、埋め込まれたリンクからアプリを起動したりするようなパターンでよく利用する方法です。

appuri.png
のような、アプリのGUIDとレコードのID(GUIDではないUPNや連番等のIDでも良いです)を含めたURLからキャンバスアプリを起動すると、AppのStartScreenプロパティに記述したParam関数で、レコードのIDを取得して、それをもとに遷移先の画面を切り替えるような実装とすることが多いです。
次の画像のように、アプリ内から別のアプリの特定の画面に遷移させたい場合にも利用できます。
baseapp18.png

最後の「⑤プログレスサークルの表示」は、アプリの機能のために必須の機能という訳ではありませんが、アプリ利用者の「体感速度」をなるべく落とさないために、画面表示でカバーするものです。
プログレスサークルにはアニメーションGIFやSVGといった画像ファイルを用意して、それを表示するImageコントロール、プログレスサークルとアプリ本来の画面との間に挟む半透明の矩形、表示状態を切り替えるためのコンテキスト変数を実装してあげることで実現できます。あくまでも画面表示(とユーザーの体感速度)のみに関わるもので、初期化処理そのものを高速化したり最適化したりするわけではないので、どうしてもこれ以上処理を削ることはできない時の最終手段と考えた方が良いです。
baseapp20.png


まとめ

今回は、Power Appsで初期化処理を実装する際の考慮事項についてご説明しました。初期化処理の実装方法を誤ると、利用者がアプリの機能を利用できるまでの時間が掛かり、操作性が低下してしまうことも考えられるため、慎重に検討する必要があります。
QESの Power Platform サポート&アプリカタログサービス は、アプリを開発するだけのサービスではなく、トラブルシューティング、パフォーマンス改善のような、運用を始めてから重要になってくる技術サポートについても含まれるものになっています。まずはお気軽にお問い合わせください。







このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。

  • LINEで送る
  • このエントリーをはてなブックマークに追加

お気軽にお問い合わせください。

ページのトップへ