モデル駆動型アプリにキャンバスアプリを表示する

モデル駆動型アプリでも、一部キャンバスアプリの自由なUIのページを作ったりしたいですよね。
そんな時の主な方法をご紹介します。
# モデル駆動型アプリでキャンバスアプリを使用する方法
モデル駆動型アプリでキャンバスアプリを使用する方法は2種類あります。
①カスタムページ
②キャンバスアプリコンポーネント

ライセンス的な話でいうと、①カスタムページと②キャンバスアプリコンポーネントは**アプリ数としてカウントされません**。
あくまでもモデル駆動型アプリの中に含まれる機能という位置づけで、１つのモデル駆動型アプリの中で何個カスタムページを作ろうとも、コンポーネントを埋め込もうと、それはモデル駆動型アプリの１個として数えられます。

# ①カスタムページ
## カスタムページとは

カスタムページは、モデル駆動型アプリ内の一つのページタイプです。
左のサイトマップに表示されます。
最大の特徴は、キャンバスアプリのような画面を作ることができるということです。
このカスタムページは、キャンバスアプリなので、モデル駆動型アプリのフォーム、ビュー、ダッシュボードページよりも柔軟性があります。 1つ以上のテーブルを含めることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0b09e8dd-39cb-7399-7fd6-04a9dbcf0960.png)

https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/model-app-page-overview

具体的に検索ページをカスタムページで作成する方法についても解説している記事がありますので、ぜひ挑戦してみてください。

https://qiita.com/skuramoto/items/7aa96ff961c2e6d18a51

## カスタムページ作成方法
モデル駆動型アプリの編集画面で[ページ]＞[ページの追加]＞[カスタムページ]から作成することができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0b296d30-1d34-435b-8d82-2938d62c1200.png)


新しく作る場合は[新しいカスタムページを作成する]を選択し、ページの名前を入れます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/80d25d0e-8a48-07b3-bb4d-fa2d5a31afd7.png)

キャンバスアプリの編集画面が表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/00a52667-585a-48fe-2dca-8639cb59ae53.png)

編集して、画面右上の公開をすると実際にモデル駆動型アプリで使えるようになります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/e465cafd-5b6e-954b-a2d7-d63d02322921.png)

モデル駆動型アプリも公開すると、実際の画面で表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/575eee3f-8beb-28c0-9ede-f000c0e82f3b.png)

## モデル駆動型アプリ以外から作りたい場合
ソリューションの中でならモデル駆動型アプリの外から作れます。
ソリューションを開き、左上の[新規]>[アプリ]>[ページ]から作ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/6e44419a-bba4-d490-e871-c0a4008fe644.png)


## 既存のカスタムページを追加する方法
既存のカスタムページを追加する場合は、[ページ]から追加する方法と、以下の方法でも追加できます。
[ナビゲーション]＞[追加]＞[サブエリア]で表示されるポップアップ画面でコンテンツタイプのドロップダウンメニューから[カスタムページ]を選択するとできます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/3883b554-e25b-f2f3-110c-b030602fcb85.png)

## 既存のカスタムページを再度開いて編集する方法
カスタムページはアプリの一覧には表示されません。その為、迷子になってしまうかもしれないので、開き方も記述しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/fc0d9158-8f2e-ef0a-1733-75736e448b5d.png)


### ①モデル駆動型アプリの編集画面
モデル駆動型アプリの編集画面で[ページ]＞(対象のカスタムページ)>[...]>[編集]
で編集ができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d79c9fe4-b178-c331-514f-2795ae93b957.png)

### ②ソリューションのページオブジェクト
ソリューションから作っている場合は以下のようにページオブジェクトからも開けます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ce0c2ca0-2e5b-7533-f4df-39f1c7837e74.png)

※自動でソリューションに含まれない場合は、以下のように[既存を追加]＞[アプリ]＞[ページ]から追加してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/5dba45b0-32bc-2b26-b218-681adeac27cc.png)


