技術情報ブログ
Dataverse
2026.03.03

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?
伊礼圭吾

こんにちは。アーティサン株式会社の伊礼(いれい)です。

Dataverseテーブル作成講座、第5回は「モデル駆動型アプリ」の作成になります!

これまで第1回から第4回にかけて、Dataverseで「テーブル」「列」「リレーション」「キー」といったテーブルとデータ構造を作ってきました。
しかし、単にテーブルを作っただけでは、実際にデータを入力したり閲覧したり、検索するのは大変ですよね。

とはいえ、Power Appsで管理アプリを作るのも時間がかかって大変ですよね…

そこで登場するのがモデル駆動型アプリです。

今回は、DataverseとPower Appsの強力な連携機能である「モデル駆動型アプリを使って、一瞬で注文管理アプリを作る」を解説していきます!

 

 


弊社はPower Platform(Power Apps・Power Automate)に関するアプリ開発や、
皆様が内製化を行う際の支援サービスを提供しておりますので、
Power Platformに関する内容でお悩みがある場合は、以下からぜひお問い合わせください。



 

モデル駆動型アプリとは?キャンバスアプリとの違い

多くの方が「Power Apps」と聞くと思い浮かべるのは、「キャンバスアプリ」と呼ばれるタイプで作られたものだと思います。

対して、「モデル駆動型アプリ」って名前は聞いたことあるけどキャンバスアプリと何が違うの?どっちを使えばいいの?と迷ったことのある方も多いのではないでしょうか。

ざっくりと以下の違いがあります。

特徴

キャンバスアプリ

モデル駆動型アプリ

画面デザイン

複雑で自由度の高いレイアウトを実現可能

ある程度固定のレイアウト

データソース

Dataverse、SharePoint、 Excel、外部のデータベース

基本的にはDataverse

得意なアプリ

デザイン性が高く、自動入力や複雑な処理を備えた高機能なアプリ

大量のデータを管理するシンプルなアプリ

開発スピード

1から画面にコンポーネントを配置してコードを書くため時間がかかる

Dataverseテーブルをもとに一瞬で完成

Dataverseを使う最大のメリットの一つが、この「モデル駆動型アプリ」とも言えます。
テーブルの設定さえしてしまえば、入力フォーム一覧画面検索機能などが、一切コードを書かずに構築することができます。

今回は、これまでに作成した「顧客」「商品」「注文」「注文明細」テーブル使って、実際に注文管理アプリを作ってみましょう!

 

ハンズオン:モデル駆動型アプリを作ってみよう

それでは、実際にアプリを作っていきます。

 

1. アプリの作成

Power Apps のホーム画面から作成を始めます。

  • Power Apps にアクセスし、左メニューの「アプリ」をクリックします。

  • +新しいアプリ」から「ページデザインで開始する」を選択します。

    Dataverse_44
  • ナビゲーション付きの空白ページ」を選択します。

    Dataverse_45
  • アプリ名を入力します。今回は「注文管理アプリ」とします。「作成」をクリックします。

    Dataverse_46

これで、モデル駆動型アプリの枠が完成しました!
ですが、これだけでは画面は空の状態ですので、続いてDataverseテーブルと接続していきます!

 

2. メニュー(サイトマップ)の追加

次に、アプリのメニューに表示するテーブルを選びます。これまでの記事で作ってきたテーブルを追加していきましょう。

  • 画面中央の「ページの追加」から「Dataverseテーブル」をクリックします。

    Dataverse_47
  • テーブルの選択画面が出ますので、検索窓を使って以下の4つのテーブルを探し、チェックを入れます。

    Dataverse_48
    • 顧客

    • 商品

    • 注文

    • 注文明細


    全てチェックできたら「追加」をクリックします!

  • すると、画面左側のナビゲーションに各テーブルが追加され、ビューとフォームが表示されます!

    Dataverse_49

これでモデル駆動型アプリにDataverseテーブルを追加することができました!

 

3. ビューとフォームのカスタマイズ

さて、アプリにテーブルを追加することはできましたが、「あれ?一覧画面に『顧客テーブルの住所』や『商品の価格』が表示されていないぞ?」と気づいた方もいるかもしれません。

実はモデル駆動型アプリでは、Dataverseテーブル側で設定した「ビュー」と「フォーム」の設定がそのままアプリに反映されます。
そのため、ビューやフォームに表示したい項目を変更したいときは、テーブルの設定画面に戻って設定を行います。

 

