すべての記事

Slugify:タイトルが有効なURLに変換される仕組み

日本語のローマ字化には複数の方式が並立しており、パスポートや道路標識で公式に使われるヘボン式(Hepburn)が最も一般的だが、学校教育で教わる訓令式とは綴りが異なる場合がある。たとえば「し」はヘボン式ではshiだが訓令式ではsiになる。さらに漢字には複数の読み方があるため、同じ漢字の見出しでもどの読みをローマ字化の元にするかで生成されるスラッグ自体が変わってしまう。

スラッグ変換が行うこと

  • すべての文字を小文字に変換する。
  • スペースと句読点をハイフンに置き換える。
  • 漢字仮名交じりの日本語をヘボン式に近い形でローマ字化するか、対応できない文字を削除する。
  • 連続するハイフンを短縮し、先頭と末尾のハイフンを削除する。

例えば、「こんにちは、世界!元気ですか?」というタイトルはkonnichiwa-sekai-genki-desu-kaのようになる。

通常のURLエンコードだけでは不十分な理由

パーセントエンコーディング(日本語文字の%E3%81%82など)はURL上で技術的には有効だが、人間には読めず、アドレスバーやリンク共有時に信頼できないように見える。スラッグは技術的な妥当性だけでなく、この可読性の問題を解決する。

この機能が必要な理由

  • 日本語のブログ投稿のタイトルからURLを自動生成する。
  • オンラインストアの商品名から読みやすい識別子を作成する。
  • 任意のテキストから許可されていない文字を避けてファイル名やCSSクラスを作成する。

衝突: 異なるタイトルが同じスラッグになる場合

「こんにちは、世界!」と「こんにちは世界」というタイトルは、正規化(小文字化、句読点の削除)後にどちらも同じスラッグkonnichiwa-sekaiになる。元のテキストが異なっていてもだ。スラッグを一意な識別子(たとえば記事のURL)として使う場合、この衝突は別途解決する必要がある — 典型的には重複した側に数値のサフィックスやIDを追加する。

ツールを試す