バイト
読み:バイト
外語:byte

 情報量の単位の一つ。派生して記憶装置の容量にも使われる。
目次

定義
 バイトの大きさ(ビットの長)は、2008(平成20)年にISO/IEC 80000の一部として発行されたIEC 80000-13:2008 Quantities and units ― Part 13: Information science and technology (数量と単位‐パート13:情報科学と技術) によって国際標準として「8ビット」と定義された。
 ただしコンピューターが誕生してからここまで、バイトの大きさは未定義つまり決まっておらず、様々な試行錯誤が繰り返された。
 歴史的には6ビット単位の派閥と8ビット単位の派閥があったが、最終的には8ビットの派閥が一般化した。つまり1バイトは、多くの場合8ビットと等価で、この場合はオクテットと呼ぶ。8ビットの場合は1単位で256値(2の8乗)の情報を扱える。従って、歴史的経緯を含めて厳密に8ビット単位を重視する場合には、オクテットという単位を用いるのが確実である。
 なお、メモリーなどの記憶装置とは別に、通信ではASCIIのように7ビット単位とするものがあったが、国際化で8ビット以上が必要になったこともあり現在では廃れている。

歴史

8ビットである理由

まず2進数のビット単位である理由
 人が10進数で計算しているのに対し電子計算機の計算が2進数を基準としているのは、これが最も効率的だったからである。それがゆえに、人の計算では存在しえないビット、バイト、などの機械的な単位が生じることになった。
 コンピューターも、実際に初期に開発されたものは10進数で計算していた。世界初の計算機(電子計算機ではない)である「バベッジの階差機関」も、世界最初の電子計算機であるENIACも、人の計算を自動化、高速化するために作られたものなので、計算は10進数で実行していた。しかしENIACでは10進数1桁を記憶するために10ビットのリングカウンターを用いたが、この1桁ごとに36本の真空管が必要になるなど非効率で、結果最大10桁の計算を可能としたENIACは全体で1万7000本以上の真空管が使われていたという。
 もっと効率の良い計算機の設計が求められるのは必然で、ENIAC開発中に設計されたEDVACでは2進数で計算すれば効率的であり回路もシンプルになるとした。実際にENIAC・EDVACに先だって登場し「世界初の電子計算機」に認められたABCは25桁の2進数を記憶できる計算機だったという。ただしABCはプログラム内蔵方式ではないことが、以降のコンピューターとの大きな違いである。
 このEDVACはジョン・モークリーとプレス・エッカートにより設計された。後にジョン・フォン・ノイマンの名で広く知られるようになった2進数の電子計算機はノイマン型とも呼ばれるが、それに刺激されて開発されたEDSACがEDVACに先立ち世界初の実用的なプログラム内蔵方式コンピューターとして完成した。
 2進数の場合、10進数を扱うにはBCDという方式で4ビットが必要になるが、それでも真空管4本で済むため従来と比べると大幅な効率化となった。回路がシンプルになると、動作周波数を上げ高速化もしやすいとあり、以降の電子計算機は2進数が一般化した。10進数ではなく2進数が普及したのは、電子計算機の特性を生かしたものだったのである。

最初の単位はWord
 プログラム内蔵方式として初期に設計されたEDVACの頃はまだバイトと言う単位はなく、ワードという単位があった。EDVACの1ワードは44ビットである。EDVACは後に述べるEDSACと違い3引数のアドレスを命令語に持つ3アドレス方式を採用したため1語も長くなった。
 その影響を受けたEDSACでは1ワード17ビットで設計されており、もう1ビットの機能ビットが存在した。これは5ビットのオペコード、10ビットのアドレス(210=1024)などを含むものとして十分な長さとして決まったようである。

