2009年12月14日の日記です


「その文字」はインターネットで使ってはいけないのか?  2009-12-14 15:48:09  コンピュータ

先日 DNS の記事を書いた。

こういう、空気のような技術は案外みんなに理解されていないものだ。


で、ずっと以前から「正しく理解されていないなぁ」と感じていた、もう一つのことを書いてみる。

ずっと以前から思っていた、というだけあって、話題としてはいまさら感があるのだけど、未だに知らない人も多いからね。




まずは、「半角カナはインターネットで使うべきではない」という話題について。

話は分かれていて、「メールで使ってもよいか」「WEBで使ってもよいか」に大別されます。


まず、「メールで使うべきではない」について。


事の起こりは RFC821 です。

RFC というのは、インターネットの標準を規定する文章のこと。

(なんで RFC と言うのか、という歴史話も面白いのだけど、割愛)


RFC821 は SMTP 、メールを送信する方法についてです。



この中に、SMTP は 7bit でデータを扱う、と書いてあります。

理由は、RFC821 が策定された当時、コンピューターの「1バイト」は 8bit とは決まっていなかったため。


今でも勘違いする人が多いけど、「1バイト」は、「ビット」をいくつか集めて、情報を扱いやすくした際の最小単位、としか定まっていません。コンピューターによって、いくつのビットを集めるかは違います。


今は、通常 8bit = 1byte です。

でも、昔は 7bit = 1byte のコンピューターも確かに存在しました。


ちなみに、Nintendo64 で使用された RAM (RAMBUS)は、9bit = 1byte です。

N64 は少し前のマシンだけど、「8bit≠1byte」が決して遠い昔の話ではない、ということはわかっていただけると思います。



さて、ともかく、RFC821 では 7bit でメールを扱うと決めています。

そして、当時のメールの送信方法は「多数のメールサーバーでバケツリレーを行う」だったので、どこに 7bit のコンピューターが存在しているかもわからず、これに従う以外の方法はありませんでした。



ところで、アメリカの ASCII コードは、7bit で作成されています。

多くのコンピューターは 8bit を扱えるため、領域が余ります。

日本では、JIS コードとして、8bit 目を使用した領域に「半角カナ」を策定しています。

(なので、半角カナを含む 8bit コードを「ASCII コード」と呼ぶのは誤り)


これが、「7bit でしか送信できないメールで、半角カナを使ってはならない」理由です。




でも、その後 RFC1425 というのが出てきて、「RFC821を拡張できるようにしよう」とまとまります。


これを受けて、RFC1428 が策定されました。ここでは、8bit でデータを送受信できるように定めています。


RFC1428 が巧妙なのは、RFC1425 にさえ従っていれば、7bit しか送信できないマシンを通しても、8bit データが保証される仕組みを作ったところ。

つまり、バケツリレーの途中のメールサーバー全てが RFC1425 にさえ従っていれば、8bit で通信できる環境が整ったのです。



さらに RFC1425 を取り込んで、RFC821 の「正式な後継」である、RFC2821 が策定されます。

これで、今後のメールサーバーは、全て RFC1425 を満たしていることが必須条件になりました。


つまり、ここにいたって「メールでは 8bit を送信しても良い」ということになります。



現在では、UTF-8 でメールを送受信できるメーラーも増えています。

UTF-8 は Unicode の表現形式の一つですが、8bit で表現されます。




ところで、「可能性として」は、今でも RFC821 時代のメールサーバーが残っているかもしれません。

相手の使用しているサーバーがまさにそれだった、という場合は不幸ですが、バケツリレーの途中にこのような古いサーバーが挟まってしまい、結果として 8bit メールが届かない、ということがあると困ります。


ご安心ください。

RFC2821 が策定された時に、バケツリレーを明示的に指示することは「時代遅れ」と明言されました。


ここでは、禁止にまで踏み込んではいないのですが、現実問題として多くのサーバーではリレーを「禁止」しており、受け取りません。


結果として、メールサーバーは相手のメールサーバーに直接メールを届けます。リレーは行われません。



つまり、結果はこういうことです。


「半角カナを送信するのは RFC 違反」だった時代は確かにあるのですが、現在においては「半角カナが送信できない環境は RFC 違反」です。




もっとも、SMTP レベルで 8bit に対応している、ということは、メール本文が 8bit に対応していることとイコールではないです。


SMTP は、メールに限らずいろいろなもの(添付されたファイルとか)を送れるように 8bit 透過に設計されなおしたが、メール本文は相変わらず 7bit のままが標準です。


つまり、8bit が必要なら適切に MIME エンコードされる、というだけの話。

半角カナを使用した場合は、本文も MIME エンコードされて送信されることになります。


これが気持ち悪いという人は、相変わらず半角カナは使用しないのが無難なのでしょう。




つぎに、「半角カナを WEB で使うべきではない」について。


こちらは、メールよりも話は簡単です。

WEB で使うな、と言っていた人の多くは、「メールで使ってはならない」を勘違いしていたのです。


もう一つの理由としては、「半角カナは EUC では扱えない」という問題がありました。


EUC は、UNIX を中心として使用されていた文字コードです。

ASCII コードが 7bit しか使用せず、8bit 目が空いていることを利用して、8bit 目でJIS 漢字コードを識別できるようにしたコード体系です。


この形式は、「ASCII コードが 7bit」であることを利用しています。つまり、8bit 目を使用する半角カナは考慮されていません。

これにより、EUC では半角カナが扱えませんでした。


もっとも、すぐに EUC は拡張され、3byte コードで半角カナが扱えるようになりました。

しかし、拡張 EUC に対応していないマシンや、対応していないソフトも長い間使い続けられました。


丁度 WEB の黎明期の頃、古い EUC しか使えないマシンを使用していた人たちは、半角カナで書かれると読めない、という事態に陥りました。


これは、明らかにそれらのマシンが悪いのです。

しかし、WEB の黎明期の頃は、インターネットの住人の多くが UNIX ユーザーだったことも事実です。


そして、結果として「半角カナを使わないようにしよう」という運動が起こります。

技術的には「使っても良い」ものだけど、一部の人の利便性を考えて「使わないようにしよう」というわけです。



当然、今となっては技術的に時代遅れすぎて、妥当性はありません。

半角カナは WEB で使っても問題ありません。




機種依存文字について。

㈱とかⅠとかね。


これは微妙な問題を孕んでいますが、機種依存文字、と呼ばれたのは昔話だといえる時代が来つつあります。


なぜなら、いまや Unicode が普通に使われる時代だから。


㈱とかⅠとかが「機種依存文字」と呼ばれたのは、Windows と Mac で割り付けられたコードが違ったためです。

ついでに言えば、UNIX も違う、と考えて良いでしょう。


これらの文字は、JIS の「未定義部分」に納められていました。



JIS の歴史的に言えば、元々は「ベンダー定義部分」として、メーカーが自由に割り付けてよい領域でした。

しかし、それでは「文字コード」を定める意味がなくなってしまうため、後にベンダー定義部分はなくされ、未定義部分となっています。

しかし、既に使われてしまった文字は残り続けたのです。


JIS と ShiftJIS と EUC 、という3つのコード体系がありますが、これは計算で変換可能なもので、実質的には同じものです。

なので、JIS / ShiftJIS / EUC のどのコード体系を使ったマシンであっても、日本語のやり取りは可能です。


でも、ベンダー定義部分に関しては、マシンが変わると文字が変わってしまう可能性がありました。

だから「機種依存文字」と呼ばれたのです。



でも、今は Unicode が中心になりつつあります。

Unicode では、ベンダー依存部分も含め、既に使われている文字は全部「Unicode」という体系に収録されています。

なので、Unicode を使っていれば、Windows でも Mac でも、同じコードに同じ文字が割り付けられているのです。


Unicode コンソーシアムが、文字の形(グリフ)を明確に示さなかった、という問題もあって、最初期に Unicode を実装した Windows では、一部のグリフがおかしかった、という問題もありました。

つまり、新たな機種依存文字の登場です。


しかし、これも Windows Vista / 7 では修正されているようです。


今後は、JIS コードも Unicode を想定したものとして策定されていくようです。



もちろん、Unicode を使用しない場合は「機種依存」であり続けます。

メールは普通 JIS で送信されるので、Windows ユーザーがこれらの文字を Mac ユーザーに送れば、字の形が変わってしまうでしょう。


でも、Web の掲示板などで、Unicode を使用するように作られていれば、Windows ユーザーと Mac ユーザーでも、仲良く同じ文字で会話ができるのです。





同じテーマの日記(最近の一覧)

コンピュータ

関連ページ

メールの1行が78文字の理由【日記 19/10/23】

Programming Tips

別年同日の日記

06年 ささやかなお祝い

06年 Wii

15年 新サーバー N3700


申し訳ありませんが、現在意見投稿をできない状態にしています


戻る
トップページへ

-- share --

0000

-- follow --




- Reverse Link -