コンポーネントのアクセスアプリスコープの動作を検証してみた

Featured image

概要

Power Apps のキャンバスアプリのコンポーネントの機能として、アクセスアプリスコープの設定が登場しました。 この機能の登場で、今までコンポーネントで宣言した変数やコレクションはそのコンポーネントを利用しているアプリ参照できなかったのですが、この機能をオンにすることで参照できるようになり、より自由なコンポーネントを作り出すことができるようになりました。

また、一見自由な機能で良いアップデートに見えますが、様々な場所から変数やコレクションが参照され、整理がつかなくなり、カオスなアプリが誕生することは容易に想像がつきます。 アプリケーションやコンポーネントの作成に慣れていない作成者は基本的にオフのままが無難です。

そのため、コンポーネントの機能として見た場合、そこまで需要のあるアップデートではありませんが、グループ化という観点から見た場合需要はあります。

今までは、グループ化したコントロールをコピペした場合、コントロールが増え整理がつかなくなり、また、1か所修正すると複数の箇所も修正しなければなりませんでした。 そういった場所に今回の機能を利用することで、修正箇所は1か所になりコントロール数も増えずに、アプリケーションの整理が容易になります。

そのため、今回の機能はコンポーネントの機能というよりも、 「高度なグループ化」 といった方がわかりやすいかもしれません。

動作確認

  1. アプリ内で作成したコンポーネントを2つ用意。
  2. それぞれ Set関数にて 「glbVar1」「glbVar2」を宣言。
  3. glbVar1 はアクセスアプリスコープを オン に設定(新機能)
  4. glbVar2 はアクセスアプリスコープを オフ に設定(今後のデフォルト)
  5. コンポーネント内とそれを利用したアプリでどのように表示されるかを確認。

以下のようにそれぞれ用意し、宣言しました。

glbVar1

glbVar1

glbVar2

glbVar2

それぞれアプリから利用すると以下のようになります。

glbVar2

glbVar1 はアプリから参照ができ表示されていますが、 glbVar2はアプリから今まで通り参照ができません。

また、この時点で、アプリ側で glbVar2 を宣言したらどうなるでしょうか? 結果は以下の通りです。

glbVar2

アプリ内で宣言、利用されている変数のみに適用され、コンポーネント内の変数には影響は与えません。

また、glbVar1 を同じくアプリから宣言すると以下のようになります。

glbVar2

コンポーネント内の変数にも影響を与えます。

まとめると以下のようになります。

glbVar2

なおコレクション等のほかの項目も同様の動きをします。

まとめ

まとめると今回の設定では以下のような動作を行うようになります。

  1. オンにすると、アプリ内からでもコンポーネント内の変数やコレクションを参照、操作することができます(これからの動作)
  2. オフにすると、アプリ内から、コンポーネント内の変数やコレクションを参照、操作することができなくなります(今までの動作)
  3. コンポーネントの新機能というよりは、高度なグループ化という印象

今回の設定はコンポーネントとして見た場合は、自由になりすぎるがゆえに、カオスなアプリを容易に生み出す危険な設定の1つであるのでアプリ作成に慣れていないユーザーは基本的にオフにしておいた方がいいです。 グループ化として見た場合は、アプリケーションの整理にもなるので利用していくのは良いと思います。

公式のブログはこちらになります。

https://powerapps.microsoft.com/ja-jp/blog/canvas-components-can-now-access-app-scope-directly/