AI (Copilot) の力で実現 ! 点検業務を 1 時間でアプリ化 & 承認ワークフローで完全デジタル化しよう

# はじめに
備品の棚卸や設備の点検といった〇〇点検、皆様の組織では行われているでしょうか。
行われている場合、それはどのように運用されているでしょうか。
もし紙で運用されている場合、下記のような流れで実施されているのではないでしょうか。

|#|実施部門|作業内容|
|---|---|---|
|1|現場部門|管理部門から提供されるチェックシートを印刷|
|2|現場部門|点検を実施し、結果を記入・押印|
|3|現場部門|承認者に回送し確認・承認依頼を口頭・メール・チャット等で連絡|
|4|現場部門|承認者は内容を確認し、問題なければ押印し返却|
|5|現場部門|承認されたチェックシートを管理部門に提出|
|6|管理部門|各部から集まったチェックシートを Excel に転記しマージ|
|7|管理部門|マージ結果を全社共有し、進捗管理・随時再集計し更新|

本日は、このような紙の運用から脱却したい現場部門・管理部門の方々に向けた〇〇点検アプリと承認ワークフローの作成を Step by Step で図解していきます。
この記事を参考にしていただくと、次のようなアプリ・ワークフローを 1 時間ほどで作成できます。

- モバイル対応した現場向けアプリ
- モバイル対応した管理部門向けアプリ
- 承認ワークフロー

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/e9f8f4be-c45a-906d-9bd4-07ef95834dd5.png)

作成したアプリ・ワークフローを活用することで、前述の業務の流れを下記のようにシンプルかつ効率化できます。

|#|実施部門|作業内容|
|---|---|---|
|1|現場部門|現場向けアプリを起動し、点検内容を入力・登録|
|2|(自動処理)|承認者に登録内容が通知され、メールや Teams 上で内容を確認・承認|
|3|管理部門|管理部門向けアプリで、進捗確認|
|4|管理部門|部門別の進捗を BI 等で可視化し、BI レポートを全社共有<BR>※本記事には含まれません|

**少しチャレンジしてみようかなと思った方は、是非本記事を参考にアプリ作成に取り組んでみてください。**

本記事は、2023 年 11 月時点の情報です。

