JavaScriptでUnicode正規化を行う際に使用する`normalize()`メソッドについて、基本的な使い方と実践的な例を解説します。

normalize()メソッドとは

`normalize()`は文字列に対してUnicode正規化を行うメソッドです。文字列中の特殊文字や結合文字を統一された形式に変換することができます。

基本的な使い方

const text = "コンニチハ";
const normalized = text.normalize("NFKC");
console.log(normalized); // "コンニチハ"

正規化形式の種類

normalize()メソッドには4つの正規化形式があります:

1. `"NFC"` - 正準分解後に正準結合(デフォルト)

2. `"NFD"` - 正準分解

3. `"NFKC"` - 互換分解後に正準結合

4. `"NFKD"` - 互換分解

実践的な使用例

1. 半角カタカナを全角カタカナに変換

const halfWidth = "アイウエオ";
const fullWidth = halfWidth.normalize("NFKC");
console.log(fullWidth); // "アイウエオ"

2. 英数字の正規化

const mixed = "Hello123";
const normalized = mixed.normalize("NFKC");
console.log(normalized); // "Hello123"

3. 濁点・半濁点の正規化

// 結合文字として濁点がある場合
const combined = "か\u3099"; // か + 濁点
const normalized = combined.normalize("NFC");
console.log(normalized); // "が"

エラー回避のポイント

  • 文字列が`undefined`や`null`の場合はエラーが発生するため、事前にチェックが必要です
  • 非対応のブラウザがある場合はポリフィルの使用を検討してください
// 安全な使用例
function safeNormalize(text) {
  if (typeof text !== 'string') return text;
  return text.normalize("NFKC");
}

ブラウザ対応状況

normalize()メソッドは以下のブラウザで使用可能です:

  • Chrome 34以降
  • Firefox 31以降
  • Safari 10以降
  • Edge 12以降
  • Internet Explorer 未対応

まとめ

Unicode正規化は国際化対応やデータの正規化において重要な機能です。normalize()メソッドを使用することで、文字列の一貫性を保ち、より安定したアプリケーションの開発が可能になります。