Microsoft Power Platform App Maker覚書

:::note
個人的に試験前に見直す用のまとめです。
2024年1月に更新前のテスト範囲についてまとめているつもりです。
:::

## クラウドフローとデスクトップフローの違い
### クラウドフロー
PowerAutomateのフロー。
様々なコネクタを用いてSharePointやTeamsなどのMicrosoft製品やTwitterやNotionといった外部サービスとの連携による自動化するフロー。
実態はAPI。

### デスクトップフロー
PowerAutomateDesktopのフロー。
PC上のファイルやアプリケーション、Webブラウザへの操作を自動化するフロー。
いわゆるRPAのアクション。

<BR>
Excel onlineを操作するにはクラウドフローが、PC上にインストールされているExcelを操作するにはデスクトップフローが向いている。

## クラウドフローの種類
### インスタントクラウドフロー
ユーザが任意のタイミングでボタンを押すことによって実行するフロー。
能動的に操作して実行する必要がある。

### スケジュール済みクラウドフロー
事前に設定しておいた日時に自動で実行されるフロー。
毎週水曜日やイベント前日に通知する、みたいなことができる。

### 自動化したクラウドフロー
アプリケーションの特定のイベントに起因して自動開始されるフロー。
件名に【緊急】と入ったメールを受信したら実行する、など。

## ビジネスプロセスフロー
ビジネスプロセスフローは上記のクラウドフローやデスクトップフローとは大きく性質が異なる。
PowerAppsのモデル駆動型アプリにおいて、業務プロセスをフロー化したもの。
目的は自動化ではなく、可視化や標準化。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/887728/f0503966-9d13-fad3-f8d5-1dceea7f8f33.png)

ビジネスプロセスフローから（自動化した）クラウドフローを呼び出すこともできる。
業務プロセスフローと呼ぶことも。

## モデル駆動型アプリとキャンバスアプリ
### モデル駆動型アプリ
データベースのデータに基づいて作成されるアプリ。
Dataverseをモデルとして、それに連動する形で作成されるので、Dataverseが必須。
データ管理やデータ操作に特化したアプリ。
アプリで使用したいデータを選ぶと、ほぼ自動的にアプリが作成される
ビジネスプロセスフローが使用できる。
モデル駆動型アプリは組織内のユーザーのみが使用できる。

### キャンパスアプリ
ボタンやラベルを使用して、ユーザーの要求に基づいたオーダーメイドのUIを作成できる。
ExcelやSharePointを仮想データベースとして使用することができる。
バーコードリーダやカメラで撮影した画像を取り込むこともできる。
コネクタを利用した複数のシステムの統合が可能。
モデル駆動型アプリに比べて工数が大きくなる。
PowerAppsポータルを使用して組織外もユーザーにも共有できる。
モデル駆動型アプリに組み込むこともできる。
Microsoft PowerAppsライセンスを持たないユーザーもMicrosoft Dataverse for Teams内のキャンパスアプリが使用可能。

### Dynamics 365 Sales
Dynamics 365 Salesアプリは、マーケティングキャンペーン、商談、売上見込、見積作成までを幅広くカバーする営業管理ツール。
潜在顧客データをネイティブに操作できる。
完成済みのモデル駆動型アプリ。