# Agenda
1. [はじめに](#はじめに)
1. [前提条件の確認](#前提条件の確認)
1. [サインイン](#サインイン)
1. [テーブル作成](#テーブル作成)
1. [管理向けアプリ作成](#管理向けアプリ作成)
1. [現場向けアプリ作成](#現場向けアプリ作成)
1. [承認ワークフロー作成](#承認ワークフロー作成)
1. [動作確認](#動作確認)
1. [Appendix](#Appendix)

# 前提条件の確認
アプリ作成に着手するにあたり、本記事での前提条件を明確にしておきましょう。
### 今回のシナリオ
今回は、生産ラインにおける設備点検を題材とします。

::: note info
列 (項目) 数や列 (項目) 名を変更することで、他の業種やシナリオにも流用可能です。
ご自身の組織の業務で流用できそうな課題がないか、想像しながら是非アプリ作成に取り組んでみてください。
:::

### 準備するもの
1. 管理したい情報を纏めた Excel ブック (**テーブルとなっている必要があります**)
    下記のようなデータを準備します。サンプルデータは、**[こちら](https://aka.ms/nayoshik/qiita/20231113)** から DL 可能です。
    - 日本語ヘッダー版
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f64a5bc7-d3f9-8107-3ca4-5dc9039c1d12.png)
    - 英語ヘッダー版
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/e1c5ebc6-ada5-a965-1874-6c1f6f19bb7b.png)
    - Excel ブックのテーブル設定は、下図を参照して設定しましょう。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/0dc07a24-e1e6-f711-715e-4a9ea1eebba2.png)
1. Power Platform 及び Teams を利用できるライセンスおよび環境
    - Office 365 E1 以上のライセンス (記事内では、Micorosoft 365 E5 を利用しています)
    - Power Apps のスタンドアローンライセンス (推奨は Power Apps Premium)
    - Microsoft Dataverse を利用可能な環境 (既定環境ではない環境をご準備ください)
1. Microsoft Edge
    本記事では動作要件を満たした Windows 11 Enterprise の Microsoft Edge を利用していますが、macOS でも基本的な操作は同じです。
    詳細な動作要件は、**[こちら](https://learn.microsoft.com/ja-jp/power-apps/limits-and-config)** をご確認ください。

:::note info
2 のライセンスおよび環境をこれから準備される方は、**[Microsoft 365 開発者プログラムに参加して Power Apps, Power Automate の開発者環境を取得しよう](https://qiita.com/nayoshik/items/3a5dcb3c0a531ad534d0)** を参考に環境を作成しましょう。
:::
:::note warn
本記事では Power Platform の AI 機能 (Copilot) を効果的に利用できるよう、以下の環境・設定でアプリ作成を行っています。
- **米国リージョン** の環境
- 言語設定を **英語** に設定 (一部)

米国リージョン以外で Copilot 及び 生成 AI の機能を利用する際は、**[こちら](https://learn.microsoft.com/ja-jp/power-platform/admin/geographical-availability-copilot)** の公開ドキュメントを参考に有効化を行いましょう。有効化を行うためには、グローバル管理者または Power Platform 管理者である必要があります。
:::

# サインイン
1. **[https://make.powerapps.com/](https://make.powerapps.com/)** にアクセスし、予め準備した Office 365 テナントにサインインし Power Apps にアクセスします。
1. 下図を参考に、予め準備した環境に切り替えます。
    本記事では個人用開発環境を利用し、各種作業を進めます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/cb867dfa-959e-3483-415d-2fd575f6721b.png)
1. 右上の歯車アイコンをクリックし設定を開いたら、[Power Apps の設定] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/ca653887-da41-4840-9387-f93bee104d3c.png)
1. [言語と時刻] の [言語の選択] で [English] を選択します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/13792c3b-d510-709d-c81f-1a9415488162.png)
1. 表示言語が英語になったことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/1e4d794e-d94a-ad9f-fba0-2b1b3dcd4483.png)

::: note info
既に所属組織で Office 365/Microsoft 365 をご利用になっている場合、前述の **[Blog 記事](https://qiita.com/nayoshik/items/3a5dcb3c0a531ad534d0#microsoft-365-%E9%96%8B%E7%99%BA%E8%80%85%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0%E7%94%A8%E3%83%86%E3%83%8A%E3%83%B3%E3%83%88%E3%81%B8%E3%81%AE%E6%8E%A5%E7%B6%9A)** を参考に Microsoft Edge の InPrivate ウィンドウを開いたうえでサインインしましょう。
:::

# テーブル作成
点検結果を記録するテーブルを、Copilot を利用し Microsoft Dataverse に作成します。
## テーブル作成
1. [Table] をクリックし、[Upload an Excel file] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f08b40a2-5bec-376b-f1a7-bcaf1ec223e5.png)
<!---    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/e4a748d3-cbfd-90b9-ced2-1d73a9f34ab1.png) --->
1. 予め準備した Excel ブックをアップロードします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/1a93fdd3-0e41-3db7-5ad0-29ef4a26786b.png)
<!---    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/b8404945-c381-a474-e2a5-b1066b96553c.png) --->
1. 日本語ヘッダー版を利用し図のようなメッセージが表示されたら [Cancel] - [Leave and discard table] の順にクリックし、再度英語ヘッダー版をアップロードします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/39d1a98f-01eb-1f31-7207-8c3dac26f5cf.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/14516290-0449-76e5-33b2-92a3aef30c0d.png)
1. 前項のようなメッセージが表示されていないことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/232611e9-0437-cddf-bcba-2f4ec1b85ad1.png)
1. 下図・表を参考に、各列の型を定義します。(列名は、後工程で日本語に変更します)
    - 各列の編集メニューの呼び出し (共通手順)
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/7b454290-dabb-a1bd-a820-eac501353e4a.png)
    - Application ID (申請 ID)
        - Data type が Single line of text, Format が Text となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/e74d05db-3e2e-e1e8-6961-a794c7c227b0.png)
        - [Update] をクリックします。
    - Base (拠点)
        - Data type で [Choice] - [Choice] の順にクリックします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/d1586335-16e2-386d-0d6e-7c5adcd68993.png)
        - 図のように Choices が自動設定されていない場合は [New choice] をクリックし [Label] に拠点名を入力し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/16ee617e-73f0-b9d3-ad0b-8c195cd2ee46.png)
        - [Update] をクリックします。
    - Inspection Taraget (点検対象)
        - Base (拠点) と同様に Data type を Choice に変更し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/c4fa36fc-17a5-e2f2-ade2-a491c9da5f5d.png)
        - [Update] をクリックします。
    - Inspection Result (点検結果)
        - Base (拠点) と同様に Data type を Choice に変更し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/0892154d-1dc7-e334-a55a-f55a07bed89a.png)
        - [Update] をクリックします。
    - Applicant Comment (申請者コメント)
        - Data type で [Text] - [Plain text **(Multiple lines of text)**] の順にクリックします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/1bbb708e-b3c0-6bff-a454-4c434f65f2e6.png)
        - Data type が Multiple lines of text になったことを確認し、Required のトグルスイッチは **OFF のまま** にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/6b6bea90-eec1-780e-7676-acb5e6f7d871.png)
        - [Update] をクリックします。
    - Inspection Date and Time (点検日時)
        - Data type が Date and time, Format が Date and time となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/5a8c128b-7e42-a245-52b8-50e2c8f7dc8a.png)
        - [Update] をクリックします。
    - Inspector (点検者)
        - Data type が Single line of text, Format が Text となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/48c5d203-d5db-1360-0386-539d43113b7c.png)
        - [Update] をクリックします。
    - Inspector Email (点検者メールアドレス)
        - Data type が Single line of text, Format が Email となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/865396d0-b4c6-31f6-7997-165c9f566e27.png)
        - [Update] をクリックします。
    - Application Date and Time (申請日時)
        - Data type が Date and time, Format が Date and time となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/0389ad7c-b75a-14dd-7b57-b20199d3e2b8.png)
        - [Update] をクリックします。
    - Approver (承認者)
        - Data type が Single line of text, Format が Text となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/471f4ccc-72f5-cdda-b290-35d0373d8a98.png)
        - [Update] をクリックします。
    - Approver Email (承認者メールアドレス)
        - Data type が Single line of text, Format が Email となっていることを確認し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/755bd96b-ac54-09cb-2734-0306087f4507.png)
        - [Update] をクリックします。
    - Status (状態)
        - Base (拠点) と同様に Data type を Choice に変更し、Required のトグルスイッチを ON にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/a3669f7b-b814-ed73-195d-37fd031c6616.png)
        - [Update] をクリックします。
    - Approval Date and Time (承認日時)
        - Data type が Date and time, Format が Date and time となっていることを確認し、Required のトグルスイッチは **OFF のまま** にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/6946e36a-8928-27fe-9796-a82f834cc068.png)
        - 変更した場合は、[Update] をクリックします。変更していない場合、[Cancel] をクリックします。(変更していない場合に、[Update] をクリックしても問題はありません)
    - Approver Comment (承認者コメント)
        - Applicant Comment (申請者コメント) と同様に、Data type で [Text] - [Plain text **(Multiple lines of text)**] の順にクリックし Data type が Multiple lines of text になったことを確認します。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/d3f33168-030f-77fc-b159-3ac217e91d93.png)
        - Required のトグルスイッチは **OFF のまま** にします。
            ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/6b6bea90-eec1-780e-7676-acb5e6f7d871.png)
        - [Update] をクリックします。
