パースペクティブ サンプル アプリのアーキテクチャ (プレビュー) を理解する

[この記事はプレリリース ドキュメントであり、変更されることがあります。]

この記事では、パースペクティブ アプリで使用されるコレクションとグローバル変数と、それらを効果的に使用する方法について解説します。 検査サンプル アプリをインストールして使用する方法の詳細については、パースペクティブ サンプル アプリ を参照してください。

前提条件

この記事の情報を理解して使用するには、キャンバス アプリのさまざまなコントロール、機能、およびキャパビリティについて知る必要があります。

また、パースペクティブ サンプル アプリの インストール 方法と 使用 方法についても知る必要があります。

アーキテクチャ モデル

次の図は、ユーザーとシステムがこのソリューションでデータとやり取りする方法を示しています。

パースペクティブ サンプル アプリのアーキテクチャ モデル。

コネクタ

パースペクティブ アプリは、次のコネクタを使用します

  • Dataverse テーブルにデータを読み書きするための Microsoft Dataverse。

  • ユーザー プロファイル データを読み取る Office 365 ユーザー

データ モデル

次の図は、パースペクティブ サンプル アプリで使用されるデータ モデルについて説明しています。

パースペクティブ サンプル アプリのデータ モデル。

テーブル

パースペクティブ アプリでは、次のテーブルが使用されます。

テーブル名 内容
ディスカッション (MSFT_Discussion) ディスカッション テーブルには、各ディスカッションのディスカッション トピック、応答数、および賛成数が含まれています。 このテーブルには、ディスカッション応答、ディスカッション 応答の賛成、およびディスカッション トピックのテーブルを含むリレーションシップがあります。
ディスカッション応答 (MSFT_DiscussionResponse) ディスカッション応答テーブルには、ディスカッションに対するユーザーの応答と、応答に関連する賛成票の数が含まれています。 このテーブルは、ディスカッション応答の賛成票テーブルとリレーションシップがあります。
ディスカッション応答の賛成票 (MSFT_DiscussionResponseUpvote) ディスカッション応答の賛成票テーブルには、アクティブなディスカッションに対するユーザー応答賛成票が含まれています。
ディスカッション トピック (MSFT_DiscussionTopic) ディスカッション トピック テーブルには、トピックに関連するカバー画像、カバー アイコン、カバーの色とともに、ディスカッションのトピックが含まれています。
ディスカッション賛成票 (MSFT_DiscussionUpvote) ディスカッション応答の賛成票テーブルには、ディスカッションおよび応答に関連したユーザー投票が含まれています。
ディスカッション ユーザー設定 (MSFT_DiscussionUserSetting) ディスカッション ユーザー設定は、アプリにログインするたびに Power Apps スプラッシュ スクリーンを表示することに関連したユーザー設定を保存します。
ディスカッション アプリ設定 (MSFT_DiscussionAppSetting) ディスカッション アプリ設定テーブルには、元のチーム ID が保存されます。

コレクション

パースペクティブ アプリでは、次のコレクションが使用されます。

コレクション名 内容 使用場所
colLocalization ユーザー言語に基づいたローカライズ コレクションを構築するために使用します。 アプリの OnStart プロパティ
colUserSettings ユーザー設定 Dataverse レコード (存在する場合) の収集に使用。 アプリの OnStart プロパティ
colStockIcons ストック ボード カバーのアイコンのコレクションです。 すべて
colStockImages ストック ボード カバーの画像のコレクションです。 すべて
colTopicCoverColors トピックのカバーの色のコレクションです。 すべて
colGroupedResponsesByDiscussion ディスカッション トピックによってグループ化された応答のコレクション。 すべて
colDiscussionResponses ディスカッション応答のコレクション。 すべて
colMostEngagingDiscussions 応答数のあるディスカッションのコレクション。 すべて
colCharWidth 自動の幅ラベルに使用される各文字の幅のコレクション。 トピック
colAppSettings アプリを最初にインストールしたチームのチーム ID を確認するアプリの設定をチェックします。 すべて

グローバル変数

次のグローバル変数はパースペクティブ アプリで使用されます。

