ざさいたま
アバウト ギャラリー コンピュータ その他 リンク集

至高のテキストファイル

文章を保存するときのファイル形式

 文書を保存するファイルはテキストファイルと呼ばれる。昨今、テキストファイルの定義は曖昧だ。ワープロソフト専用形式1)等、文章が保存されているファイルを一括して、テキストファイルと呼ばれているのだ。ワープロソフト専用形式をのぞいた純粋なテキストファイルを指す場合、プレーンテキスト2)別に呼ぶ必要がある。誤解を避けるために本コラムでは、テキストファイルと呼ぶ場合はプレーンテキストを指すことにしたい。
 ワープロソフト専用形式とテキストファイルは、どちらも同じ文章を保存するファイルである。どこが違うか。ワープロソフト専用形式では、文章に装飾を施したり、脚注を付けたり、画像を挿入したり様々な表現ができる。テキストファイルでは、単純に文章が打たれているだけで、ワープロソフト専用形式のような表現はできない3)。ワープロソフト専用形式のほうが汎用的に利用できるように思えるが、果たしてそうなのか。

ワープロソフトが無いと

 ワープロソフト専用形式は、編集するためのソフトウェアがコンピュータにインストールされていないと編集できない。利用しているワープロソフトが、市場を独占しているような状況でも、インストールしていないユーザーは必ずいる。そのようなユーザは文章を編集したり、印刷したり、見ることができない。文書が送られてきても迷惑な話である。
 テキストファイルでは上記ようなことはない。テキストエディタがインストールされていないコンピュータはまず無いからだ。テキストファイルはどのソフトウェアで作成しても、ファイル形式は共通4)で、受け取ったユーザは文章を容易に見ることができ、また編集することができる。
 またワープロソフト専用形式は、そのワープロソフトが将来使えなくなることもあり得る。せっかく書きためた文章も、ソフトウェア使えなくなった時点で開けなくなり、いままでの蓄積が水泡に帰すことも想定されるのだ。このような場合に備えてワープロソフトで作成した文章も、同時にテキストファイルで書き出しをしておきたい。

プログラムの作成にも

 プログラムを作成する場合、いきなりマシン語5)(バイナリ6))を書いて作成することもできる。但し、このような方法は効率の観点からしてまず行われない。蛇足になるが、現在マシン語を理解できるレベルの職業プログラマはまずいない。バイナリとなったファイルは編集するにも複雑で、一つの変更があった場合、あらゆる部分を変更しなくてはならないくなる場合がある。テキストファイル(ソースと呼ばれる)はテキストエディタで簡単に作成でき編集できる。テキストファイルからマシン語(バイナリ)を生成することにより、簡単にプログラムを作成、変更することができるのだ。テキストファイル(バイナリ)を書ければバイナリは機械で生成できるのである。

データの受け渡しにも

 テキストファイルは、プログラム間のデータの受け渡しにも有効なのである。
 速度的面でバイナリファイルはメリットがある。少し専門的な話で恐縮であるが、保存したいオブジェクトにポインタを当てて、オブジェクトの長さ分を書き出してしまえば、簡単にデータが保存できる。逆の動作を行うことにより元のオブジェクトを簡単に復元できるのだ。非常に合理的な方法に思えるが、罠があるのである。この方法はプログラムの動作と密接に関わる方法であり、またプログラムだけではなくハードウェア的な動作とも密接に関わる。したがって、ソフトウェア、ハードウェアどちらの要素にも変更があった場合、データを復元することは著しく難しくなる7)
 テキストファイルの保存はプログラムに手間がかかるが、ソフトウェア、ハードウェアの変更があった場合でも、それらに依存しないために容易に対応可能である。データは人間に理解できるものであるため、元のプログラムが無くても、新しくデータを解釈するプログラムを設計することもできる。また、ソフトウェアを作成できない場合でも、テキストファイルであるため、汎用的になテキストエディタで編集、表示できるのである。
 軽視されがちなテキストファイルであるが、その汎用性を見直して頂きたい。
(小宮和寛)

注:
 1)敢えて具体的製品名を挙げると、Microsoft Wordの.docファイル、JustSytem 一太郎の.jtdファイル等がある。
 2)編集するのに専用ソフトが必要とならないファイル。バイナリファイルでないもの。
 3)テキストファイルにタグ等を埋め込んで体裁情報を記録すること可能。
 4)テキストファイルの保存形式は複数あるものの、エンコーディングの違いによるものであるので保存形式は共通と考えられる。日本語の場合、JIS、Shift-JIS、EUC-JPN、UTF-16、UTF-8等エンコーディング方法は限定される。
 5)コンピュータが直接解釈する命令のこと。
 6)0および1で構成された数字の羅列データ。人間が読むことは想定されていない。
 7)CPUにはエンディアン(バイトオーダー、記録順番)の違いやデータの長さの違い、構造体のメモリ展開の違いなどハードウェア的な違いがある。また、ロードされたオブジェクトがOSに依存する場合は、依存しているOSのオブジェクトの構造を知らなくてはならない。
  戻る
saitama web-framework (c) 2007-2012 thesaitama. All Rights Reserved.