Punycode(“ピュニコード”と発音)はRFC 3492で定義されるUnicodeの符号化方式で、国際化ドメイン名(IDN:Internationalized Domain Name)を従来のASCIIドメイン名と互換性のある表現形式へ符号化(ACE:ASCII Compatible Encoding)するために考案された規格である。
インターネットでは、Unicodeの符号化方式としてRFC 3629で定義される8ビット符号化方式のUTF-8を採用するのが一般的だが、元来ホスト名には7ビット符号化方式のUS-ASCIIを使用することを前提としていたため、IDNでは下位互換性を保つためにPunycodeを採用している。
なお、Punycodeは「Puny(小さな)」と「Code」を組み合わせた造語で、Punycodeの考案者が以下の理由で名付けたものである。
- Unicodeと同じ音を繰り返すことで韻を踏んでいる
- Punycodeは3つの意味で「小さく」設計されている
- 符号化のために使用する文字が少ない(Unicodeで定義される10万文字以上を、Punycodeでは37文字(英字・数字・ハイフン)だけで符号化できる)
- 符号化された結果の文字列が、Base64など他のACE方式に比べて短い
- 符号化のためのコードが小さい(プログラムのステップ数が少ない)
神戸 直樹(かんべなおき)
所属:株式会社日本レジストリサービス(JPRS) システム部
2004年にJPRS入社。レジストリシステムの開発・保守から、レジストリデータベース、WHOISシステムの管理運用まで幅広い業務にたずさわる。現在は、WHOIS代替プロトコルのプロトタイプ開発、WHOISにおける国際化登録データの要件定義および、データのモデル化の検討などに従事。2009年から2013年にかけてDNSソフトウェアである「BIND 10(現Bundy)」の開発プロジェクトに開発者として参加。
著書・執筆:2009年〜2010年「月刊ASCII.technologies」(アスキーメディアワークス)の連載記事「正しく学ぶDNS」の一部執筆を担当。
Copyright © ITmedia, Inc. All Rights Reserved.