タイトルAround the System and Development》データと文字コード(1)ASCIIコードカテゴリーテキスト/フォント, Around the System and Development
作成日2002/3/3 17:39:11作成者新居雅行
いろいろな用語辞典系の書籍やサイトなどを当たっていると、たまに、8ビット(1バイト)の説明で、「これだけあればアルファベットの文字にすべてのコードを割り当てられる」とういような記述が見られる。嘘でははないにしても、結果論だと言えるだろう。データをコンピュータで表現し記憶するということには、さまざまな要因がからむ。一方で、少し慣れてしまうとそうした細かな事情は考えなくてもいいようになり、かえって意識しなくなってしまう。そのあたりが便利なところでもあり、すばらしいところでもあり、一方で難しくするところもでもあり、トラブルのもとになる。

それでは、0と1の世界や16進数の世界に入って見よう。データという言葉はもはや説明のしようがないくらい当たり前の概念となっているだろう。そのデータを、コンピュータで扱って処理をしたいとなると、コンピュータに合わせた手法が必要になる。歴史的には先に数値をどう扱うかといったことがあったわけだが、ここでは説明をしやすいように、文字から話をしてみたい。
文字は、人間が話していることばなどを、記述するために利用するものだ。一定の規則に従って文字は記述されるが、その実体はグラフィックスである。ただし、人間はトレーニング等によって、話し言葉を文字で記述できるようになる。また、文字を言葉で発することができるようになる。言語を表現する基礎が文字であると言えるだろう。文字については、いろいろな要素がからみあって難しくなるが、ここでは、まずはデータとして扱うという基本的な線を考えよう。

文字をデータとして扱えるようにするために、文字1つ1つに、番号を割り振るということをする。もちろん、文字の種類ごとに異なる番号を振るが、同一の文字は常に同じ番号である必要がある。特定の文字に割り当てられた数値は「文字コード」と呼ばれる。数値は、2進数で表現してもいいのだが、10進数ないしは16進数が使われるのが一般的だ。どういう数値が割り当てられるかということは、大昔はコンピュータメーカごとにまちまちだったが、基本的には統一されている。たとえば、アルファベットのAは現在では65というのがだいたいほとんどの体系で決まっていると言えるだろう。そうすれば、文字コードの数値を記憶することで、コンピュータの中で文字を記憶することができるようになる。

19世紀後半に電信の世界で開発された規格は、最初は5ビットだった。5ビットだと、00000〜11111でつまりは、32通りしかない。これだと、アルファベットだけならともかく、数字を入れると数が足りなくなる。だから、あるコードは「モード切り替え」に使い、そのコードが一発入った後は、同じコードでも違う文字と扱う。たとえば、01010はRなのだが、モードを切り替えると「1」となると言った具合だ。初期状態がどちらのモードなのかと言うことが決まっていれば後は通信できるだろう。
当初からいきなりややこしいことをしている。これは、ビット数というものが簡単に拡張できなかった時代だからではないだろうか。今だと「じゃあ6ビットにしろよ」と思うところだが、当時の通信技術は、事実上の1ビットと言えるモールス信号(これも成り立ちを論理的に考えると不思議なものだ)があったものの、その発展系として、電気信号で「5ビットもの」たくさんのデータを扱えるようになったという状態だったのではないかと思われる。
実は、5ビットはまだ使われている。ほとんど使われなくはなっているが、「テレックス」という伝送系がある。超昔的感覚なら、マスコミに備えていて世界中の情報が電送されてくるといったイメージが強いかもしれない。そのテレックスのデータ体系は、マレー符号などと呼ばれているが、基本的には一方で端末をたたき、伝送された先ではラインプリンタ、つまり逐次紙に印刷するプリンタを使う。そこで、プリンタのコントロールをしないといけないので、文字以外に「印字ヘッドを頭に戻す」「次の行へ移動する」という、機能を持つコードを定義しなければいけなかった。これが、現在のコンピュータでもCR(13H)やLF(10H)といった制御コードとして残っているのである。
コンピュータのビット数を増やすのは部品を増やすことだけであるが、通信の世界でのビット数を上げるというのは、相手がいて成り立つ通信でもあり、容易ではなかったようだ。しかしながら、コンピュータ同士の通信が仮にできても、コード体系が一致していなければ、データの交換は難しくなるわけで、1960年代前半にASCIIコードが制定された。このASCIIとは、American Standard Code for Information Interchangeである。つまり、「アメリカ」の規格なのである。だが、このASCIIコードは、その後のコンピュータでの文字処理に多大な影響を及ぼし、この時点で「日本語は不利」であることは将来に渡って約束されたと言って良いだろう。
ASCIIコードは、7ビットで文字を表現するが、すると、128通りの文字が表現できる。そのうち、00H〜1FH、7FHは制御コードとして文字ではなく何かの機能や要求を伝達・記録するためのものとして確保された。そして、20H〜7EHまでが文字として割り当てられた。ただ、20Hのスペースは機能コードとしての位置付けだったようである。これだけのバリエーションがあれば、アルファベットの大文字小文字、そして数字、各種記号はそれぞれに番号を振ることができる。もちろん、Macintoshの中でも今でもASCIIコードは生きている。

一方で、和文の伝送ということで日本では6ビットというコード体系が、通信の世界で運用されていた時期もある。最初はもちろん、漢字ではなく、カナ文をなんとかやり取りしたいというのが目標であった。5ビットだと少ないのは明白であるが、おそらく通信時間を節約したいとかいったいろいろな理由で、今風の漢字コードのような5ビットを2つ並べるという発想はしなかったに違いない。ただ、その後に漢字を含めた伝送をしたい場合に、6ビット×2という手法を用いるようにもなった。そうした方法で、約2000文字余りの漢字かな文をコード化するということが可能となったのである。これらは、紙テープを使っていた時代の話である。

‥‥‥‥‥‥‥この項、続く‥‥‥‥‥‥‥[新居雅行]‥‥‥‥‥‥‥
関連リンク