1. [Create] をクリックし、テーブルを作成します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/497d559b-f7e5-0f30-44ce-3cc81f1aaa35.png)
1. 下図のような画面に遷移したことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/92eaeca0-3fce-23d4-f389-5a8b4dd7357c.png)

::: note warn
- Microsoft Dataverse の Copilot は Preview 期間のため、一般提供 (通称 GA) までは仕様や挙動が変更されることがありサポート対象外となります。
- 各列の Reqired を ON にすることで、内容の入力または選択肢が選択を強制させることができるようになります。この設定は後からオフにできますが、キャンバスアプリでフォームコントロールを追加後の変更は反映されません。その場合は、フォームコントロールの設定を列ごとに行う必要があります。
:::

## 列名の変更
テーブルの作成は完了しましたので、ここからは列名を日本語に変更していきます。
1. 以降の Power Apps の操作は日本語表示で問題ないため、**[Power Apps へアクセス](#power-apps-へアクセス)** と同様に言語設定を変更します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/909b719a-a55d-9387-fad3-7400c4e69c50.png)
1. 下図のように日本語表示になったことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/59adf2ef-b9eb-e69a-09e6-a6ccdc0bd67d.png)
1. スキーマ の [列] をクリックし、列 (項目) の一覧に遷移します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/47159ccc-a01f-39c1-b5f4-7233a6373f3d.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/a2dda619-fa67-0589-1ab2-a16d34b345d5.png)
1. [名前] をクリック後 [次の値を含む] を選択し [{接頭辞の文字列}_] を入力し [適用] をクリックします。
    ユーザーが作成した列は名前 (スキーマ名) に接頭辞 (下図では 'crb01') が付与されるため、本手順では "crb01_" とすることで作成した列のみに絞り込みを行っています。
    **本手順に則って進めた場合、接頭辞は作成する環境によって異なります。適宜、ご自身の環境に合わせた接頭辞を指定してください。**
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/68a20a2e-c758-1264-1c48-6228c2e60bad.png)
1. 各列の表示名をクリックし、列の編集画面で表示名を変更し [保存] をクリックします。
    下図を参考に次の表に従い、作成した 14 列全てを変更します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/3a67b8ab-4605-b787-a343-aba4e9a86684.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/7c7897d7-63a9-56fa-b47b-ab927034b1b7.png)
    |表示名 (EN)|表示名 (JA)|
    |---|---|
    |Applicant Comment|申請者コメント|
    |Application Date and Time|申請日時|
    |Application ID|申請 ID|
    |Approval Date and Time|承認日時|
    |Approver|承認者|
    |Approver Comment|承認者コメント|
    |Approver Email|承認者メールアドレス|
    |Base|拠点|
    |Inspection Date and Time|点検日時|
    |Inspection Result|点検結果|
    |Inspection Taraget|点検対象|
    |Inspector|点検者|
    |Inspector Email|点検者メールアドレス|
    |Status|状態|
