Punycode(ピュニコード)
ドメイン名にアルファベット以外を使うための仕組みだよ
アルファベット以外の文字を内部的にアルファベットに変換するよ
もしくは、その変換で使うアルファベット以外の文字とアルファベットの対応表だよ
簡単に書くよ
Punycode(ピュニコード)とは
ドメイン名
(IPアドレスに付けた人間様向けの名前)にアルファベット以外を使えるようにするための仕組み
であり
「ほげ.example.com」→「xn--18j4d.example.com」のように、ドメイン名に含まれるアルファベット以外の文字を内部的にアルファベットに変換する仕組み
です。
あるいは
ドメイン名に含まれるアルファベット以外の文字を内部的にアルファベットに変換するときに使う、アルファベット以外(日本語とか)の文字とアルファベットの対応表
です。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として「ドメイン名」に関する あれやこれやについて説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
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」の部分ですね。
ドメイン名は基本的にアルファベットのみで構成されています。
例えば「hoge.example.com」のような形です。
昔は、ドメイン名にはアルファベットしか使えませんでした。
技術の進歩と共に、今ではアルファベット以外も使えるようになっています。
例えば「ほげ.example.com」のような日本語を含むドメイン名も使えます。
以上を踏まえて
「ドメイン名にアルファベット以外を使う」を実現するための仕組み
のひとつが「Punycode(ピュニコード)」です。
実は、ですね。
コンピュータさんは、いまだにアルファベットしか分かりません。
日本語とかは「何これ?模様?」なのです。
例えば
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です。
あるいは
「ほげ」と「xn--18j4d」
のような、変換で使う対応表を指して「Punycode」と呼ぶ場合も あります。
もしくは
http://xn--18j4d.example.com
のような、アルファベットに変換済みの(アルファベット以外を使った)ドメイン名の書き方を指して「Punycode表記」と呼んだりもします。
なお、アルファベット以外を使ったドメイン名とPunycode表記のドメイン名は実質的に同じです。
http://ほげ.example.com
と
http://xn--18j4d.example.com
は、どちらを書いても同じ場所を見にいきます。
「ほげ」の部分が内部では「xn--18j4d」に変換されるからです。
昔のWebブラウザ(ホームページを見るときに使うソフト)は、Punycodeの仕組みに対応していないものも(多分)ありました。
そのため、アルファベット以外のドメイン名を書く場合は、古いWebブラウザを使っている人を考慮して「ほげ」ではなく「xn--18j4d」と書く人も多かったようです。
最近のWebブラウザは内部で変換してくれるはずです。
あまり気にしなくて大丈夫だと思います。
一言でまとめるよ
まぁ「Punycode」って単語が出てきたら「ドメイン名
(IPアドレスに付けた人間様向けの名前)にアルファベット以外を使うための仕組みなんだな~」と お考えください。