変数名 タイプ 内容 画面
gblAppLoaded Boolean アプリが読み込まれているかどうかを確認します。 OnStart
gblUserLanguage テキスト ログインしたユーザーの言語の確認に使用します。 OnStart
gblThemeDark Boolean チームのテーマがダークに設定されているかどうかを確認します。 OnStart
gblThemeHiCo Boolean チームのテーマがハイ コントラストに設定されているかどうかを確認します。 OnStart
gblMobileMode Boolean ホスト クライアントが Android または iOS の場合に値を true に設定します。 OnStart
gblIsManager Boolean 現在のユーザーがマネージャーである場合に格納するグローバル変数。 OnStart
gblTeamsTabContext Boolean OnStart
gblIsHostClientWeb Boolean OnStart
gblAppSetting_inputMobileOnWeb Boolean デスクトップで実行されるモバイル向けアプリのフォントを拡大縮小する変数。 OnStart
gblAppSetting_inputScaleFontsByCui この変数を使用して、すべてのフォントを一定量でスケーリングします。 OnStart
gblCurrUserEmail テキスト 現在のユーザーのメール ID を取り込みます。 OnStart
gblCurrUser レコード 現在のユーザーのレコードを取り込みます。 OnStart
gblAppSetting_inputMobile Boolean モバイル向けアプリのフォントを拡大縮小する変数。 OnStart
gblFirstRun Boolean インストール後、アプリが初めて実行されているかどうかを確認するための変数。 OnStart
gblRecordUserSettings レコード 複数のレコードが存在する場合に最も古いレコードを使用する変数。 OnStart
gblCurrentTeamId テキスト 現在のチーム ID を保存するグローバル変数 現在のチーム ID を保存するグローバル変数。 OnStart
gblIsOriginalInstallTeam テキスト 元のインストール チーム ID が現在インストールされているチーム ID と等しい場合。 元のインストール チームと同じ現在のチームを確認します。 OnStart
gblIsAdmin Boolean 現在のチームが元のチームと同じであれば、現在のユーザーがチーム所有者となります。 OnStart
gblAppColors レコード アプリのカラー値を設定する変数。 OnStart
gblAppSizes レコード アプリでサイズ値を設定する変数。 OnStart
gblOriginalInstallTeamId テキスト 現在のチーム ID を保存するグローバル変数 現在のチーム ID を保存するグローバル変数。 OnStart
gblAppStyles レコード アプリでスタイル値を設定する変数。 OnStart
gblDisplayWarning Boolean 検査の削除中に警告メッセージを表示および非表示にする変数。 OnStart

OnStart 実行の詳細

  1. ユーザーがアプリにアクセスすると、gblAppLoaded が false に設定されます。 ユーザーの言語コードは gblUserLanguage に保存され、English - US を既定とします。

  2. 次に、ユーザーの言語を使用して、アプリ全体で使用されるローカライズ済みテキスト (ラベルやボタンのテキストなど) を colLocalization に収集します。

  3. プロジェクト ユーザー設定テーブルからのユーザー詳細は、colUserSettings に集められます。 レコードが存在しない場合は、新しいユーザー設定レコードが作成されます。 これにより、スプラッシュ ダイアログの表示方法を制御します。 複数のプロジェクト ユーザー設定レコードが存在する場合、最も古いレコードが選択され、gblRecordUserSettings 変数に保存されます。

アプリの OnStart

このセクションでは、アプリを起動する際に使用するコレクション、変数、実行内容について説明します。

OnStart コレクション

次のコレクションはアプリ起動時で使用されます。

コレクション名 説明
colUserSettings エリア検査ユーザー設定テーブルからのユーザー設定のコレクション。
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。
colAppSettings アプリを最初にインストールしたチームのチーム ID を確認するアプリの設定をチェックします。

OnStart 変数

変数名 内容
gblFirstRun インストール後、アプリが初めて実行されているかどうかを確認するための変数。
gblAppLoaded アプリが完全に読み込まれたかどうかを確認するグローバル変数。
gblUserLanguage ユーザーの言語を格納するグローバル変数。
gblRecordUserSettings 現在のユーザーの最新のユーザー設定レコードを格納するグローバル変数。
gblOriginialInstalledTeamId 元のインストール済みチーム ID を保存するグローバル変数。元のインストール済みチーム ID を保存するグローバル変数。
gblCurrentTeamId 現在のチーム ID を保存するグローバル変数 現在のチーム ID を保存するグローバル変数。
gblIsOriginialInstallTeam 元のインストール チーム ID が現在インストールされているチーム ID と等しい場合。 元のインストール チームと同じ現在のチームを確認します。
gblIsAdmin 現在のチームが元のチームと同じであれば、現在のユーザーがチームオーナーとなります。
gblIsManager 現在のユーザーがマネージャーである場合に格納するグローバル変数。
locNavigationTimer ナビゲーション タイマーがtrueに設定されている場合、その時間間隔の後にアプリの設定とサイズが更新されます。
gblAppSetting_inputMobileOnWeb モバイルのフォントを拡大縮小するグローバル変数
gblAppSetting_inputMobile モバイルのフォントを拡大縮小するグローバル変数
gblAppSetting_inputScaleFontsBy すべてのフォントを一定程度拡大縮小するためのグローバル変数。すべてのフォントを一定程度拡大縮小するためのグローバル変数。
gblThemeDark チームがダーク モードで実行されている場合に保存するグローバル変数。
gblThemeContrast チームがコントラスト モードで実行されている場合に保存するグローバル変数。
gblAppColors アプリのグローバル変数に色の値を設定して、アプリの色の値を設定する変数。
gblAppSizes アプリのグローバル変数にサイズの値を設定して、モバイルおよびモバイル オン ウェブのアプリのアプリサイズを保存する変数。
gblAppStyles アプリのグローバル変数にスタイリングの値を設定して、アプリのスタイリング値を設定する変数。
locShowPowerAppsPrompt ユーザーが Power Apps プロンプトを表示する基本設定を [はい] と [いいえ] のどちらに設定したかを示すローカル変数。
locShowFirstRun アプリの現在の実行がユーザーの最初の実行であるかどうかを示すローカル変数。