1. 下図の通り、作成した列の全ての表示名が日本語に変更されたことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/399d48e4-cf08-ea45-9599-86f973a9fe31.png)

以上でテーブルの作成作業は終了です。

::: note info
本記事では型や列名を変更してきましたが、Microsoft Dataverse の Copilot が日本語をサポートするようになり精度が上がると
このような変更作業の手間が大幅に削減されることが期待されます。
:::

テーブルの作成および編集に関する詳細は、**[公式ドキュメント](https://learn.microsoft.com/ja-jp/power-apps/maker/data-platform/create-edit-entities-portal)** をご確認ください。

# 管理向けアプリ作成
ここからは、管理者向けのモデル駆動型アプリを作成していきます。
1. 列の一覧画面のパンくずリストで、[Inspection Report (テーブル名)] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/1e86079a-775d-b603-5391-b1e796006d80.png)
1. [アプリの作成] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/14083ee7-3837-bcea-bcf6-7a04bd7a6e4c.png)
1. アプリ名に任意のアプリ名を入力し、[作成] をクリックします。
    本記事では、"Inspection Report for Management" という名前とします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/dc644b36-cfb7-f059-d20d-60c1b4a74000.png)
1. ナビゲーションの Inspection Report ビューをマウスオーバーし、✐をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/b4ccf869-d91d-59d0-1653-7c8f7890d0ee.png)
1. ビューの編集画面が表示されたことを確認し、[保存して公開] をクリックします。
    [保存および公開しています] と表示が変わり、再び [保存して公開] と表示されたら [戻る] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/6af0e556-1a12-e9a1-4fd0-f537c477ba14.png)
