こんにちは。SharePoint Online(以下SPOと略称)のちょっとしたテクニックを紹介できればと思います。
SPOのWebパーツ機能の一つであるリストですが、SPOを使う上で非常に利用頻度の高いコンテンツだと思います。使い方は様々ですが、今回はリストの裏側部分の注意すべき点を紹介します。
SPOのリスト,内部名とは
リストについて
まずはリストについて説明します。SPOのリストとは Excel の表のようにデータを管理できる仕組みです。複数の人と情報を共有しながら、一覧で管理したい内容を整理する時に使います。(例:問い合わせ管理リスト、メンバー一覧、案件管理表 など)
リストは、SPOサイトの主要な構成要素の 1 つとして定義されており、テキスト・数値・日付・選択肢・画像など、用途に応じた列を自由に追加できます。
また、Excelの行にあたるものを、SPOのリストでは 「アイテム」 と呼びます。1アイテムごとに詳細画面があり、入力内容を確認したり、添付ファイルを追加したりできます。
このアイテムの表示形式を決定するものは列の種類で選択することができます(列の種類の説明については割愛させていただきます)。実際のSPOのリストのイメージ画像は以下になります。このようにデータを保持する際に利用したり、掲示板として利用したりします。

内部名について
内部名とは、リスト内にある列のシステム側で識別している名前になります。
SharePoint Online のリストで列(カラム)を作成すると、画面に表示される列名とは別に、「内部名(Internal Name)」が自動的に設定されます。この内部名は、次のような場面で使われる システム用の識別子 です。
- URLの一部に使用されます
- Power AutomateやPower Apps、カスタムスクリプトで列を参照する際に使用されます。
- 一度設定されると後から変更できない重要な値となっています
なぜ内部名を半角英数字にした方が良いのか
内部名は、列を作成したときの入力内容を元に自動生成されます。ここが重要なポイントとなっており、日本語で作成した場合は、UTF-16形式のコード(例:_x30ab_など)にエンコードされます。(例)「カテゴリ」→ _x30ab__x30c6__x30b4__x30ea_
実際に下記画像赤枠のように"有効期限"という列を、全角文字で作ります。

列が作成されると、「列の編集」画面のURLも列の内部名を表示します。全角文字で列を作成した場合、以下画像赤枠部分のように、内部名がエンコードされた値になってしまいます。

全角文字ではエンコードされてしまうことが確認できたので、次は半角英数字のパターンを紹介します。"有効期限"ではなく"limittime"にして半角英数字で作成します。保存した後に再度「列の編集」のURLを確認すると、下記画像赤枠のようにField=の部分がlimittimeになっていることが確認できます。

リストを使う上で日本語の方が分かりやすいケースはあると思いますが、その場合、一旦半角英数字で列を作成してから日本語名に変更することをおすすめします。
そうすれば、内部名は英語名にしつつ、リストを利用するユーザーにも分かりやすくすることができます。
なお、列名は後から変更することは可能ですが、内部名は変更することができません。SPOのリストの設計で、この内部名の命名規則が曖昧のままだと、後で運用管理者の方がリストを修正する際、一目で判別しづらく、負担増加につながります。
また、PowerShell上からリストを操作する際にも、内部名がエンコード状態だと何の値を指しているかが分かりづらいといった事が発生する恐れがあります。
まとめ
今回はSPOリスト列の内部名を、半角英数字にした方が良い理由について紹介させていただきました。
利用ユーザー目線では分かりづらいテクニックかもしれませんが、システム運用者などはこういった部分にも注意が必要なことがあります。そのような際に参考になれば幸いです。