<IT情報・コンピュータ基礎編> IT情報TOPヘ

テキストとバイナリ

(2006年05月08日)

 コンピュータで扱うデータには、テキストだとか、ワープロ文書だとか、JPG形式の画像だとか、EXE形式の実行可能ファイルなど、様々な形式があります。しかし、よく考えると、こららは全て「0と1」の並びに過ぎません。どこが違うのでしょうか。
 今回はコンピュータを単なる文房具の代わりとして使うのではなく、一歩進んだ使い方 ができるようになるために、データの本質に迫ります。

<文字コード再入門>
 コンピュータ上で、データを文字として解釈したものが「テキスト」でした。そのためには、特定の文字ごとに2進数を対応させた対応表を用います。これが「文字コード」で、その代表が「ASCIIコード」です。
 ASCII は、アメリカではANSI(American National Standard Institute:日本のJISにあたる)に取り込まれており、日本では「JISコード」「Shift-JISコード」「EUCコード」などに取り込まれています。

 さて、キーボードから半角大文字「A」と入力すると、ディスプレイには「A」と表示されます。これはコンピュータが「A」という文字そのものを認識して、その文字がコンピュータの中を走り回っているわけではありません。
 「A」のASCIIコードは「0x41(16進数)= 100 0001(2進数)」ですから、キーボードから「A」と入力すると、コンピュータはASCIIコード「100 0001」を認識して、この情報がディスプレイに届くと「A」と表示し、プリンタで印刷するとき「A」という形にしているだけです。
 このように、「0と1」でコード化された文字が「テキスト」です。テキストは単なる「0と1」の集まりではなく、約束事に従った「0と1」の集まりなのです。日本語の文字コードの場合も全く同じ考え方です。

<テキストとエディタ>
 コンピュータ上では、文字=テキストということです。このテキストを扱うためのソフトが、テキストエディタです。普通、単にエディタと言えばテキストエディタのことを言います。そして、エディタが作成するデータは、テキストデータであることが保証されています。Windowsの機能の1つとして、最初からインストールされている「メモ帳」(英語名:Notepad)は、このテキストエディタです。
 エディタは、もともとプログラマがプログラムのソースを書くために使われてきました。「vi」や「Emacs」などが有名です。しかし、現在では簡単な文書作成にも使われています。Windowsに付属する「メモ帳」の他に、市販の「秀丸エディタ」や「WZ Editor」などがあります。また、電子メールの文面の作成や、ブラウザ利用での文字書き込みなど、文字を扱うところには必ずある種の(名もない)エディタが働いています。
 ただ、コンピュータが文字コードを認識してしまえば、エディタ以外のテキストを扱えるソフト、例えば、「Word」や「一太郎」などのワープロも、当然テキストを扱うことができます。しかし、ワープロが作るデータはテキストの他に、多くの書式データも含んでいます。

<バイナリデータ>
 ワープロは文字を自在に扱えるだけなく、図表や画像まで扱います。ワープロがいかに多彩な表現ができるかということは、その独自性を発揮すべきポイントですから、ワープロの文書ファイルが、各社間で統一されることは決してありえません。
 ワープロで文字をどんな形で表示するかは「フォント」によって異なります。日本語では明朝体、ゴシック、筆文字など、英文字ではArial,、Centuryなどです。さらに、文字の大きさを拡大・縮小したり、肉太(太字)にしたり、色をつけたりなど、自由に文字操作ができます。
 このように文字を操作すれば、ワープロには文字情報と共に書式情報をも含みますから、もうテキストデータではありません。テキスト以外の情報を少しでも含むデータは、「バイナリデータ」といいます。「テキスト」の対義語が「バイナリ」です。
 バイナリデータは、Word・Excel・PowerPoint などのようにテキストデータを含むものの他、映像や音声などテキストを全く含まないデータもあります。つまり、データを単なる文字情報として解釈しないで別の方法で解釈したとき、それはバイナリデータです。別の言い方をすれば、テキストデータ以外は、全てバイナリデータということなのです。
 また、テキストデータをディスクに保存したものがテキストファイルで、バイナリデータが記録されているファイルがバイナリファイルです。テキストファイルならどんなエディタでも開くことができます。テキストエディタで開くことができないファイルが、バイナリファイルであるということもできます。

