[Edit][Create New]
[ IndexPage / ネットとプログラミング / web296 / No62.txt ]

No62.txt

●半角カナと機種依存文字(2回目: 半角カナは使っても良い?)

さて前回は、JIS X 0201の文字セットの右半面、いわゆる半角カナ(以下半角カ
ナ)の歴史をざっと紹介したわけですが、今回は、なぜ半角カナを使ってはいけ
ないと言われるのかについて紹介していきます。

「Web(またはインターネット)では半角カナは使ってはいけない」というのは、
ほとんど常識のように思われていますが、ではなぜかと問われると「文字化けす
るから」としか答えられない方が多いのではないでしょうか?

私は個人的には、技術的な側面においての「インターネットでやっていい、悪い」
は、ひとえに「規格・仕様に沿っているか、いないか」の一点のみで判断される
べきだと思っています。つまり例えば「規格・仕様に沿っているのに文字化けす
る」というのは、規格・仕様および/または実装系(ブラウザやサーバーなど)に
不備があるというだけで「使ってはいけない」とまでは言えないのではないか、
というのが私の考えです。

では、そういった視点から「半角カナの是非」を見てみましょう。

まず、Webの仕様と言えばHTTPですが、現在主流のHTTP/1.1(RFC 2068)を見てみ
ると、利用できるMedia Typeに関してはIANAで登録、管理されていること、それ
以外のMedia Typeは使うべきでないことが明記されています(*1)。HTML4.01でも、
charsetを指定する際は、IANAの登録に従うようにとの記述があります。つまり、
IANAの登録にない文字は「使ってはいけない」わけです。

では今度はIANAのWebサイトを見てみましょう
(http://www.iana.org/assignments/character-sets )。
ここではWebで利用できるcharset(つまり文字セット)の一覧が掲載されています。
つまりここにあるcharsetならどれでも利用可能であるわけです。

ただ、実際には、日本語を扱う場合、ISO-2022-JP、Shift_JIS、EUC-JP、UTF-8
以外を使うことはまずない上、UTF-8はまだそれほど普及していないので、今回
はこのうち、ISO-2022-JPとShift_JIS、EUC-JPについて半角カナの是非について
検証して行きましょう。

まずISO-2022-JPを見てみましょう。前述のIANAのサイトにあるchar-set表を見
ると、

Name: ISO-2022-JP Source: RFC-1468

となっているので、RFC1468( http://www.ietf.org/rfc/rfc1468.txt )を参照し
ます。すると、

ESC ( J JIS X 0201-1976 ("Roman" set) 14

という表現が見つかります。これは半角カナを定義しているJIS X 0201が利用可
能である事を示しています。しかし、("Roman" set)とあるのが気になりますね。
ひょっとして半角カナ部分は使用できないのでしょうか? さらに本文を読み進め
ていくと、

The Kana set of JIS X 0201 is not used in ISO-2022-JP messages.

との一文にぶつかります。何とISO-2022-JPでは、明確に半角カナは「使用でき
ない」と定義されていたのでした。これが現在「半角カナは使うな」と言われる
ようになった最初の要因です(歴史的な部分に関しては回を改めて後述します)。

では、Shift_JISやEUC-JPはどうなのでしょうか? 再度IANAのサイトを参照して
みると、Shift_JISに関しては、

Name: Shift_JIS Source: This charset is an extension of
csHalfWidthKatakana by adding graphic characters in JIS X 0208. 

つまり、Shift_JISは、csHalfWidthKatakanaにJIS X 0208を足した文字集合であ
ることが分かります。では、csHalfWidthKatakanaの定義を見てみましょう。す
でに名前からして怪しいですが、

Source: JIS X 0201-1976. One byte only, this is equivalent to JIS/Roman
(similar to ASCII) plus eight-bit half-width Katakana

ここで、「half-width Katakana(半角カタカナ)」という単語が見えます。つま
り、Shift_JISでは半角カナの利用は自由なのです。

EUC-JPはどうでしょうか? やはりIANAの定義を参照すると、

code set 2: Half Width Katakana (a single 7-bit byte set)

今度はいきなり「半角カナ」の記述が見られます。EUC-JPも半角カナは自由に使
える訳です。

さて、ここまで見てきて意外に感じた読者も多いのではないでしょうか? 日本で
多く使われている3種類のcharsetのうち、2つは半角カナを使うことに関して仕
様上の問題は全くないのです。

ではなぜ現在「半角カナは使ってはいけない」とここまで言われるようになった
のか、次回は歴史的な経緯、技術上の理由、便宜上の理由など、色々な角度から
検証していきたいと思います。

(*1)http://www.w3.org/Protocols/rfc2068/rfc2068
3.7 Media Types
Media-type values are registered with the Internet Assigned Number
Authority (IANA). The media type registration process is outlined in
RFC 2048 [17]. Use of non-registered media types is discouraged.