記事公開日
最終更新日
モデル駆動型アプリ概説 ②ビジネスデータのモデル化

こんにちは。システムソリューション営業本部の吾妻です。
「モデル駆動型アプリ概説」連載の第2回目として、モデル駆動型アプリを作成する際の「ビジネスデータのモデル化」に関する手順をご紹介していこうと思います。
モデル駆動型アプリの作成手順(復習)
モデル駆動型アプリを作成するための手順として、以下のものがありました。今回は「ビジネスデータのモデル化」のために、まずDataverseテーブルを用意して、モデル駆動型アプリに埋め込むためのフォームやビューを編集(または新規追加)していきます。手順 | 内容 |
①ビジネスデータのモデル化 | 標準テーブルを利用する or 独自にテーブルを作成する ・Dataverseテーブルの列 ・フォーム ・ビュー ・グラフ ・ダッシュボード |
②ビジネスプロセスの定義 | |
③モデル駆動型アプリの作成 | |
④セキュリティロールの構成 | |
⑤アプリの共有 | |
⑥応用的なカスタマイズ |
用語
今回利用する各機能についてご紹介します。- ビュー
…モデル駆動型アプリでレコードを一覧表示するための画面になるコンポーネント。個人ビュー、システムビュー、共有ビューの3種類がある。システムビューには、簡易検索ビュー、高度な検索ビュー、関連テーブルを表示する関連付けありビュー、参照ビューの4種類が含まれる
…カスタムテーブルを作成した直後に共有ビューとして、アクティブな〇〇s、非アクティブな〇〇s、簡易検索アクティブな〇〇s、〇〇 詳細検索ビュー、〇〇 関連ビュー、〇〇 検索ダイアログビューの6種類のビューが自動的に作成される(「〇〇」はテーブル名) - フォーム
…モデル駆動型アプリで、レコードを詳細表示・編集するための画面になるコンポーネント。メインフォーム、レコード作成時に使用する簡易作成フォーム、メインフォームにリレーション先のデータを表示する簡易表示フォーム、モバイルデバイス向けのカードフォームの4種類のフォームがある - グラフ
…テーブル内のデータを可視化するための画面パーツになるコンポーネント。棒グラフ(縦/横、積み上げ)、面グラフ(積み上げ)、折れ線グラフ、円グラフ、じょうごグラフ、タグベースのグラフ、ドーナツグラフといった種類のグラフを作成できる - ダッシュボード
…1つ以上のグラフやストリーム(ビュー)、Power BIレポートによってテーブル内のデータを可視化するための画面になるコンポーネント
テーブルを用意する
フォームやビューといったモデル駆動型アプリのコンポーネントを作成するためには、まずDataverseテーブルを用意する必要があります。既存システムから移行する場合
既存システムが存在していて、かつ、リレーショナルデータベースのテーブル設計も明らかな場合は、細かな命名規則やデータ型の差異はあるものの、基本的にはDataverseテーブルでも同様の構造とするのがスムーズです。テーブル名と同名の列にGUID(一意識別子)が自動的に格納されるため、リレーショナルデータベースで言うプライマリキーの列を用意する必要はないことと、リレーションを張ったテーブルをモデル駆動型アプリで使用する場合、フォームやビューで親テーブルを参照しているUIで表示されるのがプライマリ名の列の値になるので、表示名のような値を格納している列とコードのような値を格納している列のどちらをプライマリ名の列にするか検討する必要があることの2点を意識しておく必要があります。
例えば、一般的な承認ワークフローアプリを例として、「承認」テーブルと「ユーザーマスタ」テーブルにリレーションを張る場合、モデル駆動型アプリで承認者を選択する際に、社員番号を検索・選択するのか、氏名で検索・選択するのかという要件に応じて、プライマリ名の列を設定する必要があります。
また、既存システムが存在しているものの、テーブル設計が明らかでない場合には、まずは既存システムの画面からテーブルに格納する必要があるデータをピックアップします。一般的な承認ワークフローアプリを例とすると、申請件名や添付ファイル、承認者といったデータ項目に対応するUIが画面内に配置されていると思うので、それらをDataverseテーブルの列として追加していきます。
次に、既存システムの画面にUIとして現れていない項目について、必要に応じて追加していきます。承認ワークフローの場合、承認ステータスを管理する選択肢列や、下書きフラグを管理するはい/いいえ列のようなものがあるかと思います。
Dataverseは、リレーショナルデータベースとは異なり、テーブルの列をあとから容易に追加/削除できるので、テーブル作成と同時に完全に決め切らず、必要になったタイミングで設定し直せば大丈夫です。
新規にテーブルを作成する場合
新規にテーブルを作成する場合、テーブルを設計するためには、大まかに以下の手順を取ることが多いです。- エンティティを定義
…テーブルのもととなる「エンティティ」を定義する。エンティティには、物理的なモノと紐づく「ユーザー」「商品」「在庫」といったものもあれば、「連想エンティティ(中間テーブル)」のように実装上の必要から現実世界のモノとは紐づくことなく仮想的に定義する必要があるものもある
- 列を定義
…エンティティで管理する「属性」とそのデータ型を定義する。社員エンティティであれば、姓、名、社員番号、入社日など - 制約を定義
…各列に対して、必須項目なのか(NOT NULL制約)、一意の値だけ許可するか(UNIQUE制約;重複データ検出ポリシーで設定)を定義する。
- 列を定義
- エンティティを正規化
…冗長なデータを減らすために、第1正規形→第2正規形→第3正規形と、テーブルを分割したり列を変更したりする。Power AppsやPower AutomateからDataverseレコードを扱う場合、外部結合が苦手なので、教科書通りに第3正規化まで行ってしまうとパフォーマンスが低下する可能性がある。また、外部システムからCSVファイル等でデータ連携されてくるようなシステムでは、正規化を行わずに送られてくるデータ通りのテーブル定義にしておいた方が良い場合がある - リレーション・多重度を定義
…テーブル同士の関係を定義する。会社、部署、社員の各マスタが存在する場合、会社は複数の部署を持ち、部署は複数の社員を持つため、それぞれ一対多のリレーションを設定する。Dataverseでは一対一のリレーションは設定できないこと、多対多のリレーションを設定した場合は自動的に中間テーブルが生成されることに注意が必要 - テーブルに反映
…Dataverseテーブルに、上記で定義した列などを落とし込む - 応用的な設定
…レコード数が増大した場合など、必要に応じてインデックスを定義したり、キーを定義したりして、性能改善を行うこともある
慣れてしまえば、メーカーポータルでいきなりDataverseテーブルを作り始めることもできるかと思いますが、はじめのうちは、 1. エンティティの定義 から 3. リレーションの定義 までの手順は、ホワイトボードか紙に書き起こしながら整理していくと良いかと思います。
そして、うまく定義がまとまったところでメーカーポータルを開いて、 4. テーブルに反映 として、机上の定義内容を実際にDataverseに反映させていきましょう。
ビューとフォームを編集する
Dataverseテーブルを作成して、カスタムの列を追加したら、ビューとフォームで追加した列を利用できるように編集します。従来はビューとフォームをそれぞれ編集して、1列ずつ追加していく必要がありましたが、メーカーポータルの最近のアップデートで、テーブルの概要ページに「フォームとビューを更新する」ボタンが(プレビューですが)追加され、ここから自動的にビューとフォームをアップデートできるようになりました。

