テキストファイル
出典: フリー百科事典『ウィキペディア(Wikipedia)』
項目統合の提案:この項目はプレーンテキストとの統合が提案されています。詳しくはノート:プレーンテキストを参照してください。 |
テキストファイル (Text File)は、文字など文字コードのよって表されるデータだけが含まれるファイルのことで、ファイルフォーマットの一種と見なすこともできる。互換性が高く幅広い環境でデータを利用できる利点がある一方、単純な文字だけしか扱えないという制限がある。対義語は、バイナリファイル。
目次 |
[編集] テキストファイルの内部構造
テキストファイルの内部構造は、ほかのファイルフォーマットにくらべてきわめて単純である。テキストファイルに含まれる文字コードで表されるデータには、文字と制御文字が含まれる。制御文字によって表される改行は、テキストファイル中でデータの区切りを表す。
[編集] 文字の内部表現
一般的にコンピュータで処理されるすべてのデータは、内部的に数値として扱われる。文字をコンピュータで処理する場合は文字コードが使われる。現在のパソコンではほとんどの場合英数字をASCIIと呼ばれる文字コードで扱い、例えば文字Aは0x41(16進数の41。数値の前の「0x」は16進数を表す)、Bは0x42、...、になる。そのため、ASCIIの場合に「ABCD」という文字列を表すファイルを作成すると、内部的には16進数で次のように表される。
41424344
[編集] 制御文字
制御文字は、モニタやプリンタなどの機器を制御するためのデータで、改行を表す改行文字やタブ(水平タブ)などが含まれる。制御文字には、文字と同じようにそれぞれ文字コードが割り当てられる。ASCIIでは例えば、改行文字は0x10、水平タブは0x09、EOF(End Of File、ファイル終端マーク)は0x1Aである。
なお、MS-DOSではテキストファイルの最後にEOFを入れるのが一般的であった。EOFがないテキストファイルは、プログラムが暴走する原因となった。
[編集] 改行
テキストファイルでは、人間にとってもプログラムにとっても、改行はファイルの中でのデータの区切りを表す重要な部分である。プログラム処理を考える場合、テキストファイル中の1行、すなわち改行で区切られた部分は、1つのレコードであると見なすこともできる。後述するように、改行の表現方法はコンピュータ環境によって異なる場合がある。
[編集] テキストファイルとバイナリファイル
[編集] テキストファイルの利点
テキストファイルには、次の利点がある。こうした利点は、テキストファイルの単純さから生じている部分が大きい。
- 異なる環境間でも比較的互換性が高い。英数字をパソコンで扱う場合は、文字コードがASCIIで統一されているため、特に互換性が高い
- 高速に処理できる(かえって遅くなることのほうが多い)
- エラーや文字化けなど問題が発生する可能性が小さい
- 対応するプログラムを比較的容易に作成できる
- 数の表現で効率が良い場合がある。例えば1は文字では1バイトで済むが、大きな数に対応することを前提としたバイナリでは数バイトに及ぶことがある
[編集] テキストファイルの欠点
対して、コンピュータはバイナリで扱うためメモリー上のデータを変換しなければならないということから、バイナリの方が有利となることがある。
- テキストまたはその逆に変換する手間がかかり、処理が遅くなる
- 使用できる符号に限りがあり、データ量の面で効率が悪い。例えば-2億という数は文字だと7〜8バイト必要だが、バイナリでは4バイトで事足りる
- 関連して、暗号化されたデータはバイナリより解読しやすい
- 文字数の多い言語ではすべての文字を表すのに工夫が必要
[編集] バイナリファイル
テキストファイルとは逆に、画像ファイルや音声ファイルのように文字コード以外のデータから構成されるファイルや、文字を扱うファイルでも文字コード以外のデータを含むファイルはバイナリファイルと呼ばれる。
[編集] テキストファイルでは扱えない情報
単純なテキストファイルでは、文字以外の例えば次の情報を直接含むことができない。
- 文字のスタイル
- フォントの種類
- 文字の大きさ
- 文章情報
- レイアウト情報
- 画像
こうした情報を扱う場合、データの中に文字コード以外のデータを含める必要があり、バイナリファイルを用いることになる。こうした場合、データの内容が複雑になる。 また、こうしたデータの構造は標準化されていないため、アプリケーションソフトウェアごとに個別のファイルフォーマットが用意されるのが一般的であった。
こうしたファイルフォーマットのファイルは、特定のソフトウェアでしか扱えないため、不便な場面も多い。例えばMicrosoft Wordで作成して標準的な方法で保存したファイル(Wordドキュメントファイル)は、Wordなどこのファイルフォーマットに対応したソフトウェアでしか扱えない。
[編集] 先進的なテキストファイル
例えばLaTeXやHTML、XMLのファイルは、文書の中に文書構造を表す情報を保持しながら、テキストファイルとして扱われる。HTMLやXMLでは本文以外の情報はタグの形で表される。HTMLやXMLのファイルは、テキストファイルとして開くとタグも含めた文書の内容がそのまま表示され、対応するブラウザなどで開くとタグの記述内容に従ってレイアウトされた文書が表示されることになる。
[編集] テキストファイルの種類
テキストファイルは、次の点で分類される。
- 各行(レコード)が固定長か可変長か
- 使用されている文字コード
- 改行の仕様
[編集] 固定長レコードと可変長レコード
汎用機は多くの場合、固定長レコードファイルを扱うのが一般的であった。そのため汎用機で使われるテキストファイルはすべての行(レコード)を同じ長さにするよう、長さが足りない場合には空白文字などで埋めるようになっている。
一方、UNIXやパソコンなどでは可変長の行(レコード)を扱うことができ、任意の位置に改行文字を挿入する。
[編集] 文字コード
文字のうち、英数字を表す文字コードはほぼASCIIで統一されている。それ以外の、例えば日本語の漢字やかなを表す文字コードはさまざまな種類があり、互換性を下げる要因となっている。
[編集] 英数字
現在のパソコンなどでは、テキストファイルで使われる文字コードのうち英数字を表すものは、ASCIIまたはASCIIと同等のものがほとんどである。そのため、英数字が文字化けする場合はほとんどない。
なお、汎用機などでは文字コードとしてEBCDICが使われることが多い。
[編集] 英数以外の文字
英数以外の文字を表す文字コードはさまざまな種類があり、英数字の場合のように統一されていない。そのため、英数字以外の文字を含むテキストファイルは、英数字だけを含むテキストファイルに比べて互換性が低い。
また、英数以外の文字は言語ごとに異なる文字コードが使われているため、英語以外の複数言語を混在させることは難しい。例えば、英語と日本語が混在した文書、英語とドイツ語が混在した文書はそれぞれ容易に作成できるが、日本語とドイツ語が混在する文書の作成は難しい。
[編集] 日本語の文字コード
日本語では次の3種類の文字コードがあり、文字化けなどの問題が多発する原因となっている。
- ISO-2022-JP
- インターネット(特に電子メール)で使われている
- Shift JIS
- MS-DOS・WindowsやMac OS(バージョン9まで)で使われている
- EUC-JP
- UNIXやLinuxで使われてきた
こうした問題を解決するには、複数の文字コードに対応するプログラムや、変換ツールが必要になる。
[編集] Unicode
Unicodeは、日本語も含めた世界中のすべての文字を1つの文字コードで表すための規格である。Unicodeが広く普及することで、英数字以外の文字を扱うときの互換性を高め、また多言語が混在する文書が容易に作成できるようになることが期待されている。
しかし、現在のUnicodeは普及途上ということもあり、新しい文字コードがさらに増えたことにより混乱が増している一面もある。
[編集] 改行コード
テキストファイル内で用いられる改行を表すコードは、コンピュータの種類ごとに違いがあり、互換性を下げる要因となっている。いずれの場合も、改行は制御文字LF(0x0A)と制御文字CR(0x0D)で表される。このうち、LF(Line Feed)は行送り、CR(Carriage Return)は復帰を表し、いずれもタイプライターの動作を模したものになっている。
- MS-DOS・Windows
- CR + LF(CRとLFが連続)。タイプライターで、紙を一行分送り出して(改行)からパンチヘッドを行頭に戻す(復帰)と同じようなものだと考えればわかりやすい。
- UNIX
- LF
- Mac OS(バージョン9まで)
- CR
改行コードが原因で、英数字だけを含むテキストファイルであってもそのままでは使えない場合がある。こうした問題は、例えばLinuxとWindowsの間でファイルを交換した場合に発生する。
[編集] テキストファイルの編集
[編集] 一般的なソフトウェア
テキストファイルには数多くのソフトウェアが対応しており、例えば、Wordや一太郎、Excelなどでは、ファイル保存時にテキストファイルとして保存することを指定すれば、テキストファイルの作成・編集ツールとして使える。しかし、テキストファイル編集時にはこうしたソフトウェアの豊富な機能の多くが使えないことになる。また、テキスト編集のためには逆に機能が限られていることも多い。
[編集] テキストエディタ
テキストエディタはテキストファイルの作成・編集に特化したソフトであり、軽快でテキスト編集に便利な機能を備えていることが多い。
[編集] プログラム処理
テキストファイルは単純なため、プログラム処理が比較的簡単である。特に、sedやPerlなどはテキスト処理を目的とした言語であるため、比較的簡単な記述で複雑な処理ができる。
[編集] 関連項目
カテゴリ: 統合依頼 | 文字コード | ファイルフォーマット | 文書作成