1. ナビゲーションの Inspection Report フォームをマウスオーバーし、✐をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/d8f64c88-5ffa-851f-1804-3bbed7860e8e.png)
1. フォームの編集画面が表示されたことを確認し、[保存して公開] をクリックします。
    [保存および公開しています] と表示が変わり、再び [保存して公開] と表示されたら [戻る] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/712a5ed5-4526-b669-cd1d-bccaac629af9.png)
1. 任意で次の変更を行い、[保存] - [公開] の順にクリックします。
    1. グループ名の変更
        サイトマップ ナビゲーションと呼ばれるエリアに、ページとして複数のテーブルやリンク等を追加できます。それをグループとして纏める事ができます。
        - ナビゲーションの [グループ 1] をクリックし、表示オプションのタイトルに任意のグループ名を入力します。本記事では、"Reports" とします。
    1. 不要なサブエリアの削除
        サイトマップ ナビゲーションに未定義のページが含まれるため、サブエリア 1 の三点リーダーから [ナビゲーションから削除する] をクリック
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/3ee8f20c-835b-2e58-cc12-e7f3ba82baf5.png)
1. 保存及び公開が完了したら、[戻る] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/3ee8f20c-835b-2e58-cc12-e7f3ba82baf5.png)

以上で、モデル駆動型アプリの作成は終了です。

::: note info
- ビューとはレコードを一覧表示する設定を指し、テーブル作成時に作成された列をビューに表示する項目として自動的に追加されています。
- フォームとは入力フォームの設定を指し、テーブル作成時に作成された列を入力項目としてフォームに表示するよう自動的に追加されています。

何れも追加されたのみの状態であるため、#5 または #7 の手順で各設定をアプリ側で利用できるようにするため **”公開”** という処理を行っています。
:::

ナビゲーションに関する詳細は、**[公式ドキュメント](https://learn.microsoft.com/ja-jp/power-apps/maker/model-driven-apps/app-navigation)** をご確認ください。

# 現場向けアプリ作成
続いて、現場向けのキャンバスアプリを作成していきます。
1. [アプリ] - [データで開始する] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/06cbf06a-2072-5da7-627e-ec54ae2a78a4.png)
1. [既存のテーブルを選択する] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/a2cdf5c2-032f-0609-3bc9-14f7e2475359.png)
1. テーブル名を入力し [テーブル作成](#テーブル作成) で作成したテーブルを検索・選択したら、[アプリを作成する] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/1e43eb9d-9656-0392-a91b-b40dd20abca1.png)
1. キャンバスアプリが自動生成され下図のようなアプリの編集画面 (Power Apps Studio) が表示されたことを確認したら、[保存 (💾)] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/a932a022-71f0-3e66-9a85-65241a740418.png)
1. 任意のアプリ名を入力後 [保存] をクリックし、保存 (💾) ボタンがグレーアウトされた状態になったら [公開 (保存ボタンの右隣のアイコン)] をクリックします。
    本記事では、"Inspection Report" という名前とします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/3001edc2-0736-20be-52d9-b1eb68ac4abc.png)

# 承認ワークフロー作成
最後に、承認ワークフローを作成していきます。
承認ワークフローは、次のような内容です。
- 起動するきっかけ
    - アプリから点検結果をデータベース (テーブル) に登録
- 起動後の動き
    - 承認者に承認依頼をメールし、承認・却下を待機
    - 承認結果をデータベース (テーブル) に反映
    - 点検者へ Teams で通知

1. 新しいタブを開き、**[Power Automate](http://make.powerautomate.com/)** にアクセスします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/cef4ce2c-7df9-ea23-d32f-fc82d1fbe882.png)
1. Power Apps と同様に、予め準備した環境に切り替えます。
    本記事では個人用開発環境を利用し、各作業を進めます。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f9859a6a-b4f9-dae3-1aed-5589e0b5ebc1.png)
1. Copilot のプロンプトに作成したい承認ワークフローの内容を **具体的に** 入力し、[生成] をクリックします。
    本記事では、"Dataverse に申請が登録されたら承認依頼を送信、承認結果を Dataverse に反映し申請者に Teams で通知するワークフローを作りたい。" とします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/775c843f-fffb-2a1e-50cf-a063e6e85110.png)