個別に編集して列を追加する場合は、フォーム、ビューのそれぞれの編集画面で、パネルから列を選択して追加していきます。最低限、「メイン」フォームと、「アクティブな<テーブル名>」ビューに対して列を追加しておけば、モデル駆動型アプリから列を扱うことができるようになります。
フォームの編集画面 | ビューの編集画面 |
![]() |
![]() |
フォームをカスタマイズするための方法として、列や標準のコンポーネントを追加する以外にも、キャンバスアプリと同様にPCF Galleryなどから取得したカスタムコンポーネントを追加する機能や、インラインフレームを利用して外部Webページを埋め込む機能、Webリソースを利用してHTML/画像/JavaScriptコードを配置する機能が用意されています。
JavaScriptによるクライアントスクリプトを利用すると、(ノーコードではなくなりますが)フォームを読み込んだり、保存したり、値を編集したりといったイベントをトリガーに、任意の処理を実行させることができます。
グラフやダッシュボードを追加する
フォームとビューがあれば最低限、一覧画面と詳細/編集画面を持ち、データを閲覧・更新できるモデル駆動型アプリを作ることができますが、データを見やすい形で可視化するためのオプショナルな構成要素として、グラフやダッシュボードといったものが用意されています。グラフはテーブルに紐づいて、ダッシュボードはソリューションに紐づいて管理されます(テーブルに紐づくダッシュボードもありますが、モデル駆動型アプリのページとしてはあまり使用しません)。グラフの編集画面 | ダッシュボードの編集画面 |
![]() |
![]() |
まとめ
今回は、モデル駆動型アプリを作成する際の「ビジネスデータのモデル化」に関する手順について、簡単にご紹介しました。Dataverseテーブルを用意して、フォームとビューを定義し、グラフやダッシュボードでデータを可視化するための準備ができました。今回定義したものをもとに、次回の記事では、ビジネスプロセスを定義する方法についてご紹介できればと考えています。QESの Power Platform サポート&アプリカタログサービス は、キャンバスアプリやモデル駆動型アプリ、Power Pagesといった各種Power Platform製品群の導入、環境構築、弊社で開発したカタログアプリのご提供などを行うサービスです。まずはお気軽にお問い合わせください。
このブログで参照されている、Microsoft、Windows、その他のマイクロソフト製品およびサービスは、米国およびその他の国におけるマイクロソフトの商標または登録商標です。