2008年2月11日
ファッション・デザイナーのドメイン名
個人の名前をブランドにしてビジネスをしている方々が、 実際には どんなドメイン名を使ってサイトを運営しているのか、 についてチョット調査してみることにした。 そこで今回は、ファッション・デザイナーさんの場合。もちろん私は、このファッション・デザイナー業界については門外漢なのだが、 私でも知っている有名デザイナーさんが利用しているドメイン名を調査するために それぞれのデザイナーさんのメインのホームページのアドレスをリストしてみると、
- 森 英恵 ( http://www.hanae-mori.com/ )
- コシノヒロコ ( http://hirokokoshino.com/ )
- コシノジュンコ ( http://koshinojunko.com/ )
- コシノミチコ ( http://michikokoshino.co.jp/ )
- 三宅一生 ( http://www.isseymiyake.com/ )
- 山本寛斎 ( http://www.kansai-inc.co.jp/ )
また、コシノ三姉妹のドメイン名が「名・姓」もしくは「姓・名」が 連続しているのに対し、森 英恵 の場合、 「名・姓」の間にハイフンを入れて「 hanae-mori.com 」としている。
さらに、コシノジュンコ氏は、「http://koshinojunko.com/」とは別に 「 http://koshinojunko.net/ 」 というブログサイトも持っているようだ。
山本寛斎 氏は 「 http://www.kansai-inc.co.jp/ 」 と 事務所のドメイン名を採用している。 また、そのメインページからは、ニュースブログとして Yahoo の 「 http://blogs.yahoo.co.jp/kansai_office/ 」 へリンクが張られている。
【参考リンク】
- ウィキペディア「ファッションデザイナー」
- ウィキペディア「森英恵」
- ウィキペディア「コシノヒロコ」
- ウィキペディア「コシノジュンコ」
- ウィキペディア「コシノミチコ」
- ウィキペディア「小篠綾子」
- ウィキペディア「三宅一生」
- ウィキペディア「山本寛斎」
カテゴリー: DNS・URL・URI , Internet 22:37 | コメント (0) | トラックバック (0)
2007年8月20日
DNSゾーンデータファイルのリロード方法
最近のブログで、SPFレコードについてレポートしているが、 実際にSPFレコードを更新するためには 該当するドメイン用のゾーンデータファイルの TXTレコードの書き換えを行うことのなる。 その後、その変更を有効にするためには、 ネームサーバ BINDのデーモンである namedに そのゾーンデータファイルの再読み込みをさせなければならない。 その方法が何通りかあるので、調査してみる。まず、最も原始的な方法。 それは、named を再起動すること。 最も確実だが、変更のたびに再起動していては、チョット大変。
次に、別の古典的な方法。 「ps」コマンドを使って namedのPID番号を調べて、
# kill -1 番号とする方法。
BIND 8 であれば「 ndc 」コマンドが付属しているハズなので、 それを利用して、
# ndc reloadとすると、ネームサーバーをリロードしてくれる。
また、BIND 9 以降であれば、 「 rndc 」コマンドが付属しているハズなので、 ndcコマンドと同様に
# rndc reloadとするとよい。
カテゴリー: DNS・URL・URI , Mail 22:26 | コメント (0) | トラックバック (0)
2007年7月22日
DDNS (ダイナミックDNS)
自宅などでインターネットのサービスを受けている場合、 通常 IPアドレスをDHCPなどで取得するため、 接続の都度、IPアドレスが変更されてしまうことがある。 このような環境で外向けのサーバーを運営しようとすると ドメイン名の解決に問題がでてくる。 このような問題を解決する技術が「DDNS (ダイナミックDNS)」である。
「DDNS (ダイナミックDNS)」の定義に関しては、 e-Word の 「DDNS(ダイナミックDNS)」 ページでは
DNSデータベースを動的に更新する技術。 IETFによってRFC 2136として規格化された 「Dynamic Updates in the Domain Name System」(DNS UPDATE) の一般的な呼び名。となっている。 また、ウィキペディアでは
ダイナミックドメインネームシステム (Dynamic Domain Name System、ダイナミックDNS、DDNS) は、 動的に割り当てられるIPアドレスと、 そのホスト名の対応を、動的に登録・管理する仕組みである。とある。
この DDNS を具体的に利用できるシステムに DNSとしてお馴染みの「BIND」がある。 それについてウィキペディアでは
もっとも一般的なDNSサーバソフトであるBINDも、 バージョン9からダイナミックDNSをサポートし、 nsupdateというクライアントコマンドで DNSゾーンデータの更新が可能となっているとある。 ということは、通常のFreeBSDや Linuxの サーバーを 立ち上げれば、そのまま DDNS を利用できるようである。
【参考リンク】
カテゴリー: DNS・URL・URI 22:52 | コメント (0) | トラックバック (0)
2007年5月24日
「 LibIDN Ruby Bindings 」のテスト
前回のブログで 「LibIDN Ruby Bindings」 をインストールするところまできたので、 それでは実際に このライブラリが動作するのかどうか、 テスト用のRubyスクリプトを書いて確認してみる。「国際化ドメイン名 IDN(Internationalized Domain Name) 」において 最も基本的な変換をテストしてみる。
require 'idn' include IDN idnAscii = Idna.toASCII("日本語ドメイン名example.jp") puts 'Idna.toASCII: ' + idnAscii idnUnicode = Idna.toUnicode('xn--example-6q4fyliikhk162btq3b2zd4y2o.jp') puts 'Idna.toUnicode: ' + idnUnicodeこのスクリプトを見てすぐに わかるとおり、 Idna.toASCII というメッソドが UTF-8 のユニコードのドメイン名から ASCII文字列に変換するメソッド。 そして、Idna.toUnicode というメッソドが その逆変換である。
注意点として、このスクリプト内ではユニコード(UTF-8)を使っているので ファイルを保存する際には、以前のブログ 『ruby での「 Invalid char `\357' in expression 」エラーメッセージ』 でレポートしたとおり、UTF-8N を指定して保存しておくこと。
このスクリプトの実際の実行結果は
% ruby -rubygems ./IDNtest.rb Idna.toASCII: xn--example-6q4fyliikhk162btq3b2zd4y2o.jp Idna.toUnicode: 日本語ドメイン名example.jpとなる。
昨日のブログの通り、この「 LibIDN Ruby Bindings 」のインストールには RubyGemsを採用している。 しかし、上記スクリプトのソース・コード内に 「 require 'rubygems' 」の1行を入れていないので、 変わりにrubyの実行時に 「-rubygems」オプション をつけて対応した。
それから Punycode(ピュニコード)のエンコードとデコード のテスト・スクリプト。
require 'idn' include IDN punyAscii = Punycode.encode("日本語ドメイン名example") puts 'Punycode.encode: ' + punyAscii punyUnicode = Punycode.decode("example-6q4fyliikhk162btq3b2zd4y2o") puts 'Punycode.decode: ' + punyUnicodeこれも 見たとおり、Punycode.encode と Punycode.decode を呼ぶだけ。 その実行結果は
Punycode.encode: example-6q4fyliikhk162btq3b2zd4y2o Punycode.decode: 日本語ドメイン名exampleとなる。
【参考リンク】
カテゴリー: DNS・URL・URI , Ruby 22:23 | コメント (0) | トラックバック (0)
2007年5月23日
「 LibIDN Ruby Bindings 」のインストール
GNU の IDN Library 「 Libidn 」をインストールし テストしてきたが、今度はこれをRubyから呼べるようにしてみよう。 探してみると、 「LibIDN Ruby Bindings」 という Rubyのライブラリがみつかったので 早速インストールしてみる。インストールの方法は LibIDN Ruby Bindings サイトのドキュメントによると、
- RubyGemsによる自動インストール
- Rakeによる 半自動インストール
- extconf.rb による 手動インストール
ここでは、最も簡単な RubyGemsによるインストールを行ってみる。
# gem install --remote idn Building native extensions. This could take a while... ERROR: Error installing idn: ERROR: Failed to build gem native extension. /usr/local/bin/ruby18 extconf.rb install --remote idn checking for main() in -lidn... yes checking for idna.h... no ERROR: could not find idna.h header file! Please install the GNU IDN library or alternatively specify at least one of the following options if the library can only be found in a non-standard location: --with-idn-dir=/path/to/non/standard/location or --with-idn-lib=/path/to/non/standard/location/lib --with-idn-include=/path/to/non/standard/location/includeエラーが起きてしまった。 idna.h が見つからないようだ。
それなら、と --with-idn-include オプションを付けてみた
# gem install --remote idn --with-idn-include=/usr/local/include ERROR: While executing gem ... (OptionParser::InvalidOption) invalid option: --with-idn-include=/usr/local/include #ところが、まだエラーがでる。
そこで、 「LibIDN Ruby Bindings」 の記述を参考にして gemのコマンド行を2行に分けて指定してみた。
# gem install --remote idn -- \ ? --with-idn-include=/usr/local/include Building native extensions. This could take a while... Successfully installed idn-0.0.2 1 gem installed Installing ri documentation for idn-0.0.2... Installing RDoc documentation for idn-0.0.2... #今度は成功したようだ。 しかし、なぜ1行ではエラーが起こるのか?
1行で
# gem install --remote idn -- --with-idn-include=/usr/local/includeのようにしても成功した。 どうしても「 -- 」が必要なようだ。 ただし、これに関しては RubyGemsのドキュメントをみても どこにもみつけることができなかった。
【参考リンク】
カテゴリー: DNS・URL・URI , Ruby 22:56 | コメント (0) | トラックバック (0)
2007年5月22日
libidn 付属の idn コマンド
前回のブログで FreeBSDに GNUの「 libidn 」がインストールされたわけだが、 と同時に コマンドライン上で libidn をテストできる 「idn」というコマンドもインストールされている。 では 早速 idnコマンドを試してみることにする。まずは、オプションをつけずに そのまま実行してみると、
% idn libidn 1.2 Copyright 2002, 2003, 2004, 2005, 2006, 2007 Simon Josefsson. GNU Libidn comes with NO WARRANTY, to the extent permitted by law. You may redistribute copies of GNU Libidn under the terms of the GNU Lesser General Public License. For more information about these matters, see the file named COPYING.LIB. Type each input string on a line by itself, terminated by a newline character. abc abc idn: tld_check_4z: Missing input %と このように表示される。 これで、libidn のバージョンが 1.2 であることが確認できる。 その後、入力を待っているので、 ここでは試しに「abc」+「エンターキー」と打ってみると、 そのまま 「abc」が表示された。 次の行で 何も入力せず「エンターキー」と打ってみると、 「idn: tld_check_4z: Missing input」というエラー・メッセージを表示して終了してしまった。
次に ヘルプを表示させてみる。
% idn -h libidn 1.2 Command line interface to the internationalized domain name library. All strings are expected to be encoded in the preferred charset used by your locale. Use `--debug' to find out what this charset is. You can override the charset used by setting environment variable CHARSET. To process a string that starts with `-', for example `-foo', use `--' to signal the end of parameters, as in `idn --quiet -a -- -foo'. Usage: libidn [OPTIONS]... [STRINGS]... -h, --help Print help and exit -V, --version Print version and exit -s, --stringprep Prepare string according to nameprep profile -d, --punycode-decode Decode Punycode -e, --punycode-encode Encode Punycode -a, --idna-to-ascii Convert to ACE according to IDNA (default) -u, --idna-to-unicode Convert from ACE according to IDNA --allow-unassigned Toggle IDNA AllowUnassigned flag (default=off) --usestd3asciirules Toggle IDNA UseSTD3ASCIIRules flag (default=off) -t, --tld Check string for TLD specific rules Only for --idna-to-ascii and --idna-to-unicode (default=on) -p, --profile=STRING Use specified stringprep profile instead Valid stringprep profiles are `Nameprep', `iSCSI', `Nodeprep', `Resourceprep', `trace', and `SASLprep'. --debug Print debugging information (default=off) --quiet Silent operation (default=off) %と このようにヘルプが表示される。 ここに、locale により適切な charset が設定されている必要がある、 と書いてある。 また、現在の charset は --debug オプションをつけるとわかるようだ。
そでは idn コマンドに --debug オプションをつけてCHARSET の確認。 ここでは、無駄な表示を省くために、--quiet もつけた。
% idn --debug --quiet "" Charset `US-ASCII'. idn: tld_check_4z: Missing inputこでれ、Charset が「 US-ASCII 」であることがわかった。
そこで
% setenv CHARSET UTF-8 % printenv | grep CHARSET CHARSET=UTF-8 % idn --debug --quiet "" Charset `UTF-8'. idn: tld_check_4z: Missing input %として Charset を「 UTF-8 」に変更して それを idn --debug コマンドで確認している。
以前のブログで 「日本語ドメイン名EXAMPLE.jp」というドメイン名は、 「xn--example-6q4fyliikhk162btq3b2zd4y2o.jp」 となる例を挙げていたが、これが idnコマンド で実際に変換されるかどうかテストしてみる。 上記のヘルプより、「-a」が「Convert to ACE according to IDNA (default)」とあるので
% idn --quiet -a 日本語ドメイン名example.jp xn--example-6q4fyliikhk162btq3b2zd4y2o.jp %それから、「-u」が「Convert from ACE according to IDNA」とあるので、
% idn --quiet -u xn--example-6q4fyliikhk162btq3b2zd4y2o.jp 日本語ドメイン名example.jp %となり、どちらの方向にも変換が正しく行われていることが確認できる。
【参考リンク】
カテゴリー: DNS・URL・URI 22:00 | コメント (0) | トラックバック (0)
2007年5月21日
FreeBSDにおける libidn のインストール
昨日の GNU IDN Library - Libidn からの続きとして、 このライブラリをFreeBSDに実際にインストールしてみる。FreeBSDでは ご多分に漏れず GNU libidn も ports によりインストールできる。 ディレクトリは /usr/ports/dns/libidn/ となっている。 そこで
# cd /usr/ports/dns/libidn/ # make installのように インストールを開始する。 makeから沢山の情報が表示されるが、 その中に
---------------------------------------------------------------------- Libraries have been installed in: /usr/local/lib If you ever happen to want to link against installed libraries in a given directory, LIBDIR, you must either use libtool, and specify the full pathname of the library, or use the `-LLIBDIR' flag during linking and do at least one of the following: - add LIBDIR to the `LD_LIBRARY_PATH' environment variable during execution - add LIBDIR to the `LD_RUN_PATH' environment variable during linking - use the `-Wl,--rpath -Wl,LIBDIR' linker flag See any operating system documentation about shared libraries for more information, such as the ld(1) and ld.so(8) manual pages. ----------------------------------------------------------------------とあるので、libidn が /usr/local/lib にインストールされたことがわかる。
また、
test -z "/usr/local/include" || ../build-aux/install-sh -c -d "/usr/local/include" install -o root -g wheel -m 444 'stringprep.h' '/usr/local/include/stringprep.h' install -o root -g wheel -m 444 'idna.h' '/usr/local/include/idna.h' install -o root -g wheel -m 444 'punycode.h' '/usr/local/include/punycode.h' install -o root -g wheel -m 444 'idn-free.h' '/usr/local/include/idn-free.h' install -o root -g wheel -m 444 'pr29.h' '/usr/local/include/pr29.h' install -o root -g wheel -m 444 'tld.h' '/usr/local/include/tld.h' test -z "/usr/local/include" || ../build-aux/install-sh -c -d "/usr/local/include" install -o root -g wheel -m 444 'idn-int.h' '/usr/local/include/idn-int.h'とあるので、各種の ヘッダー(インクルード)ファイルが /usr/local/include/ 下にインストールされたことがわかる。
そして
install -o root -g wheel -m 555 -s .libs/idn /usr/local/bin/idnから、idn コマンドが ディレクトリ /usr/local/bin/ 下にインストールされたこともわかる。
それから
install -o root -g wheel -m 444 'punycode.el' '/usr/local/share/emacs/site-lisp/punycode.el' install -o root -g wheel -m 444 'idna.el' '/usr/local/share/emacs/site-lisp/idna.el'のように Emacs Lisp API もインストールされている。 その後、多数の manページがインストールされている。
【参考リンク】
カテゴリー: DNS・URL・URI , FreeBSD 22:28 | コメント (0) | トラックバック (0)
2007年5月20日
GNU IDN Library - Libidn
昨日のブログで 国際化ドメイン名 (IDN) のソフトウェア開発環境(ライブラリ)について まとめてみたが、今回のブログでは その中でも GNU IDN Library 「 Libidn 」を取り上げてみる。このGNUの「 Libidn 」とは IETFの 「国際化ドメイン名 (IDN: Internationalized Domain Names ) ワークグループ」 によって定義されている Stringprep, Punycode そして IDNA規格 を実現した Cライブラリである。
このライブラリには Stringprep と呼ばれるUnicode の正規化や Nameprep, iSCSI, SASL や XMPP が。 また、IDNA により定義されているPunycode や ACE(ASCII Compatible Encoding) 。 TLD(Top-Level Domain)を定義する メカニズム 等が含まれている。 詳しくは、 「GNU IDN Library - Libidn」 に説明がある。
この Libidn に含まれる関数も
- Utility Functions
- Stringprep Functions
- Punycode Functions
- IDNA Functions
- TLD Functions
- PR29 Functions
【参考リンク】
カテゴリー: DNS・URL・URI 22:09 | コメント (0) | トラックバック (1)
2007年5月19日
国際化ドメイン名 (IDN) のソフトウェア開発環境(ライブラリ)について
国際化ドメイン名(IDN : Internationalized Domain Name) を 操作するプログラムを開発する際に RFCを読みながら一から開発なんかしていられない。 そこで、国際化ドメイン名 (IDN) を 操作できるライブラリやソフトウェア開発キット (SDK) を探してみる。JPNIC 「 idnkit 」
まず、日本ネットワークインフォメーションセンター(JPNIC) の 「国際化ドメイン名ツールキット(idnkit)バージョン1.0」。 idnkitとは- 国際化ドメイン名とPunycodeのエンコーディング変換コマンド: idnconv
- IDNの処理機能を提供するC言語用API(ライブラリ): libidnki
この 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」」 に 詳しくまとめられている。【参考リンク】
- JPNIC「国際化ドメイン名ツールキット(idnkit)バージョン1.0」
- VeriSign「IDN SDK」
- GNU IDN Library - Libidn
- IDN-enabled Applications「Programming Languages」
カテゴリー: DNS・URL・URI 22:41 | コメント (0) | トラックバック (0)
2007年5月18日
日本語ドメイン名に関する技術的制限のまとめ
日本ネットワークインフォメーションセンターの 「汎用 JP ドメイン名登録等に関する技術細則」 から、日本語ドメイン名に関する 主な 技術的制限(ルール)を まとめておく。- 「ドメイン名」は、ラベルをピリオド(".")で区切って連結した文字列である。
- 「ASCIIラベル」は、英字26文字("A"から"Z")、数字10文字("0"から"9")、そして ハイフン("-") の 合計 37文字からなる文字列である。ただし、ASCIIラベルの先頭と末尾の文字はハイフン であってはならない。
- ASCIIラベル中では、英字の大文字・小文字の区別はなく同じ文字とみなされる。
- ASCIIラベルの長さは、63文字以下でなければならない。
- 日本語ラベルの長さは、15文字以下でなければならない。
また、上記細則には記載されていないが、 ドメインのラベルを連ねた際の長さについて、 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 に制限されているようだ。
【参考リンク】
- jprs.jp「汎用 JP ドメイン名登録等に関する技術細則」
- RFC1034 [DOMAIN NAMES - CONCEPTS AND FACILITIES]
- RFC1034の日本語訳(和訳)
- RFC1035 [DOMAIN NAMES - IMPLEMENTATION AND SPECIFICATION]
- RFC1035の日本語訳(和訳)
カテゴリー: DNS・URL・URI 22:00 | コメント (0) | トラックバック (0)
2007年5月17日
日本語ドメイン Punycode 変換・逆変換サービス一覧
日本語を含めた 国際化ドメイン名 (IDN) に対応した Punycode 変換・逆変換サービス を提供しているサイトを まとめてみる。- Japan Registry Service Co.「日本語JPドメインのPunycode変換・逆変換」
変換方向は自動認識。
- 日本語ドメイン取得.com 「日本語ドメイン ⇔ Punycode 相互変換」
「日本語 ⇒ Punycode」か「Punycode ⇒ 日本語」を指定。
複数の変換が一度にできる。
- VeriSign「IDN Conversion Tool」
古い規格の「RACE」の変換結果も同時に表示される。
- Try GNU Libidn
GNU の IDNライブラリ Libidn のトライ・ページ
また、日本語.jp の 「国際化ドメイン名対応アプリケーション」 ページには 国際化ドメイン名に対応したアプリケーションが まとめられている。 ちなみに、この情報のオリジナルはベリサイン社の 「IDN-enabled Applications」 ページとなっている。
【参考リンク】
カテゴリー: DNS・URL・URI 22:05 | コメント (0) | トラックバック (0)
2007年5月16日
Punycode(ピュニコード)
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)
2007年5月15日
IDNA(Internationalizing Domain Name in Application)
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)をつける。
【参考リンク】
- 日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)
- 日本ネットワークインフォメーションセンター「国際化ドメイン名」
- RBB Today IT辞典「IDNA(アイディエヌエー。Internationalizing Domain Names in Applications)」
- Unicode正規化とは
カテゴリー: DNS・URL・URI 22:38 | コメント (0) | トラックバック (0)
2007年5月14日
国際化ドメイン名 (IDN:Internationalized Domain Name)
インターネットのアドレスのうち、「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」 というドメイン名に変換される。
【参考リンク】
- JPNIC「国際化ドメイン名」
- 日本ネットワークインフォメーションセンター (JPNIC: Japan Network Information Center)
- 日本語ドメイン名協会
- ウィキペディア「国際化ドメイン名」
- ウィキペディア「Punycode」
- Internationalized Domain Names
カテゴリー: DNS・URL・URI 22:28 | コメント (0) | トラックバック (0)
2007年5月 6日
ruby で URLエンコード プログラミング
昨日のブログで「 URLエンコード(URIエンコード)」について レポートしたが、 それでは、rubyで実際にプログラミングしてみよう。rubyのサンプル・プログラムは以下の様に
require 'uri' p URI.escape('ウィキペディア')たった2行である。 これで「ウィキペディア」という言葉を URLエンコードした結果が表示されるハズである。 ウィキペディア「URLエンコード」ページに 例題として「ウィキペディア」という言葉を Shift_JIS、EUC-JP、UTF-8 の各漢字コードで URLエンコードした結果があるので、 それと比較できるように、ここでは同じ言葉としてみた。
Shift_JIS、EUC-JP、UTF-8 の それぞれの漢字コードに 対応するために、それぞれに URLencodeSJIS.rb、URLencodeEUC.rb、URLencodeUTF8N.rb と名づけて、エディターから 漢字コードを指定して保存した。 それぞれを ruby で実行してみると、
C:\soft\ruby>ruby URLencodeSJIS.rb "%83E%83B%83L%83y%83f%83B%83A" C:\soft\ruby>ruby URLencodeEUC.rb "%A5%A6%A5%A3%A5%AD%A5%DA%A5%C7%A5%A3%A5%A2" C:\soft\ruby>ruby URLencodeUTF8N.rb "%E3%82%A6%E3%82%A3%E3%82%AD%E3%83%9A%E3%83%87%E3%82%A3%E3%82%A2"のような結果となり、当たり前であるが、 ウィキペディア「URLエンコード」ページ の結果と同じになった。
【参考リンク】
カテゴリー: DNS・URL・URI , Ruby , 文字コード・文字化け 22:54 | コメント (0) | トラックバック (0)
2007年5月 5日
URLエンコード(URIエンコード)
ウェブページのアドレス部分で 「%数字%数字...」 の羅列になっている部分を時々見かける。 「URLエンコード」または「URIエンコード」とは アドレス部分に直接記述することができない文字列を このような形式へ変換すること。例えば、Google.co.jp で「エンコード」という文字を検索した結果、 ブラウザーのアドレス部分には 、
http://www.google.co.jp/search?hl=ja&q=%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=というように、「エンコード」という文字が 「%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89」 のように変換されて表示されている。 この他にも、ウィキペディアや amazon.co.jp でも利用されているが、 ブラウザによっては「http://ja.wikipedia.org/wiki/URLエンコード」のように 日本語でキチンと表示されているので直接目にふれない場合もある。
この 「URLエンコード」 については ウィキペディア「URLエンコード」によると。
URLエンコード(ゆーあーるえるえんこーど)とはURIに2バイト文字を使う際に行われる符号化のことである。 URIの規則を定める RFC 3986 では、 URIにASCIIの非予約文字以外の文字データは、 「%xx」(xxは16進数)という形でコードを表記することが定められている。 その際にどの文字コードを用いるかは実装によって異なる。とある。 ここで、「どの文字コードを用いるかは実装によって異なる」とあるが、 上記の Google、ウィキペディア、amazon.co.jp では UTF-8 を用いているようである。
ASCIIの非予約文字(記号文字)については、 Diaspar「URIエンコード(URLエンコード)」 ページに 例を挙げて詳しく解説されている。
また、 TAG index「URLエンコード・デコードフォーム」 や けんどもネット「URL エンコード/デコードフォーム」 のように、 、URLエンコード、URLデコードを行ってくれるツールを提供しているサイトも 多数 存在している。
【参考リンク】
- ウィキペディア「URLエンコード」
- SourceForge.jp「nkf」
- nkf 日本語マニュアル
- nkf.exe nkf32.dll Windows用
- Diaspar「URIエンコード(URLエンコード)」
- TAG index「URLエンコード・デコードフォーム」
- けんどもネット「URL エンコード/デコードフォーム」
カテゴリー: DNS・URL・URI , 文字コード・文字化け 22:18 | コメント (0) | トラックバック (0)