パースペクティブ サンプル アプリのアーキテクチャ (プレビュー) を理解する
[この記事はプレリリース ドキュメントであり、変更されることがあります。]
この記事では、パースペクティブ アプリで使用されるコレクションとグローバル変数と、それらを効果的に使用する方法について解説します。 検査サンプル アプリをインストールして使用する方法の詳細については、パースペクティブ サンプル アプリ を参照してください。
前提条件
この記事の情報を理解して使用するには、キャンバス アプリのさまざまなコントロール、機能、およびキャパビリティについて知る必要があります。
- キャンバス アプリでコレクションを作成および更新する
- Power Apps の Collect、Clear、および ClearCollect 関数
- Power Apps のキャンバス アプリ変数について
- Power Apps のキャンバス アプリ コントロールの追加および構成
- キャンバス アプリにスクリーンを追加し、スクリーン間を移動する
また、パースペクティブ サンプル アプリの インストール 方法と 使用 方法についても知る必要があります。
アーキテクチャ モデル
次の図は、ユーザーとシステムがこのソリューションでデータとやり取りする方法を示しています。

コネクタ
パースペクティブ アプリは、次のコネクタを使用します
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 実行の詳細
ユーザーがアプリにアクセスすると、gblAppLoaded が false に設定されます。 ユーザーの言語コードは gblUserLanguage に保存され、English - US を既定とします。
次に、ユーザーの言語を使用して、アプリ全体で使用されるローカライズ済みテキスト (ラベルやボタンのテキストなど) を colLocalization に収集します。
プロジェクト ユーザー設定テーブルからのユーザー詳細は、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 | 選択したトピックを保存するローカル変数。 |
トピック実行詳細を見つける
検索バーからディスカッション トピックを検索する際に、アプリが昇順で Dataverse から一致する結果を取得します。
ディスカッション トピックの選択について、locSelectedTopic は選択したディスカッション トピックに設定され、[ディスカッション画面] に移動します
トピック画面の追加
新しいトピックを追加
このセクションでは、新しいトピックの追加時に使用されるコレクション、グローバル変数、実行の詳細について説明します。
トピック コレクションを追加
新しい追加トピック画面で使用されるコレクション:
| コレクション名 | 内容 |
|---|---|
| colLocalization | ユーザーの言語に基づいてローカライズされたテキストのコレクションです。 |
| colTopicCoverColors | トピックのカバーの色のコレクションです。 |
| colStockIcons | ストック アイコンのコレクション。 |
| colStockImages | ストック画像のコレクション。 |
トピック変数を追加
[トピックの追加] 画面で使用される変数:
| 変数名 | 内容 |
|---|---|
| locDefaultBoardCoverColor | 既定のボード カバーの色を設定するローカル変数です。 |
| locDefaultBoardCoverIcon | 既定のボード カバーのアイコンを設定するローカル変数です。 |
トピック実行詳細を追加
トピックを追加 ボタン フォーム トピック画面で、画面は [トピック画面の追加] に移動します
必要な情報が入力されると、保存 ボタンが有効になります。
保存 ボタンを選択すると、トピックが作成されます。
[トピックの編集] 画面
トピックの編集
このセクションでは、トピックの編集時に使用されるコレクション、グローバル変数、実行の詳細について説明します。
トピック コレクションを編集
トピックの編集画面で使用されるコレクション:
| コレクション名 | 内容 |
|---|---|
| colLocalization | ユーザーの言語に基づいてローカライズされたテキストのコレクションです。 |
| colTopicCoverColors | トピックのカバーの色のコレクションです。 |
| colStockIcons | ストック アイコンのコレクション。 |
| colStockImages | ストック画像のコレクション。 |
トピック変数を編集
[トピックの編集] 画面で使用される変数:
| 変数名 | 内容 |
|---|---|
| locSelectedTopic | 選択したトピックを保存するローカル変数。 |
| locSelectedBoardColor | 選択したボード色を保存するローカル変数。 |
| locCoverImageSelected | 選択したカバー画像を格納するローカル変数です。 |
| locCustomImageSelected | 選択したカスタム画像を格納するローカル変数です。 |
| locDefaultBoardCoverColor | 既定のボード カバーの色を設定するローカル変数です。 |
| locDeleteTopicWarning | 削除ダイアログの表示方法を制御するローカル変数。 |
トピック実行の詳細を編集および削除します
ディスカッション画面から 編集ボタン を選択すると、locSelectedTopic ローカル変数は現在のトピック コンテキストで更新され、画面は [トピックの編集] 画面に移動します。
既存のレコードフィールドは、locSelectedTopic 変数から入力されます。 トピック、説明、トピックカバーなど。
ユーザーは、編集トピック画面からトピック、説明、トピック カバーなどのトピックで更新を行うことができます
すべての必須フィールドの情報を更新した後、ユーザーは 保存 ボタンを選択します。 保存プロセスは locCoverImageSelected、locCustomImageSelected 変数を使用して、カバー画像とカスタム画像が選択されているかどうかを確認します。
ユーザーが 削除 ボタンを選択すると、確認を求めるダイアログが表示され、このダイアログの可視性は locDeleteTopicWarning を使用して制御されます。
ユーザーは、分かりました チェックボックスを確認して、削除 ボタンをアクティブ化する必要があります。
削除 ボタンを選択すると、Dataverse から現在のトピックが削除されます。
削除プロセスが完了すると、アプリはトピック画面に移動します。
ディスカッション画面
新しいディスカッションの追加
このセクションでは、新しいディスカッションの追加時に使用されるコレクション、グローバル変数、実行の詳細について説明します。
ディスカッション コレクション
新しいディスカッション追加画面で使用されるコレクション:
| コレクション名 | 内容 |
|---|---|
| colSelectedTopicDiscussions | 選択したディスカッション情報のコレクション。 |
| colLocalization | ユーザーの言語に基づいてローカライズされたテキストのコレクションです。 |
ディスカッション変数
[ディスカッションの追加] 画面で使用される変数:
| 変数名 | 内容 |
|---|---|
| locSelectedTopic | 選択したトピックを保存するローカル変数。 |
| locSelectedDiscussion | ユーザーが選択したディスカッションを含むローカル変数。 |
ディスカッション実行の詳細
[ディスカッション] 画面から 新しいディスカッション ボタンを選択すると、画面は [新しいディスカッション] 画面に移動します
必要な情報が入力されると、保存 ボタンが有効になります。
保存 ボタンを選択すると、現行ディスカッション フィールドで更新される locSelectedDiscussion ローカル変数とディスカッションレコードが、トピックに対して Dataverse に作成されます。
[応答] 画面
回答
このセクションでは、応答画面で使用されるコレクション、グローバル変数、実行の詳細について説明します。
応答コレクション
新しい追加トピック画面で使用されるコレクション:
| コレクション名 | 内容 |
|---|---|
| colSelectedTopicDiscussions | 選択したディスカッション情報のコレクション。 |
| colLocalization | ユーザーの言語に基づいてローカライズされたテキストのコレクションです。 |
応答変数
応答画面から使用される変数:
| 変数名 | 内容 |
|---|---|
| locAddResponse | 新しい応答を追加するために応答ダイアログを使用するかどうかを決定するローカル変数。 |
| locEditResponse | 既存の応答を編集するために応答ダイアログを使用するかどうかを決定するローカル変数。 |
| locSelectedDiscussion | ユーザーが選択したディスカッションを含むローカル変数。 |
| locEditDiscussion | 既存のディスカッションを編集するために応答ダイアログを使用するかどうかを決定するローカル変数。 |
| locAddDiscussion | 新しいディスカッションを追加するために応答ダイアログを使用するかどうかを決定するローカル変数。 |
| locFetchDiscussion | 新しいディスカッション画面を使用する必要があるかどうかを判断するローカル変数は、新しいディスカッションをフェッチします。 |
| locNavFromTopic | ユーザーが [トピック] 画面と [ディスカッション] 画面のどちらから移動したかを判別するローカル変数。 |
| locScreenReaderAnnouncedText | スクリーン リーダーの告知を開始するローカル変数です。 |
| locResponseCreatedByUserSetting | 応答を作成したユーザーのディスカッション ユーザー設定レコードを保存するローカル変数。 |
| locDeleteResponse | 既存の応答を削除するために応答ダイアログを使用するかどうかを決定するローカル変数。 |
応答実行詳細を追加
応答画面がロードされたとき、ローカル変数 locAddResponse と locEditResponse が false に設定されます。
ユーザーが 応答を追加 ボタンを選択すると、ローカル変数の値 locAddResponse が True に設定され、[応答の追加] ポップアップが開きます
locEditResponse は、新しい応答か既存の応答を編集しているかを識別するために使用されるローカル変数です。
ユーザーがポップアップの説明に応答テキストを追加すると、追加 ボタンがアクティブになります。
ユーザーが 追加 ボタンを選択すると、応答がディスカッションに追加されます
応答実行詳細を編集
ユーザーはディスカッション画面から任意のディスカッションを選択できます。 ディスカッション画面からディスカッションを選択すると、[応答] 画面に移動します。
応答画面がロードされたとき、ローカル変数 locAddResponse と locEditResponse が false に設定されます。
locEditResponse は、新しい応答か既存の応答を編集しているかを識別するために使用されるローカル変数です
編集アイコンを選択すると、ユーザーは自分の応答のみを編集できます。
編集アイコンを選択すると、ポップアップ ウィンドウが開き、既存の応答テキストが表示されます。
ユーザーが応答を更新すると、更新 ボタンがアクティブになり、Dataverse で応答が更新されます。
応答実行詳細を削除
ユーザーはディスカッション画面から任意のディスカッションを選択できます。 ディスカッション画面からディスカッションを選択すると、[応答] 画面に移動します。
応答画面がロードされたとき、ローカル変数 locAddResponse と locEditResponse が false に設定されます。
削除 アイコンを選択すると、ユーザーは自分の応答のみを削除できます。
ユーザーが 削除 ボタンを選択すると、確認を求めるダイアログが表示され、このダイアログの可視性は locDeleteResponse を使用して制御されます。
ユーザーは、分かりました チェックボックスを確認して、削除 ボタンをアクティブ化する必要があります。
削除 ボタンを選択すると、Dataverse から現在の応答が削除されます。
関連項目
フィードバック
フィードバックの送信と表示