モデル駆動型アプリ概説 ⑧ビューとフォーム
こんにちは。DXソリューション営業本部の吾妻です。
Power Apps モデル駆動型アプリのUI は、PowerPointのような操作感で画面を作り込んでいく キャンバスアプリとは異なり 、Dataverseテーブルのビューやフォームから 自動的に作られます 。
そのため、アプリで表示させたいDataverseテーブルの数がたくさんあっても、統一感のあるUIを簡単に用意できるというのが、モデル駆動型アプリの大きなメリットです。その一方で、画面を直接編集してカスタマイズするわけではないため、画面の基になるビューやフォームと、生成されるUIの対応関係をしっかり把握しておかないと、思い通りの画面に作り替えていくことが難しいというデメリットもあります。
そこで本記事では、Dataverseテーブルの どのビュー/フォームを編集すると 、モデル駆動型アプリの UIのどの部分に反映されるのか を、実際のアプリ画面とともにご紹介していきます。
モデル駆動型アプリの作成手順(復習)
モデル駆動型アプリを作成するための全体的な手順については、今までの連載記事「モデル駆動型アプリ概説」をご覧ください。今回の記事で紹介する内容は、②、④、⑤の内容を理解したうえで読み進めていただくと良いかと思います。
今までの連載記事 |
①モデル駆動型アプリの概要 |
②ビジネスデータのモデル化 |
③ビジネスプロセスの定義 |
④モデル駆動型アプリの作成 |
⑤セキュリティロールの構成 |
⑥アプリの共有 |
⑦応用的なカスタマイズ |
ビューとは?
Dataverseでは、テーブルに含まれる 複数のレコードを一覧表示するための画面 をビューと呼びます。一般的なリレーショナルデータベースでの「ビュー(仮想テーブル)」とは異なり、データ構造ではなく画面を定義するために用いる機能です。
ちなみに、Dataverseで 仮想テーブル と言った場合には、「Microsoft Entra ID (AADUser)」テーブルのように、Dataverse外のデータをDataverseテーブルのように扱う機能のことを指しますが、Dataverseテーブルを仮想テーブルのデータソースとして利用することはできないため、リレーショナルデータベースのビューのように利用することはできません。
ビューの種類やモデル駆動型アプリでの用途を以下の表にまとめます。これ以降は、原則として、独自に用意した「申請」テーブルに対する操作を例に示すので、テーブル名は適宜読み替えてください。
語句によっては日本語表記の揺れがあるため、翻訳前の英語表記および日本語の別表記を、下線部をマウスオーバーして確認できるようにしておきます( 「アクティブな○○の簡易検索」と「簡易検索アクティブな○○」、「公開」と「共有」のように、メーカーポータルでの表記と公式ドキュメント上の表記が違っているものも… )。
ビューの種類 | 型 | モデル駆動型アプリでの用途 | 備考 | |
システムビュー | ||||
簡易検索 | 簡易検索やDataverse検索、検索ダイアログビューで検索する際に対象とする列を定義する | システム管理者またはシステムカスタマイザー(システムのカスタム担当者)のみ編集できる | ||
高度な検索 | 「レガシーな高度な検索」で結果を表示するために使われていた(Dataverse検索が有効な環境では使わない) | |||
関連 | フォームの関連タブに表示される | |||
検索 | フォームの検索列で虫眼鏡アイコンから高度な検索を開いた際に表示される | |||
共有ビュー | ||||
アクティブな申請 | 共有 | ページやサブグリッドビュー、ダッシュボードにレコードを一覧表示する(ページの場合には、アプリの利用者がビューセレクタでビューを切り替えることが可能) | カスタムテーブルを作ると、自動的に用意される | |
非アクティブなApplications | 共有 | |||
アクティブな申請の簡易検索 | 簡易検索 | |||
申請の高度な検索ビュー | 高度な検索 | |||
申請関連ビュー | 関連 | |||
申請検索ダイアログビュー | 検索 | |||
(開発者が定義した共有ビュー) | 共有 | (アクティブな申請などと同様) | アプリの開発者が作成・編集し、利用者に使わせることができる | |
個人用ビュー | ||||
(アプリの利用者が作成した個人用ビュー) | 簡易検索やDataverse検索した結果をもとに、共有ビューよりも絞り込んだ一覧を表示する | アプリの利用者自身が作成・編集し、他の人に共有することもできる |
カスタムテーブルを作ると、以下のようにビューが自動的に用意されます。このとき、「アクティブな申請」と「非アクティブなApplications」で、 日本語の表示名 と 英語のCollection Schema Name (の接頭辞がないもの)が混在していますが、他のテーブルで試しても同様になったので、仕様?のようです。
これらの システムで定義された共有ビュー を、 削除することはできません が、 リネームすることはできる ので、気になる場合は「非アクティブな申請」に直しておきましょう。
フォームとは?
ビューはテーブルに含まれるレコード群を一覧表示するための画面でしたが、 1件のレコードの内容を表示・編集するための画面 がフォームです。フォームは以下の4種類があり、それぞれモデル駆動型アプリの中で別々の役割を持ちます。
フォームの種類 | モデル駆動型アプリでの用途 |
メイン | ビューから特定のレコードを開いた際の詳細・編集画面として表示される |
簡易作成 | (ページ、サブグリッドの)ビューから別画面に遷移させずに新しいレコードを作成するための画面として表示される |
簡易表示 | フォームの中で、関連するテーブルのレコードを表示させる |
カード | ビューの中で、モバイル端末向けのコンパクトな画面を表示させる |
フォームの種類 が同じフォームを複数用意しておいて、それぞれに別々の セキュリティロール を割り当てておくことで、 アプリ利用者 (申請者、承認者、管理者など)ごとに異なるフォームを出し分けることもできます(現状ではメインフォームのみ)。
モデル駆動型アプリでの見え方
続いて、モデル駆動型アプリのどこにビューやフォームが利用されていて、どんなUIとして見えるのかを眺めていきましょう。ページ(一覧画面)
モデル駆動型アプリでページを追加する際に「Dataverseテーブル」を指定すると、テーブルのビューとフォームがモデル駆動型アプリに埋め込まれます。余談ですが、この、アプリデザイナーで新規ページを追加する機能のUIは最近アップデートされたようで、(英語版含めて)ドキュメントにはまだ反映されていませんでした。
従来のUIで「テーブル ベースのビューとフォーム」を追加するというオプションだった箇所がそのまま「Dataverseテーブル」に変わっています。
モデル駆動型アプリを再生すると表示される実際の画面は以下のようになります。モデル駆動型アプリ左端の「ナビゲーション」に並んでいるテーブル名をクリックすると、右側にそのテーブルのビューが表示されます。表示するビューは、ビューセレクタで切り替えることができます。このとき切り替えられるビューは、型が「共有」の「アクティブな申請」や「非アクティブなApplications」、個人用ビューといったものに限られます。
モデル駆動型アプリに表示されているビューに対して、 列 や フィルター (行)を編集したり、 列の幅 を変えたりすると、ビューの名前の右上にアスタリスクが表示され、「新しいビューとして保存」できるようになります。これを実行すると、現在表示されているビューが、個人用ビューとして保存されます。
こちらもおそらくUIが最近変更されており、従来はコマンドバーから操作していたものが、ビューセレクタから操作するようになっています。
検索
一対多のリレーションが設定されたテーブルにおいて、子テーブルから親テーブルを指定するために用いられるのが 検索列 です。検索列で親レコードを選択する際に、 高度な検索 を開くと表示されるビューが、 申請検索ダイアログビュー です。以下の画像では、 ビジネスプロセスフロー から 高度な検索 を開く手順を載せていますが、フォームから開く場合も同様のUIが表示されます。
| |
関連
フォームの 関連 タブには、 関連ビュー が表示されます。 | |
ページ(詳細画面)
ここからは、 フォーム が利用されるUIを紹介していきます。まずは、ビュー に表示されているレコードをどれか1つクリックした際に表示される メインフォーム です。
簡易表示(クイックビュー)
メインフォームに、リレーションが張られた親テーブルの情報も表示させたい場合に使用するのが、(親テーブル側の) 簡易表示フォーム です。子テーブルの メインフォーム に クイックビュー コンポーネントを追加することで、次の画像のように、検索列で親レコードが選択された際に、その内容を表示するUIを実装できます。
簡易作成
画面遷移せずに新規レコードを登録するためのUIを、ビューの右端に表示させる機能があります。これは、 簡易作成フォーム をもとに組み立てられています。ただし、この機能は既定では有効化されていないので、利用する場合は、対象のテーブルごとにプロパティから設定「可能な場合は、簡易作成フォームを活用します」を有効化する必要があります。
カード表示
モバイル端末などの横幅が狭い画面でモデル駆動型アプリを利用するための機能として、 カード表示 (SNSのタイムラインのようなイメージ?)が用意されています。この機能は、ビューに カードフォーム を表示することによって実現されています。このカード表示について、以前はクラシックなアプリデザイナーから、Deprecatedとなっているコントロールを追加する手順を踏まないと利用できませんでしたが、この記事を書いている時点では、特別な準備をしなくても、ビューの表示幅を変更しただけでカード表示に切り替わっています。
まとめ
今回は、Dataverseテーブルのビュー/フォームが、モデル駆動型アプリのどのUIと対応しているのかについて、画面サンプルとともにご紹介しました。モデル駆動型アプリは、キャンバスアプリとは異なり、画面を直接更新して実装していくわけではありません。そのため、キャンバスアプリでの開発に慣れてしまっていると、最初は取っつきにくいかもしれません。しかし、いったん慣れてしまえば、画面設計にコストを掛けることなく、データ設計するだけで実用的なアプリを作れるようになるので、皆さんもぜひ試してみてください。
QESの Power Platform サポート&アプリカタログサービス は、キャンバスアプリやモデル駆動型アプリ、Power Pagesといった各種Power Platform製品群の導入、環境構築、弊社で開発したカタログアプリのご提供などを行うサービスです。まずはお気軽にお問い合わせください。
このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。