1. Copilot からの提案内容を確認し、複数の提案がある場合は提案内容の下部にある矢印で下図のようなフローを選択し [次へ] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/bbf88867-d44d-e822-32ce-63fbbe1c7910.png)

    前項で入力した内容 (プロンプト) を、AI がどのように解釈したかで提案内容が変わります。
    想定通りの提案にならなかった場合は、次の対応を行ってみましょう。
    - 英語でプロンプトを記述する
        - 米国リージョン・英語プロンプトは既に一般提供されており、他の言語の比較しプロンプトの解釈の精度が高いです。翻訳ツールを利用しプロンプトを記述することも、おススメです。
    - プロンプトの内容を工夫し、再度生成を行う
    - 実現したい内容に近いものを選択し、後からカスタマイズを行う

    下図は、英語翻訳したプロンプトに対する提案結果です。想定通りの提案を初回で受けることができました。
    ```
    I would like to create a workflow that sends an approval request when an application is registered in Dataverse, reflects the approval result in Dataverse, and then notifies the applicant's Teams.
    ```
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/c6965487-f65f-062d-9c5f-6142a33054c3.png)
1. Microsoft Dataverse, 承認 (Approval), Microsoft Teams の接続が、それぞれ緑のチェックとなっていることを確認し [フローを作成] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/7e585c5f-60fb-5e5f-33a6-f37d0c2f9219.png)
1. 提案されたワークフローが生成されたことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/8a51229a-f88e-bcef-8ec3-d207eba47eed.png)
1. トリガーおよび各アクションをそれぞれ選択し、設定をしていきます。
    1. トリガー (一番上の When a row is added modified or deleted) をクリックし、下図のように設定 (選択) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/95b91be0-34cb-3c51-dff4-acfc3bb96529.png)
    1. 承認 (Approval) アクション (トリガーの次の) をクリックし、下図のように設定 (選択・入力) します。
        担当者や申請 ID といった値にテーブルの情報を反映は、入力欄にカーソルを合わせると表示される⚡アイコンをクリックすることで選択可能です。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/449d30ae-dfdc-7619-6967-b62d9683963f.png)

        |項目|選択元トリガー・アクション|選択肢|コメント|
        |---|---|---|---|
        |担当者|When a row is added modified or deleted|承認者メールアドレス||
        |申請 ID|When a row is added modified or deleted|申請 ID||
        |点検対象|When a row is added modified or deleted|点検対象|暫定入力|
        |点検結果|When a row is added modified or deleted|点検結果|暫定入力|
        |申請者コメント|When a row is added modified or deleted|申請者コメント||

        詳細の入力内容のひな形は、下記の通りです。
        ```
        日次点検の報告がありました。
        内容を確認の上、承認・却下をしてください。
        ----
        - 申請 ID
            - 
        - 拠点
            - 
        - 点検対象
            - 
        - 点検結果
            - 
        - 申請者コメント
            - 
        ```
    1. Condition をクリックし、下図のように設定 (選択・入力) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/fb305678-eadb-5461-ab3f-81e6516ae31c.png)

        |項目|選択元トリガー・アクション|選択肢・入力内容|コメント|
        |---|---|---|---|
        |左辺|Start and wait for an approval|結果||
        |右辺|なし (入力)|Approval|先頭大文字、全て半角|
    1. Post message in a chat or channel (True の Teams アクション) をクリックし、下図のように設定 (選択・入力) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/78e0d03b-0825-1fb3-39d4-53c2fc51d875.png)

        |項目|選択元トリガー・アクション|選択肢|コメント|
        |---|---|---|---|
        |投稿者|なし|フロー ボット||
        |投稿先|なし|Chat with Flow bot||
        |Recipient|When a row is added modified or deleted|点検者メールアドレス||
        |申請 ID|When a row is added modified or deleted|申請 ID||
        |点検対象|When a row is added modified or deleted|点検対象|暫定入力|
        |点検結果|When a row is added modified or deleted|点検結果|暫定入力|
        |申請者コメント|When a row is added modified or deleted|申請者コメント||
        |承認者コメント|なし|なし|暫定的に空欄のまま保存|

        詳細の入力内容のひな形は、下記の通りです。
        ```
        報告した日次点検が承認されました。
        ----
        - 申請 ID
            - 
        - 拠点
            - 
        - 点検対象
            - 
        - 点検結果
            - 
        - 申請者コメント
            - 
        - 承認者コメント
            - 
        ```
    1. Update a row (True の Teams の次のアクション) をクリックし、下図のように設定 (選択・入力) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/de107bc3-bbf6-b9d8-ed33-94df158ad213.png)

        |項目|選択元トリガー・アクション|選択肢|コメント|
        |---|---|---|---|
        |テーブル名|なし|Inspection Report||
        |行 ID|When a row is added modified or deleted|Inspection Report||
        |状態|なし|承認||
        |承認者コメント|なし|なし|暫定的に空欄のまま保存|
    1. Post message in a chat or channel (False の Teams アクション) をクリックし、下図のように設定 (選択・入力) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/95403923-eb8f-5f4e-ab2a-821089b57c67.png)

        |項目|選択元トリガー・アクション|選択肢|コメント|
        |---|---|---|---|
        |投稿者|なし|フロー ボット||
        |投稿先|なし|Chat with Flow bot||
        |Recipient|When a row is added modified or deleted|点検者メールアドレス||
        |申請 ID|When a row is added modified or deleted|申請 ID||
        |点検対象|When a row is added modified or deleted|点検対象|暫定入力|
        |点検結果|When a row is added modified or deleted|点検結果|暫定入力|
        |申請者コメント|When a row is added modified or deleted|申請者コメント||
        |承認者コメント|なし|なし|暫定的に空欄のまま保存|

        詳細の入力内容のひな形は、下記の通りです。
        ```
        報告した日次点検が却下されました。
        承認者コメントを確認の上、対応と適宜再度報告をお願いします。
        ----
        - 申請 ID
            - 
        - 拠点
            - 
        - 点検対象
            - 
        - 点検結果
            - 
        - 申請者コメント
            - 
        - 承認者コメント
            - 
        ```
    1. Update a row (False の Teams の次のアクション) をクリックし、下図のように設定 (選択・入力) します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/fcc4f49b-50db-5e29-9c1a-1bbb878ef911.png)

        |項目|選択元トリガー・アクション|選択肢|コメント|
        |---|---|---|---|
        |テーブル名|なし|Inspection Report||
        |行 ID|When a row is added modified or deleted|Inspection Report||
        |状態|なし|却下||
        |承認者コメント|なし|なし|暫定的に空欄のまま保存|
    1. 設定開始前に Invalid parameters と表示されていた警告が無くなったことを確認し、左上のフロー名を選択・任意のフロー名を入力し右上の保存をクリックします。
        本記事では、"Inspection Report Approval Workflow" とします。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/5abc76df-9774-af4b-7677-d772c6078906.png)
    1. フロー名の左隣にある [←] をクリックし、作成したフローの詳細画面に遷移します。
        ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/370b7b2a-5a6f-a104-4984-4bccb09265cc.png)

