もっと活用したい! 日本語ドメイン

Internet Explorer 7 も正式リリースされ、主なブラウザは全て日本語ドメインへ対応してきました。 当サイトでは、日本語ドメインの一層の普及を目指し、実際に日本語ドメインで運営するのはもちろんのこと、 様々な運用実験を試みていきます。

日本語ドメイン取得.com

Punycode (プニーコード)

Nameprep の規定に沿って表現を統一された Unicode を 現状で既にドメイン名に使用されている 37文字 で表現したものが Punycode である。 そしてその特徴としては、Punycode で表現されていることを表すのに プレフィックス xn-- が文字列の先頭に付加されている点である。言い換えるなら、 xn-- が先頭にあるドメイン名は国際化ドメイン名であると言える。

ドメイン名には、最長63文字 という制限がある。Punycode が採用された背景には、 この変換が圧縮的要素も含んでおり、変換後文字列が比較的短いという理由も含まれている。

この変換についてのアルゴリズムを厳密に説明する場合、「一般化可変長整数」 を導入しなければならない。 しかし、ここでは難解な 「一般化可変長整数」 を導入してまでアルゴリズムの詳細を説明することはせずに、 全体としてどのような変換が行われているのか、解りやすくその概要を示すことにする (詳細が必要な場合には RFC 3492 を参照してください)。 ここでは、例えば、250,1,3 という並びを表す場合、 250001003 のように決まった長さを割り当てなければ区切りが不明確で一意に決まらないのだが、 25013 のように表現しても区切りを明確に出来るように工夫された方法で、 小さい数値ほど短く表現できる整数だと思ってください。基数は 36 で、それぞれの桁が a~z,0~9 で表されます。

RFC 3492 でも日本語は英数字と国際化文字の混合した例を示すのに都合がいいとして書かれている 3年B組金八先生 例に沿って見ていくことにしよう。

Punycode では、まず、元々ドメインに使用できる文字は変更することなく括り出される。 そして括り出し作業が終わった段階で処理されていない文字が残っていた場合、 - (ハイフン) が区切り文字として付加される。 この段階で 3B- となり、ここから実質上、国際化文字のエンコードに入っていくことになる。

可変長整数として扱うので、なるべく小さな数値で表現したいということは理解いただけるだろう。 そのために、この変換アルゴリズムでは Unicode で表したときの数値の小さい順に処理し、 次の値は現在の値からの増分で表現する方法をとっている。Unicode の値が日本語の場合、 16進数で 3040 以上に集まっていることを考えれば、かなり有効に小さな値に変更できることが予想できる。

この場合、「先」 の字が16進数で 5148 と最も小さい。したがってこの文字から処理されることになる。 しかし、復元するときのことを考えると、この文字がどこに配置されるかの情報を持っていなければいけないことになる。 既に処理された 3B に対して、3 の前、 3B の間、 B の後と3通りの挿入位置が考えられる。 実際の数値と挿入位置の情報を持たせた数値として、整数の割り算における剰余を巧みに利用している。つまり、 全体の3番目に処理する「先」の字は、目的の数値を3倍して、 位置は B の後ろを示す 2 を加えるといった具合だ。 復元されるときにはこの文字が処理された段階で 3B先 となる。

次に小さいのは「八」 の 516B である。増分として算出された値を、4番目の文字の処理なので4倍し、 挿入位置として B の間なので 2 を加える。 復元されるときにはこの文字が処理された段階で 3B八先 となる。

同様の処理を繰り返すことによって全体が変換される。 そして変換された文字列の先頭にプレフィックス xn-- が付加されて Punycode の完成となる。

このような処理を行わなければならないので、 Punycode を見てそのコードが意味する文字を判断したり、 逆に日本語ドメインの変りに Punycode で入力するといったことは、アプリケーションの助けなしには無理であろう。

当サイトにも Punycode の変換ツール を用意してありますのでご活用ください。 現段階では、ブラウザの対応はかなり進んでいるものの、メール関係は全くと言っていいほど対応されていません。 普通に運用できる日が待ち遠しいものです。

日本語ドメインとは
取得するには
日本語ドメインの運用
国際化ドメインの仕組み
文字コードについて

ツール一覧

システム
サブドメイン形式 多機能
短縮 URL システム
サポート掲示板

トップページ
ブログ
topics archive