[バージョン情報] 画面

このセクションでは、[バージョン情報] 画面で使用するコレクション、行の詳細について説明します

[バージョン情報] 画面のコレクション

以下のコレクションは、[バージョン情報] 画面で使用されます。

コレクション名 説明
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。

[バージョン情報] 画面の変数

変数なし

トピック画面

トピックを検索

このセクションでは、ディスカッション トピックの検索時に使用されるコレクション、グローバル変数、実行の詳細について説明します。 ディスカッション トピック プロセスの検索にはコレクションは含まれません。

トピック変数の検索

トピック画面で使用される変数:

変数名 内容
locSelectedTopic 選択したトピックを保存するローカル変数。

トピック実行詳細を見つける

  1. 検索バーからディスカッション トピックを検索する際に、アプリが昇順で Dataverse から一致する結果を取得します。

  2. ディスカッション トピックの選択について、locSelectedTopic は選択したディスカッション トピックに設定され、[ディスカッション画面] に移動します

トピック画面の追加

新しいトピックを追加

このセクションでは、新しいトピックの追加時に使用されるコレクション、グローバル変数、実行の詳細について説明します。

トピック コレクションを追加

新しい追加トピック画面で使用されるコレクション:

コレクション名 内容
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。
colTopicCoverColors トピックのカバーの色のコレクションです。
colStockIcons ストック アイコンのコレクション。
colStockImages ストック画像のコレクション。

トピック変数を追加

[トピックの追加] 画面で使用される変数:

変数名 内容
locDefaultBoardCoverColor 既定のボード カバーの色を設定するローカル変数です。
locDefaultBoardCoverIcon 既定のボード カバーのアイコンを設定するローカル変数です。

トピック実行詳細を追加

  1. トピックを追加 ボタン フォーム トピック画面で、画面は [トピック画面の追加] に移動します

  2. 必要な情報が入力されると、保存 ボタンが有効になります。

  3. 保存 ボタンを選択すると、トピックが作成されます。

[トピックの編集] 画面

トピックの編集

このセクションでは、トピックの編集時に使用されるコレクション、グローバル変数、実行の詳細について説明します。

トピック コレクションを編集

トピックの編集画面で使用されるコレクション:

コレクション名 内容
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。
colTopicCoverColors トピックのカバーの色のコレクションです。
colStockIcons ストック アイコンのコレクション。
colStockImages ストック画像のコレクション。

トピック変数を編集

[トピックの編集] 画面で使用される変数:

変数名 内容
locSelectedTopic 選択したトピックを保存するローカル変数。
locSelectedBoardColor 選択したボード色を保存するローカル変数。
locCoverImageSelected 選択したカバー画像を格納するローカル変数です。
locCustomImageSelected 選択したカスタム画像を格納するローカル変数です。
locDefaultBoardCoverColor 既定のボード カバーの色を設定するローカル変数です。
locDeleteTopicWarning 削除ダイアログの表示方法を制御するローカル変数。

トピック実行の詳細を編集および削除します

  1. ディスカッション画面から 編集ボタン を選択すると、locSelectedTopic ローカル変数は現在のトピック コンテキストで更新され、画面は [トピックの編集] 画面に移動します。

  2. 既存のレコードフィールドは、locSelectedTopic 変数から入力されます。 トピック、説明、トピックカバーなど。

  3. ユーザーは、編集トピック画面からトピック、説明、トピック カバーなどのトピックで更新を行うことができます

  4. すべての必須フィールドの情報を更新した後、ユーザーは 保存 ボタンを選択します。 保存プロセスは locCoverImageSelected、locCustomImageSelected 変数を使用して、カバー画像とカスタム画像が選択されているかどうかを確認します。

  5. ユーザーが 削除 ボタンを選択すると、確認を求めるダイアログが表示され、このダイアログの可視性は locDeleteTopicWarning を使用して制御されます。

  6. ユーザーは、分かりました チェックボックスを確認して、削除 ボタンをアクティブ化する必要があります。

  7. 削除 ボタンを選択すると、Dataverse から現在のトピックが削除されます。

  8. 削除プロセスが完了すると、アプリはトピック画面に移動します。

