
- 操作環境:
- OS:Windows 11
- アプリ:Microsoft Teams(組織用)
- 使用プラン:Microsoft 365 Business Premium(試用版)
- Dataverse for Teams(DVfT)について
- アプリの完成イメージ
- DVfT使用開始
- DVfTテーブルとSharePointリストの比較
- DVfTアプリとPower Appsアプリの比較
- おわりに(違いまとめ)
Dataverse for Teams(DVfT)について
Microsoft Dataverse for Teamsは、Microsoft Teamsの組み込み型のローコード開発プラットフォームです。環境やデータ量の制限はありますが、Teams内でPower AppsやDataverseを作成・使用することができます。
PowerAppsのデータソースとしてSharePointリストを使用すると、委任の警告が出るため、データ抽出時の実装方法やデータ件数の考慮が必要になります。回避手段として、Microsoft 365のライセンス環境にて通常のPower PlatformからDataverseやSQL Server等を使用すると、別途費用が必要になってしまいます。
しかし、Dataverse for Teamsの場合は、委任の問題を回避できる上、別途費用も必要ありません。費用をかけずに件数の多いデータを扱うPower Appsアプリを作成したい場合に、採用プラットフォームとして考えても良いでしょう。
- DataVerse for TeamsとDataverseの違いに関する公式記事:
Dataverse for Teams vs Dataverse - Power Apps | Microsoft Learn
アプリの完成イメージ
先に完成イメージを紹介します。
まずは新規登録を行ってみます。
一覧画面の見た目と機能はほぼ同じです。しかし、内部的な作りについては、選択肢の扱い方やサムネイルの表示方法が違います。
編集画面については、Dataverse for Teams版はバーコードリーダーの部品がなく機能を実装できませんでした。また、選択肢の部品としてドロップダウンがないためコンボボックスを使用しました。
操作としては、バーコード読込機能がないため、ISBNコードを手入力して、書籍情報取得を行います。なお、書籍情報取得の機能・内部的な作りは全く変わりません(フローを呼出し、データ授受を行う)。

今度は、新規登録した書籍の借用処理を行ってみます。
機能は同じですが、一部内部的な作りの違う点があります。
詳細画面はギャラリーアプリのテンプレートがないため、編集画面を複製して閲覧モードに変更しました。その影響で見た目が若干違います。また、機能は同じですが、内部的な作りについては選択肢の扱い方やサムネイルの表示方法等が違います。

同じ書籍の返却処理を行ってみます。
借用処理と同様、機能はPowerApps版と同じですが、一部内部的な作りの違う点があります。
なお、詳細画面からデータの削除や変更(編集画面に遷移)を行える点や、編集画面でデータ変更時は情報取得のボタンが表示されないようにしている点は同じです。

DVfT使用開始
[Dataverse for Teams]の使用を開始する手順を紹介します。
Teamsデスクトップアプリを起動し、左メニューの[アプリ]を選択し、検索欄に[Power]と入力し、[Power Apps]が表示されたら、[開く]を選択します。

[追加]を選択します。
[新しいアプリ]を選択します。

アプリの作成先のチームを選択し、[作成]を選択します。
準備ができましたとメッセージが表示されたら、[閉じる]を選択します。

左メニューに[Power Apps]が追加されます。右クリックして[ピン留めする]を選択するのがおススメです。
[ビルド]タブを選択すると、ここからアプリを作成できるようになっています。[新規>アプリ]を選択します。

アプリ名を適宜入力し、[保存]を選択します。
アプリの画面が起動したら、左メニューの[データ]アイコンを選択します。

[新しいテーブルの作成]を選択します。
[空白のテーブルから開始する]を選択します。

[新しいテーブル]の右隣の編集アイコンを選択し、テーブルの表示名とスキーマ名を適宜入力し、[保存]を選択します。
[新しい列>列の編集]を選択します。
表示名とスキーマ名を適宜入力し、[更新]を選択します。

[+]アイコンを選択して、必要な列を適宜追加します。
テーブルの設計は後から変更もできます。右下の[保存して閉じる]を選択し、一旦アプリを閉じてみます。

アプリの設定画面に戻ると、作成したテーブルが追加されています。
右上の保存アイコンを選択し、左上の[戻る]を選択して画面を閉じます。