Byteという語の誕生
 1バイトが8ビットになった理由はこれから述べるが、結論としてはその程度の長さが必要となったため、紆余曲折の末に自然に決まったからである。
 電子計算機は、タイプライターのように文字を扱う必要があった。1文字を扱える長さを1バイトとして、英大文字は26字、数字は10字で計36字なので、幾つかの記号を含めても6ビット(64種)あれば表現でき、実用充分な性能となる。但し英小文字まで入れようとした場合は6ビットでは足りないため、7ビット以上が必要となる。
 では、バイト(Byte)という用語の初出時はどうだったというと、この用語はIBMが開発に失敗したスーパーコンピューターであるStretch(IBM 7030)の設計時、1956(昭和31)年が初出とされる。1文字単位を、characterと呼んでも良いところbitとの区別のためにByteという用語を造語したという。1文字表現できるビット長を1バイトと呼ぶのは、これが初出ということになる。
 この時の設計では、6ビット系列でシングル6ビット バイト、ダブル 6ビット バイト(12ビット)、および8ビット系列でシングル8ビット バイトなどが想定され、最終的に8ビットを選んでいる。6ビット64種では不足が想定されるが、6ビットと6ビット×2などで不定長になるのも不便である。8ビットあれば256種の文字を扱えるため、殆どのアプリケーションでは充分だと判断された。かくして、Byteという用語が登場した時点で、1バイト=8ビットだと事実上決まっていたことになる。

Byteという語の普及
 その後すぐに1バイト=8ビットが定着したわけではない。単にバイトというと8ビット長を表わすのが一般化はしていたようだが、それ以外の長さのバイトも許容されていた。かくして、nビット バイトという表現が普及していた。例えば1971(昭和46)年に発売された、一般用としては世界初のマイクロプロセッサーである4ビットCPU「4004」は、データ幅が4ビットなので4ビット バイトとされた。
 何しろこの当時はメモリーは高価で貴重であり、扱う文字種数を減らして少ないビット長で1バイトを構成すればより効率的だった。ゆえに当時でも8ビットなどは非現実的で贅沢な仕様であり、IBMが実際に発売したIBM 1400シリーズや、そのハネウェルの互換機は6ビット バイトだった。ハネウェルから技術提供を受けてNECが開発したNEAC 2200シリーズも同様に6ビット バイトだった。

6ビット系などの躍進
 NEAC 2200シリーズは日本の電子計算機なだけあり、カナ文字も扱えるのが特徴だった。6ビットの範囲に英数文字とカナ文字の両方は入らないため、英数とカナを切り替えて使えるようにしていた。両者が頻繁に切り替わる場合は効率が落ちるが、当時あった8ビット バイトのIBM System/360と比べ、少ないメモリーで同じ情報が扱えるのが売りとなっていたという。
 その後、メモリーの値段も下がり始め潤沢にメモリーが使えるようになると、ハネウェルやNECは6ビット バイトを基本として、12/24/36ビットなどの形でシステムの高性能化を進めた。
 NEC ACOS-6やDEC PDP-10などのハイエンドのメインフレームでは9ビット バイトの機種も投入された。これらの機種は18ビットまたは36ビット単位での処理が可能である。
 また東芝のTLCS-12やTLCS-12Aのように、12ビットマイコンという製品もあった。CPUレジスターが実際に12ビット長であるが、これを1バイトとして扱っていたのかは不明である。

メモリーの進化
 主記憶装置コアメモリーだった時代は、1バイトが何ビットであってもコアメモリーは幾らでも構成可能だった。しかし現実には、4/6/8/9のいずれかが基本で、またはその倍数が使われていた。それ以外があったかは不明だが、仮にあったとしても使い勝手が悪く普及はしなかったようである。
 やがてDRAMやSRAMなどの半導体メモリーに置き換わると、4ビットまたは8ビットでのアクセスが基本となったため、更に変なビット長のコンピューターは淘汰されることとなった。9ビット バイトでも、4倍の36ビットバスであれば4ビットのメモリーを9個搭載すれば構成は可能だが半分の18ビットの場合は構成できないため、結果として9ビット バイトの電子計算機は廃れることになる。仮に昔8ビットより節約型の7ビット バイトの電子計算機があったとしても、半導体メモリーの時代には適合しないため同様に廃れる運命だったと言える。
 結果として4の倍数である必要があり、4ビット バイトは小さすぎ、逆に12ビット バイトは1バイトとして大きすぎたため、半導体メモリーの時代には8ビット バイトが最も手頃だった。半導体メモリーの仕様が1バイト=8ビットの普及に一役買ったと言える。