ディスカッション画面

新しいディスカッションの追加

このセクションでは、新しいディスカッションの追加時に使用されるコレクション、グローバル変数、実行の詳細について説明します。

ディスカッション コレクション

新しいディスカッション追加画面で使用されるコレクション:

コレクション名 内容
colSelectedTopicDiscussions 選択したディスカッション情報のコレクション。
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。

ディスカッション変数

[ディスカッションの追加] 画面で使用される変数:

変数名 内容
locSelectedTopic 選択したトピックを保存するローカル変数。
locSelectedDiscussion ユーザーが選択したディスカッションを含むローカル変数。

ディスカッション実行の詳細

  1. [ディスカッション] 画面から 新しいディスカッション ボタンを選択すると、画面は [新しいディスカッション] 画面に移動します

  2. 必要な情報が入力されると、保存 ボタンが有効になります。

  3. 保存 ボタンを選択すると、現行ディスカッション フィールドで更新される locSelectedDiscussion ローカル変数とディスカッションレコードが、トピックに対して Dataverse に作成されます。

[応答] 画面

回答

このセクションでは、応答画面で使用されるコレクション、グローバル変数、実行の詳細について説明します。

応答コレクション

新しい追加トピック画面で使用されるコレクション:

コレクション名 内容
colSelectedTopicDiscussions 選択したディスカッション情報のコレクション。
colLocalization ユーザーの言語に基づいてローカライズされたテキストのコレクションです。

応答変数

応答画面から使用される変数:

変数名 内容
locAddResponse 新しい応答を追加するために応答ダイアログを使用するかどうかを決定するローカル変数。
locEditResponse 既存の応答を編集するために応答ダイアログを使用するかどうかを決定するローカル変数。
locSelectedDiscussion ユーザーが選択したディスカッションを含むローカル変数。
locEditDiscussion 既存のディスカッションを編集するために応答ダイアログを使用するかどうかを決定するローカル変数。
locAddDiscussion 新しいディスカッションを追加するために応答ダイアログを使用するかどうかを決定するローカル変数。
locFetchDiscussion 新しいディスカッション画面を使用する必要があるかどうかを判断するローカル変数は、新しいディスカッションをフェッチします。
locNavFromTopic ユーザーが [トピック] 画面と [ディスカッション] 画面のどちらから移動したかを判別するローカル変数。
locScreenReaderAnnouncedText スクリーン リーダーの告知を開始するローカル変数です。
locResponseCreatedByUserSetting 応答を作成したユーザーのディスカッション ユーザー設定レコードを保存するローカル変数。
locDeleteResponse 既存の応答を削除するために応答ダイアログを使用するかどうかを決定するローカル変数。

応答実行詳細を追加

  1. 応答画面がロードされたとき、ローカル変数 locAddResponselocEditResponse が false に設定されます。

  2. ユーザーが 応答を追加 ボタンを選択すると、ローカル変数の値 locAddResponseTrue に設定され、[応答の追加] ポップアップが開きます

  3. locEditResponse は、新しい応答か既存の応答を編集しているかを識別するために使用されるローカル変数です。

  4. ユーザーがポップアップの説明に応答テキストを追加すると、追加 ボタンがアクティブになります。

  5. ユーザーが 追加 ボタンを選択すると、応答がディスカッションに追加されます

応答実行詳細を編集

  1. ユーザーはディスカッション画面から任意のディスカッションを選択できます。 ディスカッション画面からディスカッションを選択すると、[応答] 画面に移動します。

  2. 応答画面がロードされたとき、ローカル変数 locAddResponselocEditResponse が false に設定されます。

  3. locEditResponse は、新しい応答か既存の応答を編集しているかを識別するために使用されるローカル変数です

  4. 編集アイコンを選択すると、ユーザーは自分の応答のみを編集できます。

  5. 編集アイコンを選択すると、ポップアップ ウィンドウが開き、既存の応答テキストが表示されます。

  6. ユーザーが応答を更新すると、更新 ボタンがアクティブになり、Dataverse で応答が更新されます。

応答実行詳細を削除

  1. ユーザーはディスカッション画面から任意のディスカッションを選択できます。 ディスカッション画面からディスカッションを選択すると、[応答] 画面に移動します。

  2. 応答画面がロードされたとき、ローカル変数 locAddResponselocEditResponse が false に設定されます。

  3. 削除 アイコンを選択すると、ユーザーは自分の応答のみを削除できます。

  4. ユーザーが 削除 ボタンを選択すると、確認を求めるダイアログが表示され、このダイアログの可視性は locDeleteResponse を使用して制御されます。

  5. ユーザーは、分かりました チェックボックスを確認して、削除 ボタンをアクティブ化する必要があります。

  6. 削除 ボタンを選択すると、Dataverse から現在の応答が削除されます。

関連項目