# ②キャンバスアプリコンポーネント
## キャンバスアプリコンポーネントとは
キャンバスアプリをモデル駆動型アプリのフォームの中に表示させることができるコンポーネントです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d8adec9e-41a7-20ba-089c-8de296dc4c28.png)


https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/embedded-canvas-app-add-classic-designer


## キャンバスアプリコンポーネント作成方法

フォームの編集画面にて[コンポーネント]にもキャンバスアプリコンポーネントがあるのですが、2022年12月現在、モダンデザイナーで作成できません、、、。（現在モダンデザイナーとクラシックデザイナー移行の過渡期です。）
その為、クラシックデザイナーから編集します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ad581c13-ad07-5d0c-3bfb-3007e9ee81f6.png)

その前にキャンバスアプリを埋め込むタブを追加しておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/ab5b0266-4f1b-83d0-71d6-a42283995640.png)

クラシックデザイナーを開きます。
右上の三点リーダー＞[クラシックに切り替える]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/37075670-d655-5744-2a85-f5ffefc1480b.png)

新しいタブでクラシックデザイナーが開かれます。
キャンバスアプリを挿入したいセクションを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/2de57eea-5c40-40a3-48e9-165a4cf5b9eb.png)

「Created On」などの列を選んでドラッグアンドドロップで起きたいところにもっていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/81b78a15-5b23-9722-ab95-5b19310224f3.png)


置いたコンポーネントを選択した状態で上の[プロパティの変更]をクリックしてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/7a8e1f74-c82d-c6d7-7956-db48f3070224.png)

フィールドプロパティメニューが出てくるので[コントロール]タブに切り替えてください。
この中の[コントロールの追加]を選択します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/1ca20423-190b-505f-b675-b245137f4ee0.png" width=70%>


[キャンバスアプリ]＞[追加]ボタンクリックします。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/98b64668-e873-697b-9ce6-665056ace94b.png" width=70%>

キャンバスアプリの「Web」「Phone」「Tablet」のラジオボタンをONにします。（Webで開いたとき、Phoneで開いたとき、タブレットで開いたときに優先するコントロールを選択することができます。）
左下の[カスタマイズ]ボタンをクリックしてください。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/1e6f7647-11ad-e973-e75f-6d54ead06015.png" width=70%>


キャンバスアプリの作成画面が別タブで開かれます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/985aac71-39df-c373-7e86-624eac0e3c7a.png)

もし画面サイズ・比率を変えたい場合は画面上のリボンUIの[設定]＞[表示]＞[サイズ]から帰ることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/0d67999c-ff16-1edc-2567-fc48cf536b9f.png)

ツリービューで「ModelDrivenFormIntegration」と表示されているものがモデル駆動型アプリのフォームに埋め込まれたアプリであることを示すものです。
このアプリにはモデル駆動型アプリの操作を反映させることができます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/98fa759e-e489-8e6f-87dc-8b42833502ba.png)

右上の[保存]＞[公開]をクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/1e7e9b5a-d384-d05d-5865-8d407f98f982.png)

公開したら元のフォームクラシックデザイナー画面に戻って、フィールドプロパティメニューの[OK]ボタンを押します。
<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/90aa9734-2a1e-54ed-bfd1-f4462c22d974.png" width=70%>

こちらも保存と公開をします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/7e03cbd6-76d9-a924-f6d3-02a79b018d62.png)

実際の画面では何度か再読み込みして待っていると反映されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/9fb44572-6cda-1fa4-2083-bbb52bc20968.png)

## 既存のキャンバスアプリコンポーネントを再度開いて編集する方法
アプリの一覧に出てきますのでそちらから開いて編集をしていただくのがいいと思います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2883014/d9825d90-9c3f-7cf9-5ddd-239209710c49.png)

# まとめ
モデル駆動型アプリの中でキャンバスアプリの機能を使う方法をご紹介しました。
うまくここを使いこなして、モデル駆動型アプリの良さとキャンバスアプリの良さをいいとこどりしたすてきなアプリを作りましょう！