ビュー(一覧画面)の設定

  • 商品テーブルの設定画面を開き、「データエクスペリエンス」の「ビュー」を選択します。

    Dataverse_50
  • 一覧の中から「アクティブな商品」をクリックしてビューの編集画面を開きます。

    Dataverse_51
  • 画面左側のテーブル列一覧から、「商品コード」や「在庫数」をクリック(またはドラッグ&ドロップ)して、ビューに追加します。

    Dataverse_52

    列の並びやビューの名前が変更できるほか、ビューにデフォルトで適用されるソートやフィルターもここで設定することができます!

  • 表示したいように設定ができたら、「保存して公開」をクリックで反映されます!

    Dataverse_53

 

フォーム(入力画面)の設定

同様に、入力フォームもカスタマイズできます。

  • テーブル設定画面に戻り、「フォーム」をクリックします。

    Dataverse_54
  • フォームの種類が「メイン」となっているフォームをクリックして編集します。

    Dataverse_55
  • ビューと同じように、画面左側の列一覧からフォームに表示したい項目(価格、在庫数、カテゴリなど)を追加し、並び替えます。

    Dataverse_56
  • 同じく「保存して公開」をクリックして、フォームの編集が反映されます。

    Dataverse_57

この手順をアプリと接続している各テーブルで行えば準備は完了です!

モデル駆動型アプリ側に戻って、「プレビューを更新する」を実施してみましょう。

  • 商品ビュー

    Dataverse_58
  • 商品フォーム

    Dataverse_59

すると、ビューやフォームが設定した通りのレイアウトになっていることが確認できますね!
(※アプリ側で変更が反映されない場合は、ブラウザをリロードするか、少し待ってから再度開いてみてください)

 

4. アプリの公開

基本的な設定はこれだけで、あっという間にレコードの表示や検索、作成、編集を行えるアプリが完成してしまいました!
キャンバスアプリと比べると非常に簡単かつ、スピーディに作れますね!

それでは、アプリを利用可能にするために保存して公開しましょう。

画面右上の「保存して公開する」をクリックします。

Dataverse_60

以上で基本的なモデル駆動型アプリの作成は完了です!

 

5. 動作確認

それではさっそく、「商品」のデータを登録してみましょう。

  • 画面左のメニューから「商品」を選び、上部の「+新規」をクリックします。

    Dataverse_61
  • 入力フォームが表示されます。登録したい商品のデータを入力して「保存して閉じる」をクリックします。

    Dataverse_62
  • すると先ほど追加した商品が、設定したビューの通り表示されていますね!

    Dataverse_63

これでモデル駆動型アプリから商品テーブルを管理できる状態になりました!

キャンバスアプリと比べると、1行もコードを書かずにあっという間にテーブルの管理アプリが完成してしまいました!

顧客テーブルも同じような手順で、フォームとビューを設定すればすぐにできてしまいますね!

Dataverse_64
Dataverse_65

 

ハンズオン:リレーションを登録してみよう

これで商品や顧客の情報を管理できるようになりました!

そのまま注文データも登録できるようにしていきたいのですが、
これまでの商品テーブルや顧客テーブルと違い、フォームを作るタイミングで1つ工夫をしなければいけない点があります。

それは以下のER図のように、注文テーブルや注文詳細テーブルにはリレーションがある、という点です。

Dataverse_25_1

ということで次は、フォームからリレーション先のテーブルを選択できるようにする手順を解説していきます!

 

1. 多対1のリレーション

まずは多対1のリレーションである、注文明細テーブル商品テーブルの設定をしていきましょう。
こちらは非常に簡単です!

  • これまでと同じように、注文詳細テーブルのメインフォーム設定の画面へ進みます。

  • 追加できるテーブル列の中に「商品」という項目があるので、それをフォームへ追加します。

    多対1のリレーションの設定はたったこれだけで、他の列と特に変わりはありません!

    Dataverse_66
  • 数量など、他に入力したい列も追加できたら「保存して公開」をしましょう!

    Dataverse_67

 

2. 1対多のリレーション

続いて1対多のリレーションとなる、「注文テーブル」から「注文明細テーブル」の設定をしていきます。

  • 注文テーブルのメインフォーム設定の画面を開いて、画面左の「コンポーネント」からサブグリッドを選択します。

    Dataverse_68
  • 関連テーブルを選択するメニューが開くので、「注文詳細テーブル」を選択して、「完了」をクリックしましょう。

    Dataverse_69
  • すると、フォームに「サブグリッド」が追加されます!
    このサブグリッドというコンポーネントをフォームに追加することで、注文に紐づく注文詳細のレコードを作成したり、既に紐づいている注文詳細のレコードを表示することができるようになります!

    Dataverse_70
  • その他に顧客注文日などの列も追加できたら、最後に「保存して公開」をしましょう!

 

