国際化ドメイン名(IDN : Internationalized Domain Name) を
操作するプログラムを開発する際に
RFCを読みながら一から開発なんかしていられない。
そこで、国際化ドメイン名 (IDN) を
操作できるライブラリやソフトウェア開発キット (SDK) を探してみる。
JPNIC 「 idnkit 」
まず、日本ネットワークインフォメーションセンター(JPNIC) の
「
国際化ドメイン名ツールキット(idnkit)バージョン1.0」。
idnkitとは
- 国際化ドメイン名とPunycodeのエンコーディング変換コマンド: idnconv
- IDNの処理機能を提供するC言語用API(ライブラリ): libidnki
から構成されている、とある。
また、 idnkit とは別に、ダウンロード・ページには
各種Windows の Winsock32 ラッパー「idn wrapper」も含まれているようだ。
これをインストールすると、国際化ドメイン名に対応していないWindowsアプリが
国際化ドメイン名対応になるらしい。
この idnkit を FreeBSDにインストールするには
「
ports/dns/idnkit/」
のページもあるので、通常のportsのインストールと同様にすればよいであろう。
また、PHP等から利用するには、
「
php-idnkit について」
のページに解説がある。
VeriSign 「 IDN SDK 」
次に、VeriSign の
「
IDN SDK」
こいつは Java API と C API をサポートしているようだ。
GNU IDN Library 「 Libidn 」
最後に、お馴染みの GNU からリリースされている IDN Library
「
Libidn 」
また、Rubyから この GNU の Libidn を利用するための
Ruby Bindings for the GNU LibIDN library
というのがある。
これについて詳しくは、LibIDN Ruby Bindings の
「
ドキュメント」
ページにある。
その他
上記以外のライブラリやSDKについては、
「
IDN-enabled Applications「Programming Languages」」
に 詳しくまとめられている。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:41
| コメント (0)
| トラックバック (0)
日本ネットワークインフォメーションセンターの
「
汎用 JP ドメイン名登録等に関する技術細則」
から、日本語ドメイン名に関する
主な 技術的制限(ルール)を まとめておく。
- 「ドメイン名」は、ラベルをピリオド(".")で区切って連結した文字列である。
- 「ASCIIラベル」は、英字26文字("A"から"Z")、数字10文字("0"から"9")、そして ハイフン("-") の
合計 37文字からなる文字列である。ただし、ASCIIラベルの先頭と末尾の文字はハイフン
であってはならない。
- ASCIIラベル中では、英字の大文字・小文字の区別はなく同じ文字とみなされる。
- ASCIIラベルの長さは、63文字以下でなければならない。
- 日本語ラベルの長さは、15文字以下でなければならない。
上記に、「日本語ラベルの長さが15文字以下」とあるが、
これは15文字までの日本語であれば、Punycode(ピュニコード)にエンコードした結果が
ASCIIラベルの63文字以内に収まるのであろう。
実際には、15文字よりもっと長い日本語文字列でも
十分に63文字以内に収まるのだが、
Punycode(ピュニコード)の場合、結果の文字長は
変換してみなければわからないので
このような制限が設けられていると思われる。
また、上記細則には記載されていないが、
ドメインのラベルを連ねた際の長さについて、
RFC1035 [DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION]
には、
To simplify implementations, the total number of octets that represent a
domain name (i.e., the sum of all label octets and label lengths) is
limited to 255.
とある。これの日本語訳では
実装を単純化するために、ドメイン名を表すオクテットの合計の数(すべてのラ
ベルオクテットとラベル長の合計)は255に制限されます。
とある。
結局 規格的には ラベル長の合計は 255 に制限されているようだ。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:00
| コメント (0)
| トラックバック (0)
日本語を含めた 国際化ドメイン名 (IDN) に対応した
Punycode 変換・逆変換サービス を提供しているサイトを
まとめてみる。
また、日本語.jp の
「
国際化ドメイン名対応アプリケーション」
ページには 国際化ドメイン名に対応したアプリケーションが まとめられている。
ちなみに、この情報のオリジナルはベリサイン社の
「
IDN-enabled Applications」
ページとなっている。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:05
| コメント (0)
| トラックバック (0)
Punycode(ピュニコード)とは
インターネットで使われるドメイン名にアルファベットや数字以外に漢字なども使えるようにする
国際化ドメイン名( IDN (Internationalized Domain Name) )
で使われる文字符号化方式で、IETFにより、
「
RFC3492」
として標準化されている。
国際化ドメイン名では、ドット(.)で区切られたドメイン名の階層レベルごとに
エンコードされ、それぞれの先頭には「xn--」という識別子が付けられる。
また、大文字と小文字は区別されない。
特に このピュニコードでは、
文字数最長63文字、
文字の種類37文字 と
非常に過酷な制限のあるドメイン名の空間において、
できるだけ効率よくエンコードができるように
非常に複雑な変換を行っている。
その結果、通常のエンコードでは予想できない変換結果となる。
具体的には、例えば、アルファベットと全角文字が交じり合った
「日本語ドメイン名EXAMPLE.jp」というドメイン名は、
ピュニコードに変換すると、
「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」
のように、「EXAMPLE」という部分が小文字に変換されかつ
前の方に来ている。
また
「3年B組金八先生.jp」のように、「3」と「B」に間に「年」という
日本語が存在している場合でも
「xn--3b-ww4c5e180e575a65lsy2b.jp」
というように、「3」と「B」が先頭部分に移動してくっついてしまっている。
このおもしろい変換メカニズムには
「一般化可変長整数」というアルゴリズムが採用されており、
詳細については もちろん 前述の
「
RFC3492」
に書かれているわけだが、それを読み解くのは大変だ。
それを
「
日本語ドメイン取得.com」
の
「
Punycode (プニーコード)」
解説ページでは とても判りやすく解説してくれている。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:47
| コメント (0)
| トラックバック (0)
IDNAについて
「
日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)」
の
「
国際化ドメイン名」
のページから引用させていただくと、
国際化ドメイン名を使って通信を行う際には、
ASCII文字列からなるドメイン名に変換を行った上で通信が行われることになりますが、
この変換の際に使われる技術と処理手順を規定しているものが
IDNA(Internationalizing Domain Name in Application)と呼ばれる技術です。
このIDNAでは、 ユーザ側のアプリケーションで国際化ドメイン名の解釈を行うことや、
入力された文字列をNAMEPREPという仕組みで正規化すること、
既存のDNSとの互換性を保つために国際化ドメイン名をPunycode と
呼ばれるアルゴリズムでASCII文字列に変換することなどが定められています。
国際化ドメイン名を利用する際には、
各アプリケーションはこのIDNAに従って国際化ドメイン名をネットワークに送出します。
とある。
また、
RBB Today IT辞典 の
「
IDNA(アイディエヌエー。Internationalizing Domain Names in Applications)」
によると、このIDNAの仕様は「RFC 3490」として規定されている、
とあり、具体的には、
- ドメイン名に使用できる文字は、Unicodeで規定されている文字(一部使えない文字もある)とする。
- Unicodeの文字列を NAMEPREP により正規化を行う。
- ASCII文字列への変換(ACE、ASCII Compatible Encoding)には、Punycodeを使用する。
- Punycodeで変換された文字列の前には、変換されたことがわかるように「xn--」(ACE prefix)をつける。
のようなことを国際化ドメイン名を扱うアプリケーションの内部で行うことになっている、
とある。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:38
| コメント (0)
| トラックバック (0)
インターネットのアドレスのうち、「skymerica.com」のような部分のことを
ドメイン名という。
このドメイン名に日本語をはじめとした
アルファベット以外の多言語文字を使ったモノを
「国際化ドメイン名 (IDN)」と呼んでいる。
ちなみに、IDNとは「Internationalized Domain Name」の頭文字。
この国際化ドメイン名については、
「
日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)」
の
「
国際化ドメイン名」
ページに 詳しい説明がある。
それによると、
国際化ドメイン名とは、
従来のドメイン名で使用されている
アルファベット、 数字、ハイフン
に加え、そのラベルに 漢字 や ひらがな、アラビア文字 などの
ASCII以外の文字を使えるようにするもので、
英語では IDN(Internationalized Domain Name) と呼ばれています。
とある。
これにより、われわれにとっては日本語ドメイン名が可能となる。
この国際化ドメイン名を実現するために、
現行のDNSの構造を壊すことがないように
7bit ASCIIだけで構成される文字列を採用している。
但し、アプリケーション側、つまり ブラウザやメールソフトの方で
これらに対応する必要がある。
国際化ドメイン名を実現するための技術的なしくみ としては、
大きく2つのステップがある。
ひとつが「NAMEPREP」と呼ばれる入力された文字列の正規化技術。
ちなみに正規化とは、一定の標準形に整形すること。
例えば、全角の「。」(句点)は半角の「.」(ドット)に、
全角の「jp」は半角の「jp」に変換するようなこと。
もうひとつが「Punycode」と呼ばれる
多言語を7bit ASCII文字列へ変換する技術である。
例えば、「日本語ドメイン名EXAMPLE.jp」というドメイン名は、
「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」
というドメイン名に変換される。
【参考リンク】
カテゴリー:
DNS・URL・URI
22:28
| コメント (0)
| トラックバック (0)
毎日コンピュータで作業していると、
データの形式をいろいろと変換したい時がよくある。
そんな時のために、
「
メディアコンバート(Media-Convert) 」
という のサービスがある。
データ形式の変換ソフトは
フリーのモノが沢山でまわっているが、
それらは使おうとする際に 事前に
自分のPCにインストールしなければならない。
今後 何度も使わなければならないのであればまだしも、
1回や2回のデータ・コンバートのために
専用のソフトをインストールするのは できれば避けたい。
そこへいくと この
「
メディアコンバート(Media-Convert) 」
のサービスでは、インターネットが繋がっているところであれば、
ブラウザだけでOK。完全に無料のサービスだ。
変換できるファイルの形式は、ドキュメント、テキストファイル系では
マイクロソフト(Microsoft)のオフィス(Office)関連を
サポートしているのはもちろんのこと、
ZIPやLHA等のアーカイブ系、
WMVやFLVの映像系、
GIFやJPEGの画像系、
WAVやMP3といった音響系と
非常に多岐に渡っているようだ。
使い方はいたって簡単で、
ファイルの入力形式(変換前)と
出力形式(変換後)を選び、ファイルを送信するだけ。
また、手元のファイルの代わりにURLを指定することもできるので、
インターネットからあるファイルをダウンロードして
そのデータ形式を変換しなければならない場合など、
変換された結果ファイルだけを手に入れることも出来る。
機密文書の形式を変換するために、
このサービスにファイルをアップロードするのは
ちょっと心配かもしれないが、
少なくとも既にインターネット上で公開されている
データのフォーマットを変換するのであれば
なんの問題もないであろう。
【参考リンク】
カテゴリー:
Internet Service
22:54
| コメント (0)
| トラックバック (0)