Power Apps で SharePoint リストを利用する際、どのサイトを利用する？

# はじめに

市民開発者向けの方の相談会やハッカソン講師をしている際、Power Apps でデータソースとして SharePoint リストを利用し、データの登録や閲覧をする際、どのサイトを利用すればいいのか、質問をいただくことがあります。

あくまで個人的な見解ですが、この際、私が意識しているポイントは以下の通りです。

* アプリの利用者は、基本的に SharePoint リストのアクセス権も必要、そのため、最終的なアプリの利用者を想定する
* 一時的にテスト用のサイトのリストを利用する方法は、(特に慣れないうちは) 極力避けた方が良い

今回は、こちらについて、もう少し詳細について説明します。


※Power Automate と連携して実行専用のアクセス許可を利用することで、アプリ利用者に SharePoint リストのアクセス権を付与させない方法もあります。こちらについては、以下の記事をご参照いただければと思います。

https://mofumofupower.hatenablog.com/entry/2022/07/17/020755

個人的に、アプリの要件次第では、(特に市民開発者の方にとっては) アプリ作成の難易度が高くなると思うので、今回は、リストに対してアクセス権を付与する前提で説明いたします。

# アプリの利用者は、基本的に SharePoint リストのアクセス権も必要、そのため、最終的なアプリの利用者を想定する

Power Apps のアプリで SharePoint リストにデータ登録をしたり、データを一覧表示する場合、基本的に、アプリの利用者は、該当のリストに対してアクセス権が必要になります。

そのため、最終的なアプリの利用者に対して SharePoint リスト (サイトレベルで共有することが多いかと思います) を共有しても良い場所にする必要があります。

例えば、全社に公開することを想定しているアプリにて、自部署のユーザーのみが利用している SharePoint サイト内にリストを作成した場合、アプリの作成中や自部門内でテストしている段階では問題ないかもしれません。

しかし、全社への SharePoint サイトの共有が難しい場合、アプリの全社展開前に、別のサイトにリストを作成して切り替える必要があります。
ただし、こちらについては、後述の理由より、(特に慣れないうちは) 極力避けた方が良いと思っています。

# 一時的にテスト用のサイトのリストを利用する方法は、(特に慣れないうちは) 極力避けた方が良い

上述の通り、アプリの作成中や自部門内でテストしている段階で、一時的な SharePoint サイトを利用している場合、本番展開前に別のサイトにリストを作成し、切り替える必要があります。

リスト自体については、以下の方法で既存のリストから作成することができるため、この点については特に問題ないと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/b54a6b5b-a4cd-c559-68c7-0c94fabf8254.png)

しかし、以下の理由から、個人的に、**アプリの作成に慣れていないうちは、一時的にテスト用のサイトのリストを利用する方法は極力避けた方が良いと思っています。**

* Power Apps でフォーム コントロールを利用している際、最悪の場合、再設定が必要になる
* Power Automate クラウドフローを利用している際、SharePoint のアクションごとにサイトやリストを切り替える必要がある

それぞれについて説明します。

## Power Apps でフォーム コントロールを利用している際、最悪の場合、再設定が必要になる

上述の通り、別のサイトに同じ列名を持つリストを作成することは簡単にできます。しかし、フォーム コントロールを利用している際、データソースを切り替えた場合、以下のような画面が表示されます。**[データカードの置き換え] を選択すると、フォームの再設定が必要になります。そのため、リストの構造が全く同じ場合は、[いいえ] を選択する必要があります。**

もちろん、それ以外にも、アプリ内でデータソースを参照している個所については、必要に応じて改修が必要になり、データソース切り替え後、念のため再度テストした方が良いと思います。こちらについても、少し面倒だと思います。

テストした結果、データの登録時に何か問題がある場合、フィールドを再度追加するなど、フォーム コントロールの改修作業が必要になる可能性もあります。

最初のうちは特にフォーム コントロールを良く利用すると思います。
また、フォームの体裁を変更したり、既定値を設定したり、表示モードや表示非表示を切り替えたり、結構苦労して設定したというケースもあると思います。
それらの設定を再度実施することになった場合、特に慣れないうちは、面倒で億劫に感じると思うので、この点について、注意する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e344d624-3edb-7d06-1793-90852e8204a4.png)
フォームの設定が元に戻ってしまった。。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/f0fd6205-22e6-00fc-afea-5309c6fa91c8.png)

## Power Automate クラウドフローを利用している際、SharePoint のアクションごとにサイトやリストを切り替える必要がある

Power Apps とセットで処理を自動かするために Power Automate クラウドフローを必要に応じて複数作成している場合があると思います。
SharePoint リストを切り替えた場合、SharePoint のアクションごとにサイトやリストを再度設定する必要があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dbe0096a-e122-ac0e-9bc7-4053a72010b8.png)

そこそこ作り込んでいる場合、これ、結構面倒です。
もちろん、環境変数を使うことで避けることができますが、慣れないうちは、「環境変数?」だと思いますし、変更漏れが出る可能性もあるので、変更後は再度テストをした方が良いと思います。

# まとめ

Power Apps や Power Automate で SharePoint リストを利用する際、どのサイトを利用するかという観点で私の考えを述べました。
もちろん、アプリ作成段階で適切な SharePoint サイトがない場合、上記も考慮した上で、最終的に利用者を拡大する前にリストを切り替えるという方法でも良いと思います。

しかし、個人的には、データソースを切り替えることで、上記のようなことを考慮して改修したりテストしたりすることで、アプリの展開も遅れることになると思います。

そのため、最終的なアプリの利用者が最初からアクセスできる SharePoint サイト、または、段階的にアプリの利用者に対してアクセス権を広げていける SharePoint サイトを選択するのが良いかと思います。

ただし、Power Apps で作成したアプリからは SharePoint リストにデータの登録ができるが、出来るだけ、それ以外の方法で、SharePoint リストにはアクセスさせたくないといった要件がある場合は、後者の方が良いと思います。

この辺の要件に対するアプローチについては、以下の記事で触れているので、ご参考にしていただけたらと思います。

https://qiita.com/Takashi_Masumori/items/a2a1aae5301b80bd772a