初めての Microsoft Lists

## はじめに
保持されたデータを Power Apps や Automate などで扱いたい場合、SQL Server 等のDBや Dataverse を利用したいところですが、別途ライセンスが必要となってしまいます。
そこで試用したい時など、費用を掛けず手軽に動かしたい場合には Microsoft Lists が利用できます。

## 新しいリストの作成
<img width="500" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/b5c34b9f-7ddb-b736-da90-11af05ed7f2c.png">

先ず初めにリストの作成について、「空白のリスト」「Excel から」「既存のリストから」の３つから選択します。
しかし、この中で **「Excel から」に関してはオススメしません。**

後で説明する「列の定義」の内容になりますが、列名には`内部名`と`表示名`が存在し、「Excel から」作成すると内部名が自動で`field_1`、`field_2`・・・になってしまいます。（列名を半角文字で指定した場合でも）
Power Apps や Automate から列を指定する場合は基本的に **`内部名`** を用いる必要がありますが **内部名は後から変更できないため注意してください。**
（外部から管理者権限を使って「PnP.PowerShell」等で変更する方法があるかもしれませんが非常に手間です。）

既に作成したリストを流用する場合は「既存のリストから」を選択してください。
（この場合は内部名もコピーされます。）

今回は「空白のリスト」を選択します。
<img width="350" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/4aece40a-11e2-27e7-5949-3c3fd9adfd0a.png">

「リスト名」は前述した列名と同じように、内部名と表示名が存在するため、ここでは半角文字で名前を指定します。

:::note warn
内部名にマルチバイト（全角）文字を使用すると、URLで使用される際にエンコードされて読み取れない文字になってしまいますので、内部名は半角文字を指定してください。
:::

:::note info
リストの表示名／内部名はそれぞれ一意となり、表示名は重複すると「リストは既に存在します」とエラー表示されますが、内部名の方は何故か自動で連番振られて作成されるようです。

⇒　内部名 “TEST” を重複して作成すると、後から作成した方は “TEST1” になる
:::

次に「保存先」を選択します。以下の SharePoint サイトが表示されます。

* 【マイリスト】 ：個人用サイト
* 【最近アクセスしたサイト】 ：アクセス権のあるチームサイト、またはコミュニケーションサイトの一覧

:::note warn
【マイリスト】に保存する場合、以下に注意してください。
1. 「既存のリストから」に表示されないため流用できない。
1. ユーザーのアクセス許可は「共有」設定で対象ユーザーを追加して、さらに一度対象の List ページにアクセスしてもらう必要がある。
⇒　チームサイト、またはコミュニケーションサイトの場合は、そのサイトの「サイトの共有」設定をするだけでよく、List 側での共有設定は不要になる。

これにより、今後複数人での利用が想定される場合は【最近アクセスしたサイト】を保存先にするのがオススメです。
:::

List 作成後に名前を変更することで、内部名はそのままで表示名を別途設定できます。
<img width="350" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/446333d3-0feb-eb0e-da8b-ca9c76efc924.png">

内部名を後から知りたい場合は、URLの内容を確認するか、「リストの設定」から確認できます。
<img width="250" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/dd4a6fcb-934e-c458-eedc-5a46d0a368f0.png">

<img width="200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/ce3abe0a-130a-f8b4-2c83-7b4bca7eec1c.png">

## 列の定義
リストには最初から定義されている列が20程度あります。
内容の確認／表示をしたい場合は「現在のビューの編集」を選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/8da077cc-ab78-1409-c227-97d06af4e313.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/9ba411fd-2ebb-538d-6881-761c8c294536.png)
**【既存の列の特徴】**
１．「タイトル」と「添付ファイル」以外は自動入力される列
２．必須入力の列は「ID」と「タイトル」
３．「ID」は数値が自動採番される
４．基本的に削除／変更はできない（表示名は変更可能）

`登録者` `登録日時` `更新者` `更新日時` の列が既存で用意されてるのは便利ですね！
`登録者` や `更新者` はログインしているAADのユーザーが自動で反映されます。

列を新たに定義する際は、追加したい場所にカーソルを合わせると紫色のプラスボタンが表示されるのでクリックします。（その後、D&D操作で列の並び順を変更することも可能）

また、データ型の種類は以下があります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/e4d684a5-fcb1-2a35-1f70-120e35c8f453.png)
（何故か、追加時と設定画面とでは、一部データ型の名称が異なります・・・）
<img width="270" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/5e9dd733-a14a-70a2-228a-57fd0350a19d.png">