3. 動作確認

それでは注文データを登録できるか、動作確認をしてみましょう!

  • 画面左のメニューから「注文」を選び、上部の「+新規」をクリックします。

  • 注文情報の入力フォームが表示されるので、まずは注文番号、顧客、注文日を入力して、一度「保存」をクリックします。

    Dataverse_71
  • 保存」をクリックすると、フォームの下側に先ほど追加した「サブグリッド(明細一覧)」が表示されます!
    表示されたら、「+ 新しい注文明細」をクリックしましょう!

    Dataverse_72
  • すると「注文明細の入力フォーム」画面に遷移します!
    明細の情報を入力して、「保存して閉じる」をクリックしましょう。

    Dataverse_73
  • これで注文と注文詳細のレコードを作成し、紐づけることができました!

    Dataverse_74

このようにフォームにサブグリッドを追加してあげることで、リレーション先のレコードを作成して紐づけることができます!

ちょっとだけ手間は増えますが、それでもキャンバスアプリと比べて非常に簡単なのではないでしょうか!

 

モデル駆動型アプリのメリット

今回見ていただいたように、モデル駆動型アプリには多くのメリットがあります。

  • 開発工数が圧倒的に少ない


    アプリにテーブルを追加して、フォームとビューを設定しただけでアプリができてしまいます!

  • コードを書く必要がない


    今回のような注文管理アプリをキャンバスアプリで構築しようとすると、どうしてもPatch関数やFilter関数などのコードを書く必要がありますが、モデル駆動型アプリであればノーコードで構築できてしまいます!

  • 標準機能が豊富


    今回は紹介できませんでしたが、以下のような機能も標準で実装されています!

    • Excelにエクスポート機能で、テーブル内のレコードを出力することができます。

    • ビュー画面での列幅の調整ソートフィルタービューの作成と共有も柔軟に設定できます。

    • レコードを一括選択して削除することもできます。


デメリットとしてはキャンバスアプリのようにデザインを作りこめなかったり、入力補助機能の実装が難しいなどが考えられます。

ですが今回のようにシンプルな管理アプリであれば、モデル駆動型アプリなら1時間もかからずに作れてしまうケースもあるでしょうから、
しっかりと要件を整理したうえで、モデル駆動型アプリも選択肢に入れていただければ、よりPower Platformを活用して業務の効率化を実現いただけるでしょう!

 

おわりに

今回は、DataverseとPower Appsの強力な連携機能である「モデル駆動型アプリ」を作成しました。
ビューやフォームの設定にさえ慣れてしまえば、1テーブルあたり10分もかからずアプリが作れてしまいます!

さて、これで当初目標にしていた注文管理アプリを作成することができましたが、実際の業務を想定すると権限管理の部分が気になるのではないでしょうか?

例えば、営業部の担当者には自分の担当顧客だけを見せたい、経理部の人は全データを見れるが編集はさせたくない、といった要件はよくありますよね。

そこで、最終回となる次回のテーマは「セキュリティと権限」についてとなります。
これまで5回にかけて作ったテーブルモデル駆動型アプリを使って、Dataverseの堅牢なセキュリティ設定(部署、セキュリティロール)をハンズオンで解説していきます!

それでは!

Power Platform(SharePoint・Power Apps・Power Automate)に関する営業活動や設計、開発などを担当:伊礼 圭吾

伊礼 圭吾

🖊伊礼圭吾さんのブログ一覧はこちら

音楽と料理が生きがいです Power Platform関連を中心に、ローコードノーコード関連とかで学んだことをアウトプットしていきます。

Microsoftクラウド関連

シェアする
記事カテゴリ
最新記事
2026.03.03

Dataverse入門(5)!モデル駆動型アプリの作り方-キャンバスアプリとの違いは?

2026.03.03

Dataverse入門(4)!代替キーってどんな場面で役に立つの?-データの重複を許さない

2026.02.25

Dataverse:Dataverse入門(3)!リレーションでデータを構造化する-テーブル間の連携とは?

2026.02.18

Dataverse:Dataverse入門(2)!テーブルに列を追加してみる-列の型の決め方

2026.02.11

Dataverse:Dataverse入門(1)!注文管理アプリを作ってみる-Dataverseテーブルの作り方