# 動作確認
最低限の設定ですが、以上でアプリと承認ワークフローを組み合わせた報告アプリを作成できました。ここからは、現状の設定で動作を確認していきましょう。

1. Power Apps のタブに移動し [アプリ] - [Inspection Report] の三点リーダーから [再生] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/31f2e811-e516-c6ea-f4ae-4d9a568db62a.png)
1. 図のように、承認日時・承認者コメントを除く各項目を入力・選択し [✓] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f482623e-61c3-7d2b-0166-f6df2f63e6f5.png)
1. Power Automate のタブに移動し、実行中の実行履歴をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/68b15bb2-71db-f1b6-5a3b-4a286710ea1f.png)
1. 承認アクションで承認待ちの状態 (黄色いアイコン) であることを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/28d51ea9-bb00-471d-5d1f-200c883a8601.png)
1. 左上のワッフルメニューから [Outlook] をクリックします。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/5e4314ac-4c92-f62f-c4e9-7ddfa0ad7ae0.png)
1. Power Automate からの承認依頼メールを開き [承認] をクリックし、適宜コメントを入力の上 [送信] をクリックします。
    承認ワークフローを動かしている環境 (本記事では、個人用開発環境) で初めて承認アクションを利用する場合、メールが届くまで少し時間を要します。承認情報を保存するテーブルがバックグラウンドで作成されるためですので、正常な動作です。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f15700c3-4236-da09-0ed4-c17e91001c3c.png)
