Punycode表記(ピュニコード表記)
ドメイン名の表記方法だよ
アルファベット以外の文字を対応するアルファベットに変換したものだよ
簡単に書くよ
Punycode表記(ピュニコード表記)(読:ピュニコードヒョウキ)とは
アルファベット以外が含まれるドメイン名
(IPアドレスに付けた人間様向けの名前)の表記方法(のひとつ)
であり
「ほげ.example.com」→「xn--18j4d.example.com」のように、アルファベット以外の文字を対応するアルファベットに変換することで、アルファベット以外が含まれるドメイン名を全部アルファベットで表現する表記方法のこと
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・IPアドレス
・ドメイン名
・Punycode(ピュニコード)
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
IPアドレスは「コンピュータさん向けのネットワーク上の住所」です。
インターネットっぽい通信において、送信先を特定するときとかに使う情報です。
「198.51.100.2」のような形式になっています。
ドメイン名は「IPアドレスに付けた人間様向けの名前」です。
インターネットやメールなどで使われる住所です。
「i-3-i.info」のような形式になっています。
URL(ホームページの住所に相当する情報)においては「http://」や「https://」の後ろの部分がドメイン名です。
「https://i-3-i.info/index.html」であれば「i-3-i.info」の部分ですね。
メールアドレスにおいては「@」の後ろの部分がドメイン名です。
「hoge@example.com」であれば「example.com」の部分ですね。
Punycodeは「ドメイン名にアルファベット以外を使うための仕組み(のひとつ)」です。
ドメイン名は基本的にアルファベットのみで構成されています。
例えば「hoge.example.com」のような形です。
昔は、ドメイン名にはアルファベットしか使えませんでした。
技術の進歩と共に、今ではアルファベット以外も使えるようになっています。
例えば「ほげ.example.com」のような日本語を含むドメイン名も使えます。
ところがですね。
実は、コンピュータさんは、いまだにアルファベットしか分かりません。
日本語とかは「何これ?模様?」なのです。
例えば
http://hoge.example.com
は理解できます。
「『http://hoge.example.com』のホームページが見たいのね?」と理解して、ホームページのファイルをもらってきてくれます。
それに対して
http://ほげ.example.com
は理解できません。
「『http://??.example.com』のホームページが見たいのね?」と解釈します。
「ほげ」の部分が「??」になっていますね。
これでは、ホームページのファイルをもらいに行けません。
この問題を解決するためにコンピュータさんは、人間様の目に見えないところで、ドメイン名のアルファベット以外をアルファベットに変換することにしました。
例えば「ほげ」に対応するアルファベットが「xn--18j4d」だったとしましょう。
人間様が
http://ほげ.example.com
と入力しました。
これが内部的に
http://xn--18j4d.example.com
に変換されます。
変換された後のドメイン名はアルファベットだけで構成されています。
コンピュータさんが理解できます。
このような
内部的にアルファベットに変換することでドメイン名に半角英数字以外を使えるようにする仕組み
がPunycodeです。
以上を踏まえて
アルファベット以外が含まれるドメイン名を全部アルファベットで表現する表記方法
が「Punycode表記」です。
例えば
http://ほげ.example.com
が本来のドメイン名です。
http://xn--18j4d.example.com
がPunycode表記のドメイン名になります。
Punycode表記を使うメリットは、Punycodeに対応していないWebブラウザ(ホームページを見るときに使うソフト)でも問題が出ないことです。
昔のWebブラウザはPunycodeに対応していないものも(多分)ありました。
アルファベット以外をアルファベットに、内部的に変換できなかったのです。
Punycode表記であれば、Punycodeの仕組みに対応していないWebブラウザでも問題ありません。
「ここから持ってきてね!」と伝えるドメイン名が、すでにPunycodeのルールに従って変換したもの(全部アルファベット表記のもの)だからです。
イメージは
「新しい仕組みを作ったよ!アルファベット以外も使えるよ!」
「えっ?君は対応していないの?!」
「仕方ないな~。じゃあ、アルファベットに戻したのを教えてあげるよ!」
です。
一方、Punycode表記のデメリットは、直感的な分かりにくさと、本来のドメイン名より長くなることでしょう。
Punycode表記から元のドメイン名を推測するのは、簡単では ありません。
また、Punycode表記にすると、基本的には元のドメイン名より文字数が多くなります。
ドメイン名にアルファベット以外を使う主な理由は、母国語の方が直感的に意味をつかみやすいからです。
そのメリットを手放すことになります。
確かに
http://ほげ.example.com
(Punycode表記:http://xn--18j4d.example.com)
のようにPunycode表記も書いてあげた方が親切ですけどね。
個人的には、Punycode表記に対応していないWebブラウザは切り捨てるか、最初からアルファベットのみのドメイン名にした方が無難だと思っています。
一言でまとめるよ
まぁ「Punycode表記」って単語が出てきたら「アルファベット以外が含まれるドメイン名
(IPアドレスに付けた人間様向けの名前)を全部アルファベットで表現する表記方法なんだな~」と お考えください。






