JPPUG758 #4 Power Apps Q&A補足

[Japan Power Platform User Group 名古屋 #4](https://paandflow.connpass.com/event/159164/) に参加・登壇してきました。

# Japan Power Platform User Group 名古屋 とは？
Power Platform の仲間である、Power BI、Power Apps、Power Automate（旧 Microsoft Flow）のコミュニティ勉強会が名古屋には各々存在しておりました。

　・Power BI 勉強会＠名古屋支部／ハッシュタグ #PBIJP758
　・PowerApps + Flow アプリ作成研究所 in 名古屋／ハッシュタグ #EasyApp758

はじめに誕生したのは Power BI 勉強会＠名古屋 で、調べてみると2018年2月に勉強会を実施しています。当時の[コンパスはこちら](https://powerbi.connpass.com/event/75992/)ですね。当方、初の勉強会主催でした。

その後、東京で Power Platform User Group （略称 JPPUG）が誕生して、強力なコミュニティとして発展してきました。昨年の Ignite で Power Virtual Agents が新たに加わり、さらに勢いが加速していることを感じた名古屋の運営メンバー。相談した結果、装いも新たに「Japan Power Platform User Group 名古屋（略称：JPPUG758）」として再発進をすると決めました。冒頭の勉強会は、その記念すべき第1回（EasyAppとしては4回目なので、#4）です。

# この記事は？
前述、JPPUG758 #4 で当方が担当したセッションについての補足です。セッション内容は「参加者皆さんの困ったをその場で解決する（カモ？）」というテーマです。最終セッションだったのですが、それまでに Sli.do でQ&Aも集めていたので、それもまとめて運営や参加者の皆さんと協力して回答しました。そんなセッションのなかで「当方が回答した内容を少し補足しておこう」という試みです。
”実はよくわからなかった”状態で帰ってしまった参加者の方々の一助になれば幸いです。

# JPPUG758 #4 QA補足
さて、本題のQ&A補足です。
## Power Apps の有償ライセンス
下記URLへアクセスいただくと価格が把握できます。

https://powerapps.microsoft.com/ja-jp/pricing/

「単一アプリの実行」と「無制限のアプリの実行」の2種類が存在しています。注意点としては「単一アプリの実行」ライセンスでは”2つのアプリと1つのポータル”しか作れません。詳しくは、提供企業の営業さんなどにご確認をお願いします。
利用するアプリと利用人数、データソースの種類によって組み合わせが変わりますので「よくわからん！」という方はお仕事としてサポート可能な方々へお問い合わせください(;^ω^)

## 委任の警告について
Power Apps で関数を書いた際に三角に！マークが出てくるアレです。「委任されない警告」です。まず、公式のDocsをご確認ください。データソース、および利用する関数や式によって委任される・されない、がありますので利用しているデータソースにあわせてリンク先を辿ってください。

[キャンバス アプリでの委任について
](https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/delegation-overview)

Power Apps チャンピオンの [@KodamaJn](https://twitter.com/KodamaJn) さんが書いた記事が非常にわかりやすいので、こちらもあわせて参照ください。（そして、勉強になったと思ったら”いいね”しましょうネ！）

[PowerAppsで遭遇する５つの委任問題とちょっと強引な回避方法](https://qiita.com/KodamaJn/items/4341865e6784847a005d)

非IT系の方だと「データ？委任(。´･ω･)？」となるかと思います。上記の”怒れるDB”の図がとても参考になるので、イメージだけでも持ってもらうと良いかと。

なお、記事投稿時点で、SharePoint Online の List をデータソースに利用した場合、参照列はほぼ必ず「委任されない警告」が表示されます。ご注意ください。

## コンテキスト変数(ローカル変数) と グローバル変数
まず、こちらも公式Docsの紹介から。

[変数の種類](https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/working-with-variables#types-of-variables)

プログラミング経験のある方であれば”スコープ”と言えば伝わるかと思います。しかし、Power Platform は市民開発者もアプリ作成ができる素敵な道具なので、全ての方が把握しているとは限りませんよね。ってコトで、スコープのイメージを簡単にイメージ化しましたので下記を参照ください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/183354/cdb61082-4374-ddf2-54a0-e4776683e4db.png)

　・コンテキスト変数 ＝ その画面だけで利用可能
　・グローバル変数 ＝ そのアプリ全体で利用可能

グローバル変数は便利な半面、別の画面で保持している値を変更されると全てに影響が発生します。チョッとしたミスで事故が起こる可能性がありますよね。そのため「コンテキスト変数で済むならソレを使う」という判断基準を覚えていただければOKだと思います。グローバル変数は、例えば「アプリ起動時間を全Screenで利用したい」などアプリ全体で必要なモノを格納する場所だと思ってください。※初学者向けの指針なので、中級者以上の方々は、各々の適切だと思う判断でどうぞ

## コンテキスト変数を別の画面に渡せないの？
Navigate 関数を利用すれば実現可能です。

[Navigate](https://docs.microsoft.com/ja-jp/powerapps/maker/canvas-apps/functions/function-navigate#navigate)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/215892/314615c0-15ef-fe34-5e65-2c944499f9ad.png)


```
Navigate(スクリーン名, 画面切替, {変数名:値})
```

よく考えると、グローバル変数で管理したい値は極限まで少なくできると思います。繰り返しになりますが「コンテキスト変数で済むのであればソレにする」という方針が基本です。

# さいごに
後１つQ&Aを補足したいのですが、長くなってきたので次回をお待ちください！

今回の勉強会は、社内情報システム部門や個人事業主なども含めたエンドユーザーサイドの参加者が半数以上となり、運営側としては非常に感謝と感激をしておりました。名古屋のIT系勉強会は、参加者が同業者ばっかりになりがちなのです。このエンドユーザーの皆さんから頂戴した勢いを、今後も維持していきたいな、と強く思う次第です。

JPPUG758 として再出発しました！としていますが、コミュニティ勉強会としては以前とやってるコトはあんまり変わりませんｗ
そして、これからも不定期ながら名古屋を中心に中部地区で Power Platform に関するコミュニティイベントを計画していこうと考えております。興味のある方は、記事冒頭の Connnpass からメンバー参加いただければ幸いです！


それでは、皆さま。素晴らしい Power Platform Life を！