<形式を選択して貼り付け>
 話はチョッとずれますが、Webページの文字のみをWordの中に取り込みたい場合があります。しかし、Webページにはテキスト情報に加え、HTML(Webページの書式です)の書式情報が埋め込まれているため、一般的な「コピー」~「貼り付け」操作を行うと、Wordにこの書式情報が貼り付けられて、その処理に手を焼くことになります。
 そこで、Webページ上では通常の「コピー」操作をして、Word上では「編集」 ~「形式を選択して貼り付け」~ 表示されたダイアログで「テキスト」をクリックします。こうすることで、テキスト情報のみをWordに貼り付けることができます。
しかし、Webページの内容をエディタ、例えば「メモ帳」に取込む場合は話が異なります。エディタである「メモ帳」はテキストしか扱えませんから、単なる「貼り付け」でも「形式を選択して貼り付け」でも、テキストだけが貼り付けられます。

<データとプログラム>
 話を元に戻して、コンピュータの「データとは何か」を改めて考えてみます。コンピュータを扱う場合、テキスト文、ワープロ文書、JPG画像などのデータは、拡張子で分類して、一般にデータ(狭義のデータ)として扱います。 ところが、コンピュータにとっては、プログラム(EXE形式の実行可能なプログラム)も、原理的には狭義のデータと区別することができません。少し難しくなりますが、コンピュータの動作原理はそうなっています。
 コンピュータにとっては、一般のデータもプログラムも、全て「0と1」の2進数が並んだものに過ぎません。データもプログラムもすべてデータ(広義のデータ)として、全く同等に扱います。つまり、この「0と1の並び」そのものに、「データ」と「プログラム」の区別があるのではなく、コンピュータにこれらをどのように解釈させ、どう扱うかという便宜上の区分です。

 くどいですが、コンピュータの頭脳である「CPU」自身は、「0と1」の並びを「プログラム」と「データ」に区別できる能力を持っていません。人間がEXE形式の実行可能なプログラムを、コンピュータに「インストール」という形で、これはプログラムですよ、データではありませんよ、このように先ずコンピュータに教え込みます。
 また、プログラムをファイルとして扱うとき、「実行可能ファイル」(またはEXEファイル)と呼び、拡張子を「.EXE」にする習慣です。EXEファイルをダブルクリックすると、コンピュータはそれをプログラムとして認識して実行します。EXEファイル以外のファイル、即ちデータファイルをダブルクリックすると、それをデータファイルと認識してそのファイルを開きます。

<データ形式再入門>
 次に「データ」ですが、まずコード化という概念で「テキストデータ」と「バイナリデータ」に区分します。このテキストデータは、拡張子を「.TXT」にする習慣です。なぜ文字としての解釈だけを特別扱いしてテキストと呼び、テキストを含むワープロ文書、画像、映像や音声、その他何でも十把一絡げにバイナリという呼び方をするのでしょうか。
 それは、文字は情報処理の基本要素ですから、コンピュータは特別に文字処理能力を強化して、文字使用に「汎用性」を持たせてあるのです。ちなみに、「BMP,JPG,GIF」などの画像ファイル、あるいは「DV,AVI,MPG2」などの動画ファイルは、どのソフトでも扱えるように、規格面から「汎用性」を持たせた仕様になっています。

 さて、一般のアプリケーションが作るデータは、そのほとんどがバイナリデータです。そしてアプリケーションがそれぞれ独自にデータ形式を作成し、一般には他のアプリケーションからは利用することができません。それらを「拡張子」で区別して、そのデータ形式の独自性を主張する仕組みにしています。
 例えば、Word のデータ形式は「.DOC」、Excel は「.XLS」、PowerPoint は「.PPT」などです。ワープロの「一太郎」は、バージョンによって拡張子が変わり、Ver.6が「.JBW」、Ver.7が「.JFW」、Ver.8が「.JTD」という具合です。

 「0と1」の並びの特徴として、ASCIIコードでは、改行コードとエスケープコードを除けば、0x00~0x1Fと0x7Fは登場しませんし、英語だけしか使わないなら、0x80~0xFF(8ビットの先頭ビットが1)も出てきません。しかし、バイナリデータは 0x00~0xFFの数をフルに使い、「文字」にとらわれずに「自由に解釈」することができます。バイナリデータは中を覗いても、あまりにも複雑で「なんのこっちゃ」ということになります。
 テキストデータの特徴が簡便性と汎用性だとしたら、バイナリデータの特徴は高効率と自由だと言えるでしょうか。なんだか禅問答のようになってきたところで、今回は終わることにします。



ページ
トップ