1. Power Automate のタブに戻り、最後のアクションまで正常終了 (緑の✓アイコン) したことを確認します。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/8ecb4d60-8c91-3178-d9ab-1d4462a466ed.png)

::: note info
メール本文の拠点や点検対象といった選択肢となっている部分は広島工場等の名前 (ラベル) をはめ込みたいところですが、数字が並んでいる状態になっています。
Power Automate でそれらをはめ込むためには、ひと手間必要となります。
同僚の **[向井さんの記事](https://qiita.com/kumukai/items/f4598372db6e55085b77)** が非常に分かりやすく解説されておりますので、是非こちらを参考にカスタマイズにチャレンジしてみてください。
:::

---
いかがだったでしょうか。
1 時間で終らなかった方もいらっしゃるかもしれませんが、プログラミング等の専門知識を持ち合わせていなくても短時間でアプリ 2 つと承認ワークフローを作成することができました。
Power Platform は皆さんにとって便利で簡単に現場の課題を解決してくれるツールとして、AI の力を得て更に進化し続けていきます。
これを機に、是非 Power Platform をもっと触ってみませんか。

# Appendix
最後に、Appendix としてカスタマイズ例をご紹介いたします。
### キャンバスアプリ
- 主なカスタマイズ箇所は、下図の通りです。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/bac5b45d-decf-dc3b-5405-99f5025e65dd.png)
    1. 状態 (承認待ち・承認・却下) によって、色分け
    1. 一覧表示される情報を更新するボタンを追加
    1. 入力フォームの各項目を並べ替え・一部非表示設定
    1. 申請 ID を自動入力 (新規で報告時) し、アプリ利用者は編集不可に設定
        - ここでは GUID と呼ばれる文字列を生成し、自動的に設定
    1. 点検日時を現在時刻 (新規で報告時) を自動設定
    1. 申請日時を現在時刻 (新規で報告時) を自動設定
    1. 点検者 (アプリ利用者) の情報をアプリ起動時に取得し、名前を自動設定
    1. 点検者 (アプリ利用者) の情報をアプリ起動時に取得し、メールアドレスを自動設定
    1. コメント欄のサイズを変更
    1. 承認者 (上司の想定) の情報をアプリ起動時に取得し、名前を自動設定
    1. 承認者 (上司の想定) の情報をアプリ起動時に取得し、メールアドレスを自動設定
    1. 状態を [承認待ち] (新規で報告時) に、自動設定

### モデル駆動型アプリ
- 状況に応じた手続きを確実に実施できるよう、ビジネスプロセスフロー組み込み
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/5bee1c34-f82d-b7bf-8492-5891e7fa58cd.png)

### クラウドフロー (承認ワークフロー)
- 主なカスタマイズ箇所は、下図の通りです。
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/d7c7628c-c2e1-f163-fcee-f97aad6f81c2.png)
    ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2366959/f5149afa-98dd-bae6-bb21-7e2dc8fd018e.png)
    1. 前述の **[向井さんの記事](https://qiita.com/kumukai/items/f4598372db6e55085b77)** と同様に Power Automate で利用したい選択肢のラベルを取得し、後処理 (暫定入力とした箇所) にて利用
    1. 承認者のコメントを格納するための変数を初期化
    1. 承認者のコメントを取得し、変数に設定
        承認アクション自体は承認者を複数設定する事が可能なため、各承認者のコメントをループ処理で取得する動きとなるため事前処理を行うことで後処理 (暫定的に空欄とした箇所) にて利用