8ビット系の躍進
 上にも出たが、8ビット バイトのメインフレームにIBM System/360という製品が1964(昭和39)年に発売されている。
 この製品が8ビット バイトを採用した理由は、IBMのメインフレームは大部分が数値データを扱っていたためとしている。銀行など金融系の計算を考えると分かりやすいが、2進計算で誤差が出ては困る。きちんと10進数で計算して正確に計算されなければならない。この時、BCDで扱えば10進数の1桁は4ビットである。8ビット バイトだと、1バイトに10進数がちょうど2桁入ることになり、効率的である。6ビット バイトで扱おうとすれば、6ビット×2バイト=12ビットで3桁分を格納するような形になるが、これは明らかに効率が悪い。数値計算を前提とするなら、8ビット バイトが最も効率的だというのが、IBM System/360が8ビット バイトとした理由だった。
 以上のように、1バイトは効率的であり使いやすい8ビット バイトが必然的に選択され続け、普及することになったのである。

補足

7ビット系の勃興
 演算などとは別枠で、敢えて7ビット系を選択した実装があった。それは通信プロトコルの世界である。
 当時の通信のとても遅かったため、1ビットでも余計に増えるとその分時間のロスとなる。このため、通信の世界では1文字を7ビットで構成したASCIIという文字コードが普及した。
 ASCIIはAmerican Standard Code for Information Interchangeの略で、その名の通りアメリカ英語しか想定しておらず、アルファベットも英語で使うものしか含まれていない割り切りの仕様ではあるが、7ビットでも生活にほぼ困らない程度には実用的な仕様だった。

7ビット系の普及
 通信の世界では7ビット バイトだったので、多国語対応も7ビットで行なわれた。
 最初はASCIIの7ビット128種類のうち英語以外ではあまり使わない12文字を変更可能としたISO/IEC 646から始まり、文字集合そのものを切り替えて使うISO/IEC 2022に進化して日本語の漢字なども伝送可能となる。
 パソコンが普及し、8ビット〜32ビットCPUの初期時代は概ね7ビットで妥協するところがあった。

7ビット系の終焉
 1991(平成3)年10月、遂にUnicodeが登場する。パソコンでは、i486からPentiumにCPUの世代が変わった頃である。
 この当時は16ビット単位で処理するUnicodeは全く普及しなかったが、1998(平成10)年1月にUTF-8が登場したことで時代は変わっていった。これはPentium IIの時代である。8ビット単位で膨大な文字が扱えるようになった。
 当時の日本ではシフトJISが根強く、欧米でもISO 8859が根強かったが、やがてUTF-8へと置き換わった。この頃には、日本ではシフトJISを送る必要があったので既に8ビットが一般化しており、ヨーロッパでもISO 8859を使うため8ビットが一般化していたため、7ビットにこだわるのはアメリカくらいであった。あとは、それまで使っていたISO 8859やシフトJISとの互換性に見切りを付ければUTF-8の採用は難しくなく、結果としてアメリカでも通信は8ビット化せざるを得なくなり、もって7ビット系の通信プロトコルというものもほぼ根絶された。

最後に
 最初にも述べたが、1バイト=8ビットを決定づけたのが、ISO/IEC 80000の一部として発行されたIEC 80000-13:2008という国際標準が、1バイト=8ビットと定義づけたことによる。
 1956(昭和31)年にByteという単語が作られてから52年もの年月を経て、ようやく国際標準として1バイトは8ビットとして定義されたのである。それまで1バイト=8ビットはデファクトスタンダードでしかなかったが、標準として定められたことは大きい。

関連単位

各種単位
 バイトに関連する単位に、次のようなものがある。

接頭語
 バイトという単位は小さいため、より大きな単位も使われる。旧式スタイルは現在もよく使われているが、国際電気標準会議(IEC)はバイナリ接頭語を使うことを推奨している。
 バイトより小さい単位にビットがあるが、どちらもBから始まる語である。区別するときには、大きい方であるバイトは大文字のB、小さい方であるビットは小文字のbで表わす。

再検索