## PowerBI
データの整理やビューやダッシュボードの作成は基本的にPowerBI Desktopで行う。
PowerBI Desktopで作成し、PowerBIへ公開・共有、モバイルでも確認可能になる。
PDF へのエクスポートは、組織内のユーザーのみが使用できる。
グラフの種類なども覚える必要がある。
[powerBIでの視覚化の種類](https://learn.microsoft.com/ja-jp/power-bi/visuals/power-bi-visualization-types-for-reports-and-q-and-a "グラフの種類と特性")

## コンポーネント
キャンバスアプリの再利用可能なパーツの集合。
コンポーネントに登録するとアプリ内で使い回せる。また、コンポーネントの定義を変更すると、アプリ内のコンポーネントを使用している箇所全てに変更を反映できる。
#### コンポーネントライブラリ
コンポーネントをコンポーネントライブラリに登録すると、別のアプリでもコンポーネントを使い回せるようになる。
#### コードコンポーネント
コンポーネントフレームワークを使用して、モデル駆動型アプリやキャンバスアプリやPowerPageで使用できるコンポーネントを開発できる。コンポーネントフレームワークを使用して作成したコンポーネントをコードコンポーネントと呼ぶ。TypeScriptで実装する。

## ソリューション
Power Platformのアプリに関わる様々なコンポーネントを一つのまとまりとしてパッケージ化し、管理、配布、展開が可能になる仕組みです。
ざっくり言うと仮想フォルダ的なもの。

関連コンポーネントをひとつのソリューションにまとめておくと便利。
ソリューション単位でコンポーネントが公開可能。
バージョン情報が付与される
zipファイルの形式で、パッケージとしてエクスポートされる為、ローカルへの保存や他の環境への移行が可能。

### 管理ソリューション(マネージドソリューション)
管理状態にあるソリューション。変更ができない。
 削除すると、エンティティやデータや定義を含む全コンポーネントが削除される。
 
### アンマネージドソリューション
管理状態にないソリューション。変更が可能。
削除しても、ソリューションの定義のみが削除され、エンティティなどの要素は残る。
新規で作成したソリューションはまずアンマネージドソリューションになる。

## 委任
PowerAppsにはFilter関数やLOOKUP関数などがあり、それらの中にはデータを検索したり絞り込む処理をアプリ側で行う委任をサポートしない関数と、データベース側で行う委任をサポートした関数がある。

委任をサポートしていない関数は処理できるレコード数に制限がある。(デフォルトでは500件、最大でも2000件)
例えば、SUM関数は委任をサポートしないので、2500件のデータに対して使用すると、デフォルトの設定では500件分の合計値を返してしまう。

## テーブル
Dataverseでは、エンティティと呼ぶことも。（厳密には別のものかも）
Dataverseでテーブルを作成する際、いくつかの種類を選択できる。

| テーブルの種類 | 解説 |
|:-:|:-|
| 標準 | データを格納し、モデル駆動型アプリのナビゲーションに追加できるテーブル。大体これ。 |
| 活動<BR>(アクティビティ) | 電話、タスク、予定などを格納する。カレンダーにエントリを作成できるアクションとも言える。モデル駆動型アプリのフォームのタイムラインに表示できる。テーブルオプションの多くは変更が許可されていない。 |
| 仮想 | 外部のデータソース(AzureやSharePointなど)のデータに接続される。 |
| エラスティック | 大規模なデータセットが含まれている場合に使用する。Azure Cosmos DBで機能する。エラスティックとは「伸縮自在」という意味。 |

テーブルの作成後は、テーブルの種類やレコードの所有権、スキーマ名（自動で設定されるテーブルの内部的な名前）は変更できない。

Dataverseのテーブルには、データへのアクセスを検証し、データの品質を確保する機能がある。
| 機能名 | 解説 |
|:-:|:-|
| ビジネスルール | どのアプリからのアクセスかに関係なく、テーブル内の複数の列間でデータを検証し、警告やエラーメッセージを発する |
| ビジネスプロセスフロー | ユーザーが確実にデータを入力し、毎回同じ手順を実行できるようにユーザーに指示する。現在はモデル駆動型アプリでのみ使用可能。 |
| リアルタイムワークフロー | ユーザーの操作なしでビジネスプロセスを自動実行する。 |
| コードを使用するビジネスロジック | コードを使用してアプリケーションを直接拡張する高度なシナリオ開発をサポートする。 |

### ビジネスルールのスコープ
| スコープ　　　　：　適用対象 |
|:-|
| テーブル　　　　：モデル駆動型アプリおよびキャンバスアプリ |
| すべてのフォーム：モデル駆動型アプリのみ |
| 情報　　　　　　：モデル駆動型アプリのみ |




## AI Builder
### 構築済みモデル
学習済みのAIモデル。すぐに使用可能。
以下の種類がある。
| 種類 | 解説 |
|:-:|:-|
|請求書／領収書処理|請求書や領収書から情報を抽出する|
|テキスト認識|写真や PDF ドキュメントからすべてのテキストを抽出する|
|IDドキュメントリーダー|パスポートや免許証から情報を抽出する|
|名刺リーダー|名刺から情報を抽出する|
|感情分析|テキスト データ内の肯定的、否定的、または中立的な感情を検出する|
|カテゴリ分類|顧客からのフィードバックを定義済みのカテゴリ(苦情、賛辞など)に分類する|
|エンティティの抽出|テキストから重要な要素を抽出し、定義済みのカテゴリに分類する|
|キーフレーズの抽出|テキストから関連性が高い語句を抽出する|
|言語検出|ドキュメント内の主要な言語を検出する|

### カスタムモデル
使用前にトレーニングが必要。
トレーニング後に公開することで使用可能になる。
構築済みモデルでは対応していない言語に対応したモデルを作成することも可能。