IT Hands-on Lab

小規模組織向けIT環境の構築・運用に役立つ情報を、ハンズオン形式で紹介しています。

【Microsoft Dataverse for Teams】書籍管理アプリ

Microsoft Dataverse for Teams 書籍管理アプリ

前の記事でPower Appsによる書籍管理アプリの作成例を紹介しましたが、データソースとして使用したSharePointリストには委任の問題があります。それを回避するため、「Dataverse for Teams」を使用して同じアプリを作成しました。機能や実装方法で違う点がいくつかありますので、それらを紹介します。
  • 操作環境:
    • OS:Windows 11
    • アプリ:Microsoft Teams(組織用)
  • 使用プラン:Microsoft 365 Business Premium(試用版)

 

 

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版はバーコードリーダーの部品がなく機能を実装できませんでした。また、選択肢の部品としてドロップダウンがないためコンボボックスを使用しました。
操作としては、バーコード読込機能がないため、ISBNコードを手入力して、書籍情報取得を行います。なお、書籍情報取得の機能・内部的な作りは全く変わりません(フローを呼出し、データ授受を行う)。

図表2-1 完成イメージ(新規登録)

図表2-1 完成イメージ(新規登録)

 

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

図表2-2 完成イメージ(借用処理)

図表2-2 完成イメージ(借用処理)

 

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

図表2-3 完成イメージ(返却処理)

図表2-3 完成イメージ(返却処理)

 

DVfT使用開始

[Dataverse for Teams]の使用を開始する手順を紹介します。

 

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

図表3-1 Dataverse for Teamsの使用開始(PowerApps選択)

図表3-1 Dataverse for Teamsの使用開始(PowerApps選択)

 

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

図表3-2 Dataverse for Teamsの使用開始(新規アプリ選択)

図表3-2 Dataverse for Teamsの使用開始(新規アプリ選択)

 

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

図表3-3 Dataverse for Teamsの使用開始(チーム選択)

図表3-3 Dataverse for Teamsの使用開始(チーム選択)

 

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

図表3-4 Dataverse for Teamsの使用開始(ビルド選択)

図表3-4 Dataverse for Teamsの使用開始(ビルド選択)

 

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

図表3-5 Dataverse for Teamsの使用開始(アプリ作成)

図表3-5 Dataverse for Teamsの使用開始(アプリ作成)

 

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

図表3-6 Dataverse for Teamsの使用開始(テーブル作成へ)

図表3-6 Dataverse for Teamsの使用開始(テーブル作成へ)

 

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

*予め用意されているこの列だけデータの種類を変更できません

図表3-7 Dataverse for Teamsの使用開始(テーブル作成)

図表3-7 Dataverse for Teamsの使用開始(テーブル作成)

 

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

図表3-8 Dataverse for Teamsの使用開始(テーブル作成の続き)

図表3-8 Dataverse for Teamsの使用開始(テーブル作成の続き)

 

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

図表3-9 Dataverse for Teamsの使用開始(アプリへのテーブル反映,保存)

図表3-9 Dataverse for Teamsの使用開始(アプリへのテーブル反映,保存)

 

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

図表3-10 Dataverse for Teamsの使用開始(作成したアプリとテーブルの確認)

図表3-10 Dataverse for Teamsの使用開始(作成したアプリとテーブルの確認)

 

DVfTテーブルとSharePointリストの比較

データソースについて、今回は作成手順の紹介ではなく、PowerApps版(データソースはSharePointリスト)との違いを紹介します。

 

今回使用したDataverse for Teamsのテーブルは、 SharePointリストと比べ、以下のような違いがあります。

  • 選択肢:複数テーブルで使用できるグローバルな選択肢を設定できる、ラベルと値がある
  • 複数行テキスト・URL:最大文字数の設定が必要
  • ID:SharePointリストでは内部的に列IDが予め用意されており、データを登録すると自動採番されていた。Dataverse for TeamsのテーブルにはIDのような列が予め用意されておらず、オートナンバー型の列を追加する必要がある

