はじめに
Power Platformには"環境変数"といわれるソリューションにて定義できる変数があります。
環境変数の恩恵を最も感じることができるのはALMを実行する際や、アプリケーションを他の環境に展開する際かと思います。
その他にも認証情報や固定値などを環境変数として定義しておいてPower AppsやPower Automateで利用する。なんて使い方もあります。
今回はそんな環境変数をPower AppsやPower Automateで利用する方法と、どの値が参照されることになるのかについて簡単にまとめています。
環境変数とは
詳しくは最初でも触れた公式ドキュメントを見てもらいたいですが、そもそも環境変数とは?というのを簡単に触れておきます。
環境変数とはソリューションにて作成することのできる変数でPower AppsやPower Automateなどで利用することが可能です。
どんなときによく利用されるかというと、ALMなどのアプリケーションを他の環境に展開する際ですね。(もちろん手動の場合も)
アプリケーションを他の環境に展開するのでよくあるのは、テスト環境から本番環境に展開する場合かと思います。
このときデータソースの接続先が異なったり、メールの送信先が異なったり、メッセージが異なったりなどなどすることになるかと思います。
この変更を展開先の環境で一つ一つ変更していくのは手間ですし、なにより折角テストしたアプリケーションに変更を加えるのはあまり良いこととはいえません。
それにPower Platformのパイプラインで展開すると対象のソリューションはマネージドソリューションとして展開されるので、そのソリューションを直接変更することはできなくなってしまいます。
こんなときに環境変数が役立ちます。
ソリューションの展開前に環境変数として作成した変数を変更することができますので、ここで接続先などの値を変更することが可能になります。
Power Platformのパイプラインを用いて環境変数の値を変更する機能については過去にこちらで触れているので気になったら見てみてください。
現在環境変数には以下6種類のデータ型があります。
- 10進数
- JSON
- テキスト
- はい/いいえ
- データソース
- シークレット

似た機能として"接続参照"というものもありますので興味のある方はこちらも併せてチェックしてみてください。
環境変数を利用する
環境変数を作成する
環境変数は作成したいソリューションを開いて、 新規 > その他 > 環境変数 から作成することができます。


例えば以下のように定義することができます。

環境変数には"既定値"と"現在値"の2種類があります。
画面上では環境変数の説明として以下のように記されています。
既定値: 既定値は、環境に現在の値が設定されていない場合に使用されます。
現在値: 環境の現在の値を設定して、既定値を上書きします。
ただ少し気を付けなくてはいけないのはこれはPower Automateやキャンバスアプリでデータソースとして利用する場合ですね。
利用方法と取得できる値を確認していきましょう。
今回は以下のような環境変数を利用します。

"EnvtestSPOSite"にはSharePointサイトを、"EnvtestSPOList"にはSharePoint リストの値をそれぞれ設定しています。
Power Automateで利用する
Power Automateで環境変数を利用する場合は動的な値から選択することが可能です。


SharePoint リストから値を取得するような場合はこんな感じ。

実行するとそれぞれ以下のような結果になります。
(SharePointから値を取得する結果は省略)



既定値しか設定されていない場合は"既定値"の値が。
現在値しか設定されていない場合は"現在値"の値が。
既定値と現在値の両方が設定されている場合は"現在値"の値が。
それぞれ設定されていることが確認できます。
ドキュメントの説明の通りですね。
Power Appsのキャンバスアプリで利用する
Power Appsで利用する場合は、Power Automateの動的な値のようなものがないので、環境変数が定義されているDataverseテーブルを参照する必要があります。
先ほど定義した環境変数は"Environment Variable Definition"および"Environment Variable Value "にて定義されています。

従ってPower Appsのキャンバスアプリで環境変数の値を参照する場合はDataverseのテーブルを参照する必要がある。つまりDataverseを参照可能なライセンス(Power AppsにPremiumライセンスなど)が必要であるということですね。
"環境変数についてよく寄せられる質問"にて以下のように記載されていますが、注意が必要ですかね。

現在値を取得する
環境変数の"現在値"を取得したい場合は"Environment Variable Values"テーブルを参照します。
例えば以下のような式で参照可能です。
LookUp('Environment Variable Values', 'Schema Name' = "new_CurrentValueOnly", Value)
以下それぞれの取得結果です。

"DefaultValueOnly"は現在値が設定されていないので"現在値"は取得できません。
"CurrentValueOnly"は現在値のみが設定されているので、設定されている"現在値"が取得されます。
"DefaultValueCurrentValue"は既定値と現在値の両方が設定されていますが、"Environment Variable Values"テーブルでは現在値が設定されていますので"現在値"が取得されます。
そもそもの話として、現在値が設定されていない場合は"Environment Variable Values"テーブルにレコードが設定されないです。



既定値を取得する
環境変数の"既定値"を取得したい場合は"Environment Variable Definitions"テーブルを参照します。
例えば以下のような式で参照可能です。
LookUp('Environment Variable Definitions', 'Schema Name' = "new_DefaultValueOnly", 'Default Value')
以下それぞれの取得結果です。

"DefaultValueOnly"は既定値のみが設定されているので、設定されている"既定値"が取得されます。
"CurrentValueOnly"は既定値が設定されていないので"既定値"は取得できません。
"DefaultValueCurrentValue"は既定値と現在値の両方が設定されていますが、"Environment Variable Definitions"テーブルでは現在値が設定されていますので"既定値"が取得されます。
環境変数で設定したデータソースに接続する
今回SharePointに関する環境変数を作成しましたので、SharePointへの接続を行います。
- 接続からSharePointを選択します。
- サイトを選択する際に、「詳細設定」を選択して作成した環境変数を選択します。

- リストを選択する際に、「詳細設定」を選択して作成した環境変数を選択します。

これで環境変数で設定したSharePointの接続先へ接続可能です。

なおDataverseに接続したい場合は、テーブルを選ぶ前に「環境の変更」を選択して、「詳細設定」から環境変数を選択します。


おわりに
環境変数の動作について簡単にまとめました。
環境変数の操作としては他にも"シークレット"というものがありますが、まずはこれらの動作について理解してソリューションを活用していきましょう。
