【JS応用|実務向け】JavaScriptで「リスト表示」を劇的に簡素化する Intl.ListFormat の活用術

導入: なぜ Intl.ListFormat が重要なのか

Web開発において、配列内の要素を「A, B, C」や「A、B、およびC」といった形式で文字列化する処理は頻繁に行われます。従来は、配列の長さを確認して最後の要素だけ結合文字を変えるような、冗長なif文やmap処理を書いていませんでしたか? Intl.ListFormat を使えば、ロケール(言語設定)に応じた適切な区切り文字を自動で挿入でき、コードの可読性と国際化対応の質を大幅に向上させることができます。

基礎知識: Intl.ListFormat とは

Intl.ListFormat は、ECMAScript Internationalization API の一部で、リストを言語的に正しい形式で整形するための標準機能です。

  • ロケール対応: 日本語なら「、」や「および」、英語なら「,」や「and」など、言語ごとのルールに従った接続詞を自動補完します。
  • スタイル指定: 長い形式(long)、短い形式(short)、狭い形式(narrow)を選択可能で、UIのスペースに応じた調整が容易です。

実装/解決策: 基本的な使い方

使い方は非常にシンプルです。まず Intl.ListFormat のインスタンスを作成し、その format メソッドに配列を渡すだけです。オプション引数で「型」を指定することで、単なる羅列(conjunction)だけでなく、選択肢(disjunction)としての表現も可能です。

サンプルプログラム: 実践的なリスト整形コード

以下のコードは、ブラウザのコンソールなどでそのまま実行可能です。

// 1. 基本的な日本語リストの生成
const fruits = ['りんご', 'みかん', 'バナナ'];
const jaList = new Intl.ListFormat('ja-JP', { style: 'long', type: 'conjunction' });
console.log(jaList.format(fruits)); // 出力: "りんご、みかん、およびバナナ"

// 2. 英語でのリスト生成
const enList = new Intl.ListFormat('en-US', { style: 'long', type: 'conjunction' });
console.log(enList.format(fruits)); // 出力: "りんご, みかん, and バナナ"

// 3. 選択肢としてのリスト(または)
const options = ['設定', '保存', 'キャンセル'];
const disjunctionList = new Intl.ListFormat('ja-JP', { type: 'disjunction' });
console.log(disjunctionList.format(options)); // 出力: "設定、保存、またはキャンセル"

応用・注意点: 現場で役立つ補足情報

実務で活用する際のポイントは以下の通りです。

  • ブラウザ互換性: 現在の主要ブラウザ(Chrome, Firefox, Safari, Edge)すべてでサポートされていますが、極端に古い環境(IEなど)をサポート対象とする場合は、polyfillの導入を検討してください。
  • 動的なロケール指定: ユーザーのブラウザ設定やアプリ内の言語設定に合わせて、第一引数に動的にロケール(navigator.language など)を渡すことで、グローバルなアプリケーションでも自然なUIを提供できます。
  • パフォーマンス: インスタンス生成はコストがかかるため、ループ内で何度も new するのではなく、必要なロケールごとにインスタンスをキャッシュして再利用するのがベストプラクティスです。

このAPIを活用して、手動の文字列結合処理を減らし、より堅牢でメンテナンス性の高いコードベースを目指しましょう。

タイトルとURLをコピーしました