図表4-1 テーブル設定の違い(選択肢,1行テキスト,日付)

図表4-1 テーブル設定の違い(選択肢,1行テキスト,日付)

図表4-2 テーブル設定の違い(複数行テキスト,URL,ID)

図表4-2 テーブル設定の違い(複数行テキスト,URL,ID)

 

DVfTアプリとPower Appsアプリの比較

アプリについても、今回は作成手順の紹介ではなく、PowerApps版アプリとの違いを紹介します。

 

使用できるテンプレート

PowerApps版では、テンプレートからギャラリーアプリ(一覧・詳細・編集の三画面構成になっている)を作成できましたが、Dataverse for Teamsにはこれがありません
画面単位のテンプレートがありますので、これを使用します。

  • 一覧画面:リスト
  • 詳細画面:フォーム(編集画面を複製して閲覧モードに変更)
  • 編集画面:フォーム

図表5-1 アプリ設定の違い(テンプレート)

図表5-1 アプリ設定の違い(テンプレート)

 

委任の警告

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

図表5-2 アプリ設定の違い(委任の警告)

図表5-2 アプリ設定の違い(委任の警告)

 

選択肢項目の扱い

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

図表5-3 アプリ設定の違い(選択肢項目の値の指定方法)

図表5-3 アプリ設定の違い(選択肢項目の値の指定方法)

 

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

図表5-4 アプリ設定の違い(選択肢のItemsプロパティの記述)

図表5-4 アプリ設定の違い(選択肢のItemsプロパティの記述)

 

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

図表5-5 アプリ設定の違い(Patchメソッドによる選択肢項目の更新方法)

図表5-5 アプリ設定の違い(Patchメソッドによる選択肢項目の更新方法)

 

使用できる部品

部品については以下のような違いがあります。

  • ドロップダウンがない⇒コンボボックスを代用
  • バーコードリーダーがない⇒バーコード読込機能は実装不可
  • 入力系部品に[HintText]プロパティがない⇒Thumbnailの画像表示は部品HTMLテキストを代用

図表5-6 アプリ設定の違い(使用可能な部品)

図表5-6 アプリ設定の違い(使用可能な部品)

 

以下はサムネイルのHTMLテキストの設定イメージです。

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

図表5-7 アプリ設定の違い(サムネイルのHTMLの設定)

図表5-7 アプリ設定の違い(サムネイルのHTMLの設定)

 

日付型項目の時間の部品

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

図表5-8 アプリ設定の違い(日付型項目の時間の表示)

図表5-8 アプリ設定の違い(日付型項目の時間の表示)

 

その他の違い

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

図表5-9 アプリ設定の違い(データ項目のプロパティ名),フロー設定は違いなし

図表5-9 アプリ設定の違い(データ項目のプロパティ名),フロー設定は違いなし

 

おわりに(違いまとめ)

Dataverse for TeamsとPower Appsで同じアプリを作成した時の違いをまとめます。
アプリ上の選択肢の扱い(記述の仕方)が特徴的です。

  • データ(SharePointリストとの比較)
    • 複数行テキストやURLは最大文字数を設定する必要あり
    • 選択肢はグローバルな扱いにすることも可能、表示名と値を保持している
    • SharePointリストのID項目が必要な場合、オートナンバー型の列を用意する必要あり
  • アプリ
    • 使用できるテンプレートに差がある(ギャラリーアプリのテンプレートがない)
    • 委任の警告が出ない
    • 選択肢の扱いが顕著に異なる
    • ドロップダウンやバーコードリーダー等、使用可能部品や設定可能プロパティに差がある
    • 日付型の項目は時間の部品も用意されるため、不要なら非表示にする

バーコードリーダーが使用できない点など、お金をかけずに実装しようとすると、色々な壁にぶつかってしまい、難しいですね。

 

 

当ブログ内の連載記事

elmgrn.hatenablog.com

elmgrn.hatenablog.com

elmgrn.hatenablog.com