SharePointEF CoreMarker Clusterer中級者DXカスタマイズ委任自動化したクラウド フロー運用開発環境filter query管理システム列StyleDLPポリシー地方自治体MLJSON書式保守性デジタル化推進複数レコードPCFギャラリー一意制約ExcelマイグレーションRANK()関数キャンバスアプリノウハウcomponentVBAフローの種類選択肢列環境sortガバナンス登録日StudioTestCopilot Studiot共有リンクテンプレート化DX推進テーマカラーPDF変換業務システムMicrosoft DataversePower AutomateFramework CoreDynamics 365 SalesDatePicker情報技術ダイアログエラーインスタント クラウド フロー参照列本番環境ソートerror notification更新者AICanvas自治体DXレポート化サイト複製作り方ダークモード資料自動作成キャンバスアプリ 違いフォーム設定C#Attribute directivesMicrosoft TranslatorDropdownメッセージIDコンポーネントエクセルスケジュール済みクラウド フローChatGPTライセンスmultiple itemエラー通知更新日生成系AITest Studio生成AI自治体APIPnP PowerShellページ承認Formulasプロパティフロー設計Power Apps 導入ビュー設定attributeO/Rマッパーマーカークラスタリングライブラリviewメールdialogerrorレスポンシブ レイアウトOpenAI環境構築手順複数項目削除変更Copilotテスト事例HTTP リクエストカスタムスクリプトドキュメント管理カラーセットテンプレート活用Power Apps 比較Power Apps モデル駆動型validationazure sql databasetailwindcssビューfirst()関数Tips復元responsive layoutオープンAIpipelineシェアポイントフォルダ外部DBlicenseテストスタジオ活用ワーケーション業務効率化IT管理カラーユニバーサルデザイン自動化事例モデル駆動型 とは注文管理アプリローコードCase式マルチテナントアクセス制限nest新機能restoreデータ行の制限チャットGPTCI/CD便利機能ゴミ箱連携添付ファイルコントロール使い方サイトブランド化名古屋ファイル保存申請システムアプリデザインNode.jsシステム構築サイトマップAngularHTTP Requestドロップダウンメニューノーコード入れ子変数Power BI引き継ぎgalleryパイプラインカレンダー完全削除接続ファイルサイズ基本知識フォントカスタマイズ体験記エンティティワークフロー自動化UI/UXVisual Studio CodeAlternate KeyサブグリッドAccessCSSBreakpointObserver承認動的リスト検索個人列退職ギャラリーDevOpsCalendarモデル駆動型データフローフルリモートワークPowerAutomateブランドセンター感想フォルダ構成設定アクセシビリティPCF代替キー業務アプリ開発InfoPathxUnitメディアクエリリマインドcollectionMicrosoft 365グループユーザー列所有者を変更スクロールMicrosoft 365Teamsセキュリティロールrecycle binアーティサンX-SP Designテーマ作成チームサイトMicrosoft Learn Docsアジャイル開発Wordテンプレート環境構築重複チェックDataverse テーブルMatTable.Net Core 3.1スマホSetコレクションセキュリティグループSharePoint Online異動コンテナ簡易在庫管理ローコード開発ビジネスルールアクセス許可Artisanスライドショーデザイン拡張コミュニケーションサイトカスタムコネクタ準委任契約業務自動化カスタムコンポーネントGUIDAngular MaterialVSCodePCForAll複数の添付ファイル送信元リストLoopショートカットキー時間外非エンジニアDataverseSharePoint Framework転職Slide showMicrosoft365サイトの種類OpenAPI請負契約効率化Power Platform CLI業務キーデータ構造.Net Core Test ExplorerレスポンシブUpdateContext承認フローメールの送信非表示Microsoftshortcut key通知体験談JavaScriptSPFx主キー比較移行要件定義MCPサーバー総合評価型入札資料作成開発手順複合キーモデル駆動型アプリSortByColumns関数Dataverse for TeamsDynamics 365ロードマップform差出人アプリdesignconcat関数ファイル勉強表示サンプルCopilot Studio社内ポータル多言語化サイト構成FAQエージェントデジタルトランスフォーメーション初心者向け拡張機能データ整合性Power AppsTypeScriptitem関数入門技術エクスポートインスタントクラウドフロー[市民開発者JSON文字制限フィルター クエリ内製化切替samplePowerAppsグループウェアMUI権限設計AIチャットボットプロポーザル方式ハウツービルドデータベース設計Power PlatformHTMLGoogle Maps初心者Itインポート自動化したクラウドフロー構築デザインフロー実行ドキュメント ライブラリ市民開発登録者X-SPNFCタグエンゲージメントMultilingualデータ移行実運用官公庁システム画像挿入プロジェクト作成ユニークキー
PageTop
ページトップに戻る