以下については他であまり見ない、特殊なデータ型かと思います。

| 種類 | 概要 |
|:-|:-|
|個人   |AADのユーザーまたはグループを格納   |
|場所   |都道府県や番地など場所情報の入力に特化   |
|選択肢   |選択肢を定義してその中から選択。後から変更可能   |
|ルックアップ   |別のテーブル列を参照   |
|ハイパーリンク   |URLの入力に特化   |

また、列名はリスト名と異なり、内部名／表示名に関わらず重複すると「この名前の列は既に存在します。」とエラーが表示されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/77e48526-2deb-2d22-13f9-8448a06c021c.png)
入力を必須にしたい列の場合「この列に情報が含まれている必要があります」を有効にすることで設定できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/187194f1-32d2-4c4c-17ad-c9250a0c6e10.png)

:::note warn
Automate 経由でデータを更新したい場合に、必須列は変更の有無に関わらず、更新する値を必ず指定する必要があります。
そのため、本当に必須としたい列以外はむやみに必須設定しない方がいいと思われます。
:::

列の表示名を設定後、内部名を後から確認したい場合は「リストの設定」画面から対象の列を選択することで、URLの末尾から確認できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/3715f87a-c7a3-e752-733f-93bd349eebf6.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/ccffec50-8731-13a1-a4ab-5317ff526926.png)

:::note warn
既にレコードが存在するテーブルに後から列を追加する際、既定値を指定している場合でも null（または空） が格納される場合があります。
真偽値を格納する “はい/いいえ” 列で、見かけ上 false でも実際には null だった場合、処理内容によってはエラーになるので注意が必要です。
:::

「日付と時刻」列に登録された日時が標準時間（マイナス９時間表示）となっている場合は、以下の設定が必要です。

> Lists -> 歯車マーク -> リストの設定 -> 歯車マーク -> サイトの設定 -> 地域の設定 -> タイムゾーンを「(UTC+09:00)大阪、札幌、東京」に変更後「OK」を押下

https://support.microsoft.com/ja-jp/office/%E3%82%B5%E3%82%A4%E3%83%88%E3%81%AE%E5%9C%B0%E5%9F%9F%E8%A8%AD%E5%AE%9A%E3%81%AE%E5%A4%89%E6%9B%B4-e9e189c7-16e3-45d3-a090-770be6e83c1a

## ビューの定義
「新しいビューを作成する」または「ビューに名前をつけて保存」することで新たにビューを定義できます。

:::note info
Automate から List にアクセスする場合、用途に合わせた列に絞ったビューを指定することで取得データ量を削減できたり、登録・更新時には、不要な列を非表示にできるといったメリットがあります。
:::

<img width="200" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/f99c3382-09b7-18e0-6c44-f93765c3477f.png">　
「これをパブリックビューにする」にチェックを入れた場合は、その List を共有している他のユーザーも作成したビューを利用できるようになります。
<img width="350" alt="image.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/1225dad1-8aca-ff9e-f5b3-31b4cf4a61a9.png">
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/852d77ef-98ee-ed02-210c-37543726f231.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/241051/438c3904-d42e-f236-6dd3-5378be9c5be9.png)
こちらも「リスト」や「列」と同様に内部名（Webアドレス）／表示名（ビュー名）が存在しますが、どちらも後から変更が可能になっています。
（別途、内部的に一意な識別子を持ってるようなので、実際にはWebアドレスは内部名とは認識が異なるかもしれません。）

## さいごに
「リストの作成」、「列の定義」、「ビューの作成」といったリストを利用する上での基本的な内容について纏めましたので、一先ずはこの内容で使い始めることが可能かと思います。
より深く扱いたい場合には、もっとできることがありそうですが、自分もまだまだそこまでは理解できていないので、新たに知った内容は個別に記事にしていきます！

またRDBのように扱う場合にはテーブルの結合などもできるといいですが、自分では試せていないので参考リンクだけ貼っておきます。

https://assistantofkoo.hatenablog.com/entry/2022/04/22/002223

## 宣伝
ユニフェイスでは新しいことにチャレンジしたい人材を募集しておりますので、気になる方はぜひご応募お願いします😊
[技術ブログ](https://hub.uni-face.co.jp/)も公開していますのでこちらもチェックしてみてください！

https://uni-face.co.jp/