[ビルド>このチームがビルド済み]を選択すると、作成したアプリとテーブルが表示され、ここから設定を再開できます。

DVfTテーブルとSharePointリストの比較
データソースについて、今回は作成手順の紹介ではなく、PowerApps版(データソースはSharePointリスト)との違いを紹介します。
今回使用したDataverse for Teamsのテーブルは、 SharePointリストと比べ、以下のような違いがあります。
- 選択肢:複数テーブルで使用できるグローバルな選択肢を設定できる、ラベルと値がある
- 複数行テキスト・URL:最大文字数の設定が必要
- ID:SharePointリストでは内部的に列IDが予め用意されており、データを登録すると自動採番されていた。Dataverse for TeamsのテーブルにはIDのような列が予め用意されておらず、オートナンバー型の列を追加する必要がある


DVfTアプリとPower Appsアプリの比較
アプリについても、今回は作成手順の紹介ではなく、PowerApps版アプリとの違いを紹介します。
使用できるテンプレート
PowerApps版では、テンプレートからギャラリーアプリ(一覧・詳細・編集の三画面構成になっている)を作成できましたが、Dataverse for Teamsにはこれがありません。
画面単位のテンプレートがありますので、これを使用します。
- 一覧画面:リスト
- 詳細画面:フォーム(編集画面を複製して閲覧モードに変更)
- 編集画面:フォーム

委任の警告
SharePointリストでは、検索方法によっては委任の警告が出ていました。しかし、Dataverseのテーブルを使用すれば、この警告は出ず、件数が増えた時の影響を気にしなくて済みます。

選択肢項目の扱い
SharePointリストとDataverseのテーブルとでは、選択肢の記述が顕著に違います。
まずは一覧画面の検索結果抽出用の式を比較します。
Dataverseのテーブルの選択肢項目は、表示名と値を保持しており、status.Value in ["貸出可"]のような記述ができず、status in ['status (テーブル名)'.貸出可]のような記述になります。

同様に、選択肢(コンボボックス)自体の[Items]プロパティの記述も違いがあります。

借用・返却アイコンによるデータ更新(Patchメソッドによる選択肢項目の値の更新)についても、記述に違いがあります。

使用できる部品
部品については以下のような違いがあります。
- ドロップダウンがない⇒コンボボックスを代用
- バーコードリーダーがない⇒バーコード読込機能は実装不可
- 入力系部品に[HintText]プロパティがない⇒Thumbnailの画像表示は部品HTMLテキストを代用

以下はサムネイルのHTMLテキストの設定イメージです。
- 一覧画面:[BrowseGallery1]に部品HTMLテキストを追加し、[HtmlText]プロパティに<IMG>タグでリンク先の画像を表示します。
- 詳細画面:サムネイルのDataCard内に部品HTMLテキストを追加し、[HtmlText]プロパティに<IMG>タグでリンク先の画像を表示します。DataCardValueは非表示にしておきます。

日付型項目の時間の部品
Dataverse for Teamsのテーブル上、[日付のみ]に設定した日時型の項目についても、フィールド追加すると、時間の部品も用意されてしまいます。アプリ上不要な場合は、非表示にしておきます。

その他の違い
他にも、データ項目のプロパティ名の違い(DefaultではなくValue)等があります。
また、書籍情報取得フローの呼出しとデータ授受は全く違いがありませんでした。

おわりに(違いまとめ)
Dataverse for TeamsとPower Appsで同じアプリを作成した時の違いをまとめます。
アプリ上の選択肢の扱い(記述の仕方)が特徴的です。
- データ(SharePointリストとの比較)
- 複数行テキストやURLは最大文字数を設定する必要あり
- 選択肢はグローバルな扱いにすることも可能、表示名と値を保持している
- SharePointリストのID項目が必要な場合、オートナンバー型の列を用意する必要あり
- アプリ
- 使用できるテンプレートに差がある(ギャラリーアプリのテンプレートがない)
- 委任の警告が出ない
- 選択肢の扱いが顕著に異なる
- ドロップダウンやバーコードリーダー等、使用可能部品や設定可能プロパティに差がある
- 日付型の項目は時間の部品も用意されるため、不要なら非表示にする
バーコードリーダーが使用できない点など、お金をかけずに実装しようとすると、色々な壁にぶつかってしまい、難しいですね。
当ブログ内の連載記事