No218 機種依存文字のナゾ

最近はあまり言われなくなりましたが、機種依存文字(環境依存
文字とも)というものがあります。

これまたいろいろとややこしい経緯を持つ文字です。

今回はこの機種依存文字というものについて解説します。


1. JISコードでは独自の文字追加OK???

日本で文字コードと言えば、JIS(日本工業規格)が規定したいわ
ゆるJISコード(X 0213)のことを指します。

余談:
 JISコードはX0208でしょ!という方、マニアですね。
 JISコードはC6226では?と思った方、今も現役ですか?お元気
 ですね。
 このX0208もC6226もJISが規定した漢字に関する規格です。
 実はJISの漢字に関する規格書は何度も改訂が行われており、文書
 番号もC 6226→ X 0208→X 0213 と変わっており、最新は X 0213
 となっています。
 番号まで変わっているくらいですから、さぞ内容が劇的に変化し
 ているかと思いきや、意外に変化がありません。
 もちろん、「第三第四水準が増えた」といった大きな追加もあるの
 ですが、おおむねマニアックな話題ですので、ここでは触れません。
 マニアでないフツーの人は「似たようなもの」とお考えください。

前回までの異体字の時にも書きましたが、日本語の場合、各メーカ
はそれぞれに必要な文字を自社のコンピュータに加えました。

当然ながら各メーカが自社コンピュータに加えた文字は他社のコン
ピュータでは正しく表示できません。

これだけを聞くと、各メーカの勝手な行動が混乱を招いたかのよう
ですが、数回前にもお話した「外字」のように文字追加がOKな
領域があります。そこへの文字追加はJISの規格にあるルールに従っ
た行動ですので、メーカがルールを破ったわけではありません。

当時はコンピュータ間のデータ交換がごく少なかったですし、JIS
コードに規定された文字はキチンと交換できますから、それほど
困らなかったのです。

もっとも、この見通しの甘さが後々で大きな問題を招きます。


2. 機種依存文字

機種依存文字と言われると多くの方が丸付き数字(○の中に数字
が埋め込まれた文字)を思い浮かべることと思います。

ですが、どうして丸付き数字が機種依存文字と言われるのでしょう?

1990年代にパソコン通信と呼ばれるサービスが流行しました。
ここで、初めて他者のパソコン(PC)とデータ交換を体験した人
が大勢いました。

ここで先に書いたようなメーカが独自で追加した文字が大きな問題
となったのです。

当時大きなシェアを持っていたのはNECのパソコン(PC9801シリーズ)
でした。
その機種では丸付き数字がメーカ拡張として搭載されていたの
ですが、他メーカの製品には当然ながら搭載されていません。
それどころか、Apple社のMacintoshでは丸付き数字と同じコード
ポイントに違う文字を割り当ててしまっていました。

このため、NECのパソコンであるPC9801シリーズという機種でしか
表示/入力できない文字、ということから機種依存文字という言葉
がでてきたようです。(もっと詳しい事情をご存知の方は是非教え
てください)

機種依存文字を使うとその文字が入っていないパソコンでは「?」
などと表示されます。
ですから本人が「(1)と(3)が成立するなら...」と書いたつもりでも、
「?と?が成立するなら...」などと表示される可能性があります。

この経験から「機種依存文字」は使わないようにしようということ
が一般的な常識となっていったのです。


3. UNICODEでも解決できないことがある

実は、上記の丸付き数字は最初期のUNICODEで既に含まれています。
ですから、UNICODEが使える環境であれば、丸付き数字は使える
はずなのです。

にも関わらず、今でも「機種依存文字」は使うべきではないという
意見は根強いようです。どうしてでしょうか?

確かにUNICODEは文字に関しての多くの課題を解消しました。

学術的な特殊記号の統一、様々な機器(パソコンだけでなくスマホ
やタブレット、各種のサーバなど)での同一文字コードの使用など、
多大なメリットを世界中の人々が得ています。

ですが、UNICODEだけでは解決できない領域も残っています。

その一つが前回も触れた電子メールなのです。

日本ではJISコードを使うメールが多く、UNICODEは使われる頻度が
低いと書きましたが、実はもう少し複雑な事情があるのです。


4. 昔はJIS以外に選択肢がなかった

インターネット上でメールが普及し始めたのは1980年代後半ですが、
当時のメールサーバはほぼ米国製で、アルファベットと数字さえ送れ
ればOKというものが主流でした。

当然ながら、日本語のことなどまるで考慮していませんから、その
ままでは日本語が正しく送信できません。

実際、当時よく使われていたシフトJIS(シフトジス)やEUC(イー
ユーシー)といった方式でエンコードされたメールは文字化けして
読めたものではありませんでした。

とはいえ、多くのメールは日本国内でのサーバ間の通信しか行わ
ないはずですから、送信元と受信先が日本語対応すれば良く、
そこまで考慮しなくても良さそうです。

ですが、そうはいかない事情がありました。

当時はバケツリレー方式といって、複数サーバを経由して目的の
サーバに配布する方式が普通でした。

 サーバA(発信元)
  ↓
 サーバB
  ↓
 サーバC(受信先)

といった具合ですね。

問題は、バケツリレー方式だと常に国内のサーバを経由する保障
がない点です。
上記で言えば、サーバBが日本国内にあるとは限らないのです。

英語のことしか考えないサーバでもアルファベットは数字は使える
わけですから、全ての日本語の文字をアルファベットは数字に置き
換えれば良いわけです。何とJISコードはこれができたのです。

これは決して偶然ではありません。
JISコードの設計チームは欧米のサーバを経由しても文字化けせず
に済むような文字コードを考案してくれていたのです。

余談
 上記のスゴい仕組みを実現するために、JISコードは実に複雑な
 構造となっており、当時のプログラマには嫌われていました。
 筆者は若い頃にはこのスゴさを全く理解できず「なんでこんなに
 使いにくい仕組みにしたんだろう設計チームはアホちゃうか?」
 などと思っていました。
 今、考えると明らかに筆者の方がアホまるだしです。
 お恥ずかしい限り。


5. なんでUNICODEに切り換えなかったの?

上述の通り、メールが普及し始めた時期にはまだUNICODEはない
わけですから、採用されなかったのは当然です。

ですが、UNICODEが規定された後も、日本ではJISコードによる
メール転送が好まれました。

なぜでしょうか?

上述のバケツリレー方式もその一因ですが、「UNICODEを使わずとも
なんとかなった」のが大きな理由です。

ものすごく矛盾したことを書いているのにお気付きでしょうか?

だって、機種依存文字が使いたいなら、それが使えるUNICODEに
移行するのがスジの良い方法なのは明らかです。
逆にJISに拘わるのであれば、機種依存文字が使えない前提になり
ます。

ですが、筆者は「なんとかなった」と書きました。
そんな都合の良い方法はないはずです。


6. 「赤信号みんなで渡れば恐くない」

意外なことに、多くの日本のアプリとサーバが取ったのは「皆で
ルール違反」でした。

つまり、こういうことです。
1)機種依存文字が入力されたらルール違反だけどメールに含んで
  送付する
2)機種依存文字が送られて来たらルール違反だけど、それを正
  しい文字として表示する

まさしく「赤信号みんなで渡れば恐くない」という対応です。

元々は一部のメールソフトが送付する時にルール違反をしていた
のですが、他のソフトもメールが読めないとなると「バグだ!」
などと言われるのも困りますから、表示はできるように対応する。
そうなると、「どうして送れないんだ」となるから次には送ること
もできるように対応する、といったことが繰り返された結果です。

ちなみに、今では丸付き数字に限らず、機種依存文字はJISコード
(X 0213)で規定されており、UNICODEでも規定されています。
ですから、規格上はもはや「機種依存文字」そのものが存在して
いません。

一方、メールで利用できる文字は旧いJISコード(X 0208)のまま
であるため、相変わらずメールでは機種依存文字は使えない状況が
続いています。(いろいろと細かい話はありますが割愛します)


7. でも本来はUNICODEを使うのがスジ

前回も書いた通り、メールで機種依存文字を使いたければ、UNICODE
を使うのが王道です。

ただ、UNICODEが一般化している2021年現在でも文字化けがないわけ
ではありません。全てをいきなりUNICODEに切り換えるのはリスキー
なのかなと考えます。

その意味では身近な方(社内とか親しい間柄)への送付から除々に
UNICODEに切り換えていくのが正しい対応のですが、そもそも無理
にUNICODEに切り換えずとも、現行(間違ったJISコードの使い方)
のままでもいいのかな、とズボラな筆者は思ったりします。


8. まとめ

今回は機種依存文字について解説をしました。

もともとJISコードには自由領域というものがあり、文字をメーカ
で追加することができました。

ところが、パソコン通信などで多数のパソコン間でデータをやり
とりする機会が増えるにつれ、メーカや機種によって表示できたり、
できなかったりする文字があることがわかってきます。

これが機種依存文字というものです。

機種依存文字はJISに含まれておらず、他のパソコンとのデータ交換
に使うべきではないのですが、便利が故に多くの人が愛用しています。

そのため、メールでも使おうとする人が後を絶たず、結果として
メールソフトやサーバを作っているメーカの方が根負けして不適切
なのをわかりながら、やむを得ず対応するという珍しいパターンに
陥っています。

ですから、リスクを踏まえて、除々にUNICODEに切り換えてるのが
正しいのでしょうが、筆者などは現行のままでもいいか、と思ったり
しています。

長々と続いた文字コードのお話は今回でおしまいです。

次回もお楽しみに。

このNoteは私が主宰するメルマガ「がんばりすぎないセキュリティ」からの転載です。
誰もが気になるセキュリティに関連するトピックを毎週月曜日の早朝に配信しています。
無料ですので、是非ご登録ください。
https://www.mag2.com/m/0001678731.html

この記事が気に入ったらサポートをしてみませんか?