日本語のローマ字化には複数の方式が並立しており、パスポートや道路標識で公式に使われるヘボン式(Hepburn)が最も一般的だが、学校教育で教わる訓令式とは綴りが異なる場合がある。たとえば「し」はヘボン式ではshiだが訓令式ではsiになる。さらに漢字には複数の読み方があるため、同じ漢字の見出しでもどの読みをローマ字化の元にするかで生成されるスラッグ自体が変わってしまう。
スラッグ変換が行うこと
- すべての文字を小文字に変換する。
- スペースと句読点をハイフンに置き換える。
- 漢字仮名交じりの日本語をヘボン式に近い形でローマ字化するか、対応できない文字を削除する。
- 連続するハイフンを短縮し、先頭と末尾のハイフンを削除する。
例えば、「こんにちは、世界!元気ですか?」というタイトルはkonnichiwa-sekai-genki-desu-kaのようになる。
通常のURLエンコードだけでは不十分な理由
パーセントエンコーディング(日本語文字の%E3%81%82など)はURL上で技術的には有効だが、人間には読めず、アドレスバーやリンク共有時に信頼できないように見える。スラッグは技術的な妥当性だけでなく、この可読性の問題を解決する。
この機能が必要な理由
- 日本語のブログ投稿のタイトルからURLを自動生成する。
- オンラインストアの商品名から読みやすい識別子を作成する。
- 任意のテキストから許可されていない文字を避けてファイル名やCSSクラスを作成する。
衝突: 異なるタイトルが同じスラッグになる場合
「こんにちは、世界!」と「こんにちは世界」というタイトルは、正規化(小文字化、句読点の削除)後にどちらも同じスラッグkonnichiwa-sekaiになる。元のテキストが異なっていてもだ。スラッグを一意な識別子(たとえば記事のURL)として使う場合、この衝突は別途解決する必要がある — 典型的には重複した側に数値のサフィックスやIDを追加する。