Power Apps のモダンコントロールを使ってみよう


# はじめに

Power Apps でモダンコントロールを利用できるようになりました。

https://powerapps.microsoft.com/en-us/blog/modern-controls-coming-to-canvas-apps/

上記サイトでこれまでのコントロールと比較されていますが、端的に言うと、格好いい、ナイスなデザインで、パフォーマンスやアクセシビリティの観点でも改善があるようです。

以下、違いの例です。個人的に、従来のコントロール (モダンと比較して、クラシックコントロールとも呼ばれます) より、モダンコントロールの方が格好いいと思います。

## ボタンコントロールの違い
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/6eca699a-8e39-1d2e-3442-9f9313310b81.png)

## 日付の選択コントロールの違い

■クラシックコントロール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/407687cc-eb98-3896-b9a1-681865c4c77c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/72ed20f1-7456-b0f5-8960-ddbfd0cdbe2b.png)

■モダンコントロール

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/593ce5fd-992f-1ed5-55fb-e65b194cd350.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8d6d56b6-13a1-2d6d-087d-3962cf099353.png)

また、クラシックコントロールには存在しないコントロールもあるため、個人的に今後使いそうだなと思うコントロールを中心に、モダンコントロールについて紹介します。

# 利用の仕方

まず、利用の仕方についてです。
アプリの [設定] より、以下の設定をオンにします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/efa775cf-cdbd-6c9b-63bb-d2b048d8b6f9.png)

こちらにより、モダンコントロールを追加できるようになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/a376928e-75bd-a4cf-4e08-89822aba209d.png)


# リンクコントロール

以下からリンクコントロールを追加できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/07c34678-4489-575d-7a85-79645d75cfc2.png)

見た目は以下のような感じです。インターネット上でのリンクの埋め込みというと以下のように、青色の文字にアンダーバーがついていることが多く、直感的にこちらはリンクだと感じる人も多いと思います。
そのため、今後、アプリ内にリンクを埋め込みたい際に使えそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/74d95bd1-2c80-97b4-749a-3109a0934901.png)

使い方は簡単で、以下のように、`[URL]`プロパティに URL を入力するだけで、リンク先を開くことができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/9fe7a6c8-518d-1341-4983-bab6b2176d9b.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ea4c8607-0612-ffdd-553f-7fd2b1ba9e35.png)

これまで、同じことをやろうとすると、例えば、以下のようにアイコンを用意して、`[OnSelect]`プロパティに Launch 関数を利用する必要がありました。もちろん、この方が分かりやすいケースもありますが、リンクコントロールに置き換えれるケースもあると思っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/678afdf6-2c75-ce4d-7edd-031e6b009319.png)

# Spinner コントロール

何か処理をしている際などにこういった画像を表示したいという方は多いのではないでしょうか。
特に、処理に少し時間を要す際は、利用者に知らせるため、また、ボタンを連続で押されるのを防止するため、私も良く使います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/da16c87e-4357-527e-4503-30fa31bc739c.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/bbbba495-dfc2-91a9-fd5f-b6e6bb957caf.png)

これまでは、例えば、以下のようなサイトで何かしら準備していたため、標準のコントロールに追加されたのはとてもありがたいです。

https://loading.io/

こちらのプロパティでサイズ変えれるみたいですが、Huge にしてもあまり大きくならないので、もう少し大きくできるようになると嬉しいです。あと、外観の選択肢ももう少し増えてくれると嬉しいですかね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2309cb60-1364-701d-db24-54cfe047b946.png)

# タブ一覧

これも非常にありがたいです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7d99ff01-2a3d-b588-967d-dd443f9a7ed6.png)

これまで、タブやメニューを作ろうと思うと、例えば、以前書いた以下のようなアプローチのように、ギャラリーを利用していました。

https://qiita.com/Takashi_Masumori/items/0f6c7e60787561d9a22c

利用の仕方ですが、`[Items]`プロパティに以下のようにテーブルを入れるだけです。
データソースを指定してもいいと思います。例えば、画像とかを入れたい時は、SharePoint 

```
Table(
    {
        ID: 1,
        Label: "申請概要"
    },
    {
        ID: 2,
        Label: "出張情報"
    },
    {
        ID: 3,
        Label: "交通費、ホテル"
    },
    {
        ID: 4,
        Label: "添付"
    }
)
```

すると、以下のようなナイスなタブが出来上がります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/bf8c8eff-6667-e345-d100-1d793439650a.png)

個々の項目のサイズ (ギャラリーでいうとテンプレートのサイズ) の調整はこちらから行うみたいですが、Large にしてもそれほど大きくならなかったため、もう少しサイズの調整が出来ると嬉しいですかね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/2e6c0826-fc60-d36d-c45d-cfb7ec33af03.png)

また、こちらで選択した情報について、ギャラリーのような感じで取得できるため、こちらをベースにページを切り替えたりできそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/918684f0-4714-6a61-d4a0-b92059777eee.png)

# Progress Bar コントロール

個人的にプログレスバーを作りたいという相談をいただくことよくありますし、こちらも非常に需要のあるコントロールと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/57113df3-fa50-ef4f-5c9d-6ad89ab52da8.png)

これまでは、ギャラリーで作ったことがありますが、標準のコントロールで実現できるのはありがたいですね。

使い方は非常にシンプルで、まず、以下でプログレスバーのサイズの調整をします。個人的に Large の方がいいかなと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/109f1158-efcd-ac8d-c665-7e7dc3649522.png)

色はこちらで選択します。今のところ 4 択のようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/ba6def49-073a-86e1-c994-47f19704b51c.png)

あとは、`[Value]`プロパティでプログレスバーの値を指定します。100 の時は以下のように全て完了しているような見た目になります。そのため、いくつか入力項目がある際に、こちらの Value を段階的に変更してあげる (変数を利用して) のが良いと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/27ff8fb0-2605-2660-1f80-a98a7b899630.png)

例えば、多段階承認のように、プログレスバーに承認者の顔写真や名前を入れたい場合、ギャラリーで自作するか、誰かが作成して共有しているコンポーネントを利用するのが良いと思います。

# まとめ

今回は、Power Apps のモダンコントロールについて、クラシックコントロールにはないものを中心に紹介してきました。これまでは、自作するなど、何かしら代替の手段を用いる必要があったコントロールが標準のコントロールとして追加されたため、個人的にとても嬉しいアップデートだと思います。

これらを活用することでアプリの作成が更に楽になると思いますし、今後のアップデートも非常に楽しみです。