Excel と比較した際の SharePoint リストのメリット


# はじめに

Power Apps や Power Automate で SharePoint リストとの連携が頻繁に行われますが、「そもそも SharePoint リストって何？Excel と比較して何が良いの？」といったご質問をいただくことがあるため、私の見解を整理してみます。

※SharePoint Online の SharePoint リストという前提で述べます

# SharePoint リストのメリット (ChatGPT に聞いてみた)

とりあえず、ChatGPT に聞いてみました。なんだか、もうこれで十分な気がしてきました💦

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/efa77a14-3219-8d61-cd03-eff0b451385e.png)

上記も参考にしつつというか、もう少し噛み砕きつつ、私の考えを述べたいと思います。

# SharePoint リストとは


まず、SharePoint リストとは、以下のような、SharePoint サイト内で利用可能な構造化されたデータです。厳密にはデータベースではないですが、データベースのように構造化された簡易的なデータの蓄積場所といった感じでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/9a840042-5fb8-b379-3551-e1a06a661cc5.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/c1771ffb-1930-a4d4-028f-0d65f4ca2b8d.png)

構造化されたデータとは、以下のような形式でテーブル構造になっているデータと捉えていただくと良いかと思います。このような構造の場合のメリットについては、後述していきます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7f41b5ee-bcfb-2370-683d-b9219025fa3a.png)

## データ連携、アプリ連携しやすい


まず、SharePoint リストはデータ連携、アプリ連携しやすいです。考えられる理由は以下の通りです。

### テーブル構造

上述の通り、SharePoint リストのデータは構造化されているため、データ連携やアプリ連携がしやすいです。例えば、Power Apps で作成したアプリのデータソースとして上記のようなリストを利用する場合、以下のようになります。

・アプリを介して休暇申請を行うとデータが一行追加される
・アプリを介して新規問い合わせをするとデータが一行追加される

それに対して、以下のような形式の Excel の場合、Power Apps で作成したアプリからデータの登録をすることは出来ません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/332ab787-bc31-6a17-a847-6e00f494a1d8.png)

もちろん、Excel でも構造化された表を作成することは出来ますが、**SharePoint リストの場合、誰が作成したとしても上記のような構造化されたデータとなる点はメリットと考えます。**

### データがクラウド上にある

SharePoint Online を利用している場合、SharePoint リストもクラウド上に存在することになります。この観点でもデータ、アプリ連携等がしやすいです。

現在は、様々なクラウドサービスを業務で利用しており、業務を効率化するために、データ連携が必要になることも多いと思います。そのような際、データがローカル (端末上) にあると中々難しいと思います。

SharePoint リストのデータは、Power BI というデータの可視化、レポートの作成が得意なサービスからももちろん接続可能で、自動で更新をすることが可能です。

例えば、お問い合わせを管理するリストをベースに、年間や月ごとの問い合わせの件数、問い合わせの多いサービス、問い合わせの多い部署などを可視化するレポートを作成し、データを自動更新することが出来ます。

これが端末上にある Excel ファイル、または、クラウド上に Excel ファイルを保存しているものの、月ごとにファイルが分かれる、場合によってデータの構造が異なるような場合、レポート作成したり、データを自動更新して常に最新化したりする難易度が高くなると思います。


### データが一つの場所に集約される

上述の通り、アプリを介して新規問い合わせをするとデータが一行追加されます。翌月も翌々月も場合によっては来年誰かが問合せをしたとしてもデータは同じところに蓄積されます。このように、データが一つの場所に集約されています。

当たり前のように思うかもしれませんが、例えば、同じシナリオにおいて、メールベースの本文や添付ファイルで問い合わせを受け付けている場合、データを集約するのは非常に難しいと思います。

## 表示形式 (ビュー) を切り替えられる

以下のようなカレンダービューに切り替えることが簡単に出来ます。以下は、休暇申請をするリストですが、それ以外にも、何かを予約するようなリストの場合、カレンダービューの需要は高いと思います。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0518a079-3205-966f-6fa9-ae84c10353e2.png)

カレンダービュー以外にも、以下のようなギャラリービューもあります。
また、同じリスト形式でも、人によって見たいビュー (特定の列のみ表示したり特定の条件を満たす行だけ表示など) がある場合、ビューを作成して切り替えることが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/8b4b0e14-d79d-d359-4145-eece50391a53.png)

## データの型を指定できる

それぞれの列について、列の型を指定することが出来ます。テキスト (複数行含む) はもちろん、数字、日付、選択肢、ユーザー (Microsoft 365 の組織内のユーザーから選択) 列など、沢山の種類があります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/e7772209-5b29-323a-74c8-41b92b7c8ed8.png)

例えば、ユーザー列では、以下のように、組織からユーザーを検索して選択することが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/839d8fd1-e20f-62c6-ae76-e5c2642aff0e.png)

選択肢列の場合、以下のようにして選択肢を定義し、そこから選択させることが出来ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/0ce3c2eb-ba2e-fe4c-ea18-e3d4ce30a215.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/62fb08cd-5998-67b0-34ba-8dbda3da6c43.png)

このように型を指定することで、意図しないデータが入力されることを防ぐことが出来ます。

Excel の場合、例えば、以下のようなケースなど、データにばらつきがありデータの集計や計算をしようとする際に困ってしまうことがあると思いますが、そのようなことを予防することが出来ます。

* 人の名前を入力してほしい列に対して、姓名の間に空白があったり、なかったり、ローマ字で入力されていたり漢字で入力されていたりする

* 日付を入力してほしい列に対して、文字が入力されたり、違うフォーマットの日付が入力されたりする

# Power Platform と連携する際のメリット

上記に加え、Power Platform (特に、Power Apps や Power Automate) と連携するという観点で Excel と比較した際の SharePoint リストのメリットについて述べます。

まず、私の場合、「Power Apps でアプリを作成する際、データソースとして SharePoint  リストと Excel どちらがいいですか？」と聞かれたら、迷わず SharePoint リストと答えます (もちろん、Microsoft Dataverse が使えたら迷わず Microsoft Dataverse を使いますが、今回の主題ではないので深く言及はしません)。

代表的な理由は以下の通りです。

## 同時アクセス

当たり前ですが、Excel はファイルです。そのため、Excel をデータソースにした際、Power Apps を介して同時にアクセスした際やファイル自体を誰かが開いている際など、アプリやフローの動作に影響が出る可能性があります。最近は改善されているようにも見受けられますが、後述していく観点含め、多数の人が利用するアプリのデータソースには不向きと考えます。

## アクセス制御

例えば、他の人が作成した行について、閲覧は可能だが、編集は自分が作成した行にだけにしたいといったアクセス制御のニーズがあるとします。


このようなニーズについて、SharePoint リストであれば以下の設定により実現可能ですが、Excel はファイルのため、ファイルに対するアクセス制御やセル範囲にパスワードを設定するようなことは出来ますが、上記のような自分が作成した行をベースにアクセス権を制御するようなことは出来ません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/4053868c-8313-d635-81b4-eb10112282f9.png)

:::note
Microsoft Dataverse を利用する際は、より細かなアクセス制御が可能です。
:::

## 既定の列

SharePoint リストには、既定の列がございます。個人的によく利用するのは以下黄色の箇所の列です。例えば、登録者や登録日時列について、その行を誰がいつ登録したのかが分かります。このような列を自分で用意し、整合性を保つことにエネルギーを注がなくていいのは非常に便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/106e0657-5a7d-8bea-d4a5-cf480f8f667c.png)

もちろん、多数の人が Excel を編集する場合、ファイルレベルで編集した人は分かりますが、誰がいつこの行を追加、編集したのかなどの粒度で確認するのは困難かと思います。

また、SharePoint リストは厳密にはデータベースではありませんが、裏にはデータベースを持っており、行ごとに一意な ID 列 (その行を特定する値) という既定の列も持っています。

このような列についても、Power Platform と連携したソリューションを作成する際に非常に重要です。しかし、誰でも自由に行を追加し編集できる Excel では、これを実現することは簡単ではありません。一方、SharePoint リストでは、このような列を用意し、整合性を保つことにエネルギーを注がなくてよいため、非常に便利です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/9a0bbe5b-eaeb-a8a4-0a25-aa8ad7c36b9f.png)

## 通知連携

以下の記事等でも紹介した通り、SharePoint リストの場合 (もちろん、Microsoft Dataverse の場合も)、Power Automate と連携して、例えば、新規お問い合わせがあった際にお問い合わせ対応チームの Teams チームのチャネルに通知したり、対応期限が迫っている案件に対してリマインドの通知をしたり、通知連携が可能です。

https://qiita.com/Takashi_Masumori/items/59521acdefbdee67bb04

https://qiita.com/Takashi_Masumori/items/2fc4794369a2d5b840df

Excel はファイルのため、流石に、どこかに存在する特定の Excel ファイルに新しい行が追加された際に、Power Automate が自動トリガーで起動して通知するようなことは難しいです。

## 委任 (フィルターや検索等)

まず、委任とは以下のようなイメージです。このように、アプリでフィルターや検索を行う場合において、委任が可能な場合、データソースが代わりに処理をして、必要最低限のデータを返してくれるため、アプリのパフォーマンス面 (アプリ内の処理やデータ通信量などの面) においてもメリットがあります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/7c368f46-0a44-cd30-8a3b-d86a1f70cab2.png)

それに対して、委任が出来ない場合の動作です (Excel はファイルのため、委任に関する注意が必要です)。
必要ないデータまでネットワーク上に流れることから、何となく、アプリのパフォーマンスに影響が出る可能性がありそうな気がしますよね？

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/dcb3b567-f070-c087-e090-ac7da4f2318a.png)

https://learn.microsoft.com/ja-jp/power-apps/maker/canvas-apps/delegation-overview

# 処理結果の反映が速い

Excel を Power Platform のデータソースとして扱う場合、Excel はファイルであることから、ファイルベースの処理が非同期で行われるため、処理結果が反映されるまでに時間を要す場合があります。例えば、Power Automate でデータの操作した後にそのファイルを後続の処理で利用しようとすると、操作前の状態となってしまうことがあります。このような際は、意図的に遅延処理を入れるという対処策がありますが、実測ベースで、トライ＆エラーで時間を調整する必要があるなど、色々苦労することも出てくると思います。

SharePoint リストの場合は、Excek と比較するとそのようなことに遭遇する可能性は非常に低い (個人的には経験ないです) という認識です。

# Excel の方が良いと思うシナリオ

色々書いてきましたが、もちろん、Excel の方が良いシナリオというか、得意なことも沢山あると思います。私は仕事柄ほとんど Excel を利用しませんが、思いつくことを列挙します。

## データの一括更新、コピー

コピー＆ペースト、ドラッグ&ドロップ、数式、マクロ等でデータを一括更新したり一括コピーすることは Excel の方が得意と思います。

これは、Excel はデータベースではなく、表計算が得意なソフトで、セルに対して自由に入力を行い、アウトプットはあくまでファイルであるためです。その反面、データベースのデータと違い、データの一意性などは担保されませんが、この辺を特に気にする必要がなく、大量のデータの一括更新が重要な要件の場合は、Excel の方が良いかもしれません。

もちろん、SharePoint リストのデータについても、必要に応じて Power Apps や Power Automate を介しつつ、複数のデータの一括更新は可能ですが、Excel と比較すると時間を要します。

## アウトプットがテーブル構造ではなくてもいい

Excel で作成するファイルについて、アウトプットがテーブル構造ではなくてもいい場合、例えば、以下記事で紹介したようなアウトプットの場合、Excel の方が良いと思います。

※データの入力自体をアプリなどに置き換えることが出来るのであれば、データも構造化して効率化できると思いますが

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/d0e92a7d-8e35-6291-6e4f-80d729ca375e.png)

https://qiita.com/Takashi_Masumori/items/1fb8ec3c09b399473b2d

## 特に残しておく必要がない一時的な作業で作成する表など

もちろん、データ自体を特に残しておく必要がなく、一時的な作業で表を作成したい場合や一時的に表計算をしたいだけの場合は、わざわざ SharePoint リストを利用する必要はなく、Excel の方がいいと思います。

## マクロでゴリゴリ

当たり前ですが、マクロで沢山コード書いて効率化しているような業務についてはSharePoint リストだけで代替することは難しいです。この辺については、業務自体を見直す、Power Platform や Office スクリプトとも組み合わせて連携代替可能か、一部を置き換えることが可能か、検討する感じになると思います。

# どんなときであれば Excel でも良い？

個人的には、上記 Excel の方が得意そうなシナリオ以外では、Power Apps や Power Automate のデータソースとして、Excel より SharePoint リストを利用することを推奨しています。

その前提ですが、上記 Excel の方が得意そうなシナリオ以外で、個人的に、どんなときであれば Excel でもよさそうか、整理してみます。

## アプリやフローを利用するのが自分だけ、少人数

アプリやフローを利用するのが自分だけ、もしくは少人数であり、アプリやフロー利用時、直接そのファイルを利用する可能性が極めて少ない場合は Excel でも良いかもしれません。

利用人数が多い場合は、パフォーマンス含め、問題が発生する可能性があるため、Excel より、SharePoint リストを利用した方がいいと思います。

## データの更新がない場合

アプリやフローからデータの更新がある場合、データの整合性やパフォーマンス等の観点より、Excel よりも SharePoint リストを使用した方がいいと思います。

最終的に何らかの形で Excel 出力が必要な場合は、一旦 SharePoint リストにデータを蓄積して、必要に応じてそちらから必要な情報を Excel にエクスポートするのが良いと思います。

なお、標準機能でも、SharePoint リストから Excel にエクスポートすることが可能です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3074511/765dc8e7-d035-7331-398e-5f885ab02931.png)

もしくは、このような方法でも可能です。

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

データの更新がなく、参照のみであり、一つ目の要件も満たしているのであれば、Excel でも良いかもしれません。

## データをフィルターしない

Excel の場合、データの型に沿っていないデータが含まれている可能性があり、委任できる SharePoint リストよりも限られているため (利用されているケースが少ないため網羅されている情報少ないかも)、データのフィルターをする際は、委任の観点から、Excel より SharePoint リストを利用する方が良いと思います。

# まとめ

今回は、Excel と比較した際の SharePoint リストのメリットについて、Power Apps や Power Automate との連携することを中心に、私の考えを整理してみました。今後、Microsoft 365 の利活用を進めていく、Power Apps や Power Automate の利活用を進めていく際、SharePoint リスト自体についても説明したり、利活用を促進したりする場合もあると思いますので、何らかの参考になれば幸いです。