機種依存文字やUnicodeに遠慮しなかったら日本語環境を改善できた ― 2007年01月13日 12:03
Windows VistaのせいでにわかにJIS2004 (JIS X 0213) が注目を集めていますが、実のところ私は何年も前からEmacsやSKKなどでJIS X 0213の文字を自在に使っています。符号化方式には主にEUC-JISX0213、ときにはShift_JISX0213も使っています。これにより、「文字が足りない」といった不便を解消し、また便利な記号類を使うことで、日本語環境を改善できました。
世の中の大部分でJIS X 0213を使うことができなかった頃に、なぜそのようなことが可能だったのでしょうか。それは、機種依存文字やUnicodeに遠慮しなかったからにほかなりません。
JIS X 0213が制定された頃には、機種依存文字 (ベンダ定義の外字) との衝突が話題になっていました。批判者曰く、JIS X 0213は従来の「外字領域」 (本当はそんな領域は無い) を使っている。だから混乱が起こる、と。
でも私はこの議論はおかしいと思っていました。なぜなら、文字化けの原因はベンダが思い思いに定義した機種依存文字なのであって、それ以外には無い (だから、機種依存文字を使うことは良くないことだというのが当時の常識であったし、私もそれに従っていた)。機種依存文字があるからJIS X 0213は駄目だというのは、一種の居直り強盗のようなものではないか。
また、「これからはUnicodeだ」というような意見もありました。そう思いたいのは勝手だけれども、それは一種のイデオロギーのようなものと映りました。いくら内部的にUnicodeを使っていたって、それは結局シフトJISの範囲の文字の符号化に使っているだけであって、そういう使い方では日本語環境は改善されませんでした。
結局私は、居直り強盗の理論もUnicodeイデオロギーも採用することはなく、現実の問題を解決できる文字コードを選択しました。それがたまたまEUC-JISX0213であり、Shift_JISX0213であったというだけの話です。結果としてそれが日本語環境の改善につながったのです。
新しい符号化方式って何だろう ― 2007年01月18日 21:32
「JIS X 0213の代表的な符号化方式」を更新しました。2004年改正に対応したときに2000年版の符号化方式名をすっぱり削ってしまったのを反省して、2000年版との対応を記しました。また、Unicodeを使う際の問題点を新たに付け加えました。
これを書いていて思ったこと。JIS X 0213対応を躊躇している人の言い分として、「いまさらUnicode以外の新たな符号化方式に対応するなんて…」ということを聞くことがあります。この「新たな符号化方式」という言葉には要注意だと思いました。
Shift_JIS-2004という「新たな符号化方式」に対応するには何が必要でしょう? 区点位置との計算が必要な場合には、確かに2面の分は新たな計算式を実装する必要があります。でも、それってそんなに難しいですか?
EUC-JIS-2004への対応はどうか? 今までEUC-JPに対応していたのなら超楽勝ですよね。
ISO-2022-JP-2004は? 古いエスケープシーケンスで出力することを考慮しなくていいなら、割に簡単でしょう。
これらは確かに「新しい符号化方式」ですが、対応がそんなに困難だとは思えません。(というか、JIS X 0213自体、そのように設計されているわけです)
翻ってUnicodeではどうか。名前だけは確かにUTF-8でありUTF-16であるかもしれない。でも、今まで対応していなかった結合文字やらサロゲートペアやらにプログラムで対応する必要が新たに生じたのなら、それって事実上「新しい符号化方式」なのではないですか?
もちろん、処理を楽にしてくれるライブラリがあるのならそういうのを活用すれば良いわけですが、どっちみち古いプログラムはそういうのを使ってないわけなので、新たな対応が必要なのは変わりないわけです。大変ですね。
単に名前の違いだけしか見ずに新たな符号化方式だ、いや違う、と言っていると、落とし穴が待っているかも知れませんね。
マイクロな話とオングストローム ― 2007年01月20日 17:50
『JIS漢字辞典』増補改訂版の837ページにあるコラム「マイクロな話」は標準化の興味深い裏話です。
JIS X 0213ではISO/IEC 8859-1の文字を全部入れようとして、同規格にある「マイクロ記号」にも独立した区点位置を与えようとしました。それが公開レビューの結果、ギリシャ文字μと同一の文字ではないかという異論が出て、検討した結果「マイクロ記号」としての収録は見送られたという話です。
マイクロ記号としてμを書く際に特段の違いがあるわけではないので、賢明な判断といえるでしょう。UnicodeはISO/IEC 8859-1を特別扱いしてU+00A0からU+00FFにそのままコピーした結果、「マイクロ記号」とギリシャ文字μとが重複してしまっています。(このため、Unicodeを介してコード変換を行うと、8859-1のマイクロ記号がJISのギリシャ文字μと対応させられず、ある筈の文字が無いことになってしまいます。正規化を行えば別ですが)。
ではJIS X 0213に同様の例が無いかというと、実はあるのです。オングストローム記号(Å)と1-09-28「上リング付きA」とが重複しています。
長さの単位オングストロームは人名からきており、この人名の最初の文字「上リング付きA」が記号として使われるようになったものなので、文字としては同じものです。もしJIS X 0208にオングストローム記号が無かったとしたら、JIS X 0213の策定の際に「上リング付きA」とは別の「オングストローム記号」を収録しようとはしなかったのではないでしょうか。ちょうど「マイクロな話」と同様の理由で。
JIS X 0208で既に記号として「オングストローム」を収録していたのが結果的に仇になったといえるかもしれません。
最近のコメント