TXT

TXTファイルとは

文字だけ、ほかには何もありません。五十年後でも開けます。

TXT とは何か

TXT はプレーンテキスト形式です。どのエディターでも開けます。 プログラム間のデータ受け渡しと長期保存のために使われます。

拡張子は .txt、正式名称は Plain Text です。ただしどちらも、そのファイルが中に何を持てるかほどには多くを語りません。このページの残りは、その中身についての話です。

TXT はどこから来たのか

1963 年までさかのぼります。 仕様は Unicode です。

これだけ長く読まれ続けてきた形式なら、10 年後に取り出したいものを預けても大丈夫です。

仕様は公開されています

仕様書がそのまま公開されているので、中身を推し量るのではなく文書を読んで実装できます。この形式が数多くのプログラムに載っているのはそのためであり、20 年前に書かれたファイルが今も開けるのもそのためです。ただし「仕様が公開されている」ことと「使用料が要らない」ことは別の話です。中でコーデックを包んでいる形式では、特許のライセンスは仕様書が答えていない別の問題として残ります。

捨てられるものはありません

TXT ファイルは中身をそのまま保存します。保存し直しても何も変わらないので、開いて、直して、また保存する——それを何度繰り返しても劣化は積み上がりません。これが、渡すための形式ではなく作業のための形式である理由です。

TXT を開けるのは何か

Notepad、TextEdit、Visual Studio Codeが読めますし、同じ種類のプログラムならたいてい読めます。

ファイルが開かないとき、形式が悪いことはめったにありません。たいていはプログラムのほうが形式より古いのです。もっと古い形式に変換してしまうのが確実な逃げ道で、このサイトの残りの部分はそのためにあります。

ブラウザーで開く

これは今のブラウザーならどれでも読めます。

ですからページに置くのも、メッセージに添えて送るのも、安心してできます。相手が何をインストールしているかを考える必要がありません。

作業のための形式です

TXT は、開いて手を入れるために作られています。作業が続いているあいだはこの形式でファイルを持ち、完成したものが必要になるたびに、ここから書き出してください。

唯一、形式を持たない形式

TXT ファイルは文字の並びです。ヘッダーも、構造も、装飾も、メタデータも、バージョンもありません。古くなるものが何もなく、解釈するためのプログラムも必要ありません。それがこの仕様のすべてで、1970 年に書かれたテキストファイルが今日どんなソフトでも開け、五十年後にも、そのとき何が主流であれ開ける理由です。

このサイトにあるそれ以外のものは、本当の意味での形式です。特定の種類のプログラムが何かを再構成できるように配置されたバイトの並びです。プレーンテキストは何も要求しません。他のあらゆる形式が積み重ねられる床であり、HTML、CSV、JSON、Markdown、SRT、SVG はどれも、内側は慣習を上乗せしたテキストファイルにすぎません。

エンコーディングという、唯一の見えない決断

文字は数値として保存する必要があり、どの数値がどの文字を意味するかがエンコーディングです。UTF-8 が今ではどこでも通用する答えで、普通の英語のテキストが五十年前の ASCII とバイト単位で同一になる、という便利な性質を持っています。

古いファイルは UTF-8 ではなく、ファイルの中にそれを示すものは何もありません。西ヨーロッパの Windows で保存されたテキストはおそらく Windows-1252、中央ヨーロッパなら 1250、ロシアなら 1251 です。それを UTF-8 だと思って開くと、アクセント記号付きの文字はどれも黒いひし形や意味のない文字のペアになります。バイトは無傷のままで、読み込む側が推測を誤っているだけです。まともなエディターならファイルを別のエンコーディングで開き直せ、何も打ち直さずに即座に直せます。

バイトオーダーマークと、ファイルが奇妙な形で壊れる理由

一部のエディターは、UTF-8 ファイルであることを宣言するために、先頭に三つの目に見えないバイトを書きます。Windows ではよくあることですが、それ以外のほとんどの場所では望ましくないとされています。

エディター上では見えませんが、プログラムにとっては非常に目立ちます。BOM 付きの設定ファイルは解析に失敗します。BOM 付きの CSV は最初の列見出しが何とも一致しなくなります。BOM 付きのシェルスクリプトは意味の分からないエラーで実行を拒否します。理由の見えないままテキストファイルが何かに拒否される場合、まず確認すべきはこれです。「BOM なしの UTF-8」という設定が求めているものです。

改行コードと、二つ目の見えない決断

Windows は行末を復帰と改行の二文字で表します。それ以外はほとんど改行だけの一文字です。どちらも正当で、ファイルはどちらを使っているかを告げません。

目に見える症状は古くから知られていますが、今も残っています。Unix のファイルを古いバージョンの Windows のメモ帳で開くと巨大な一行になり、Windows のファイルを Unix のツールで開くと各行の末尾に余分な印が表示されます。現行のエディターはどちらも静かに扱え、変換もできます。今も痛い目に遭うのはバージョン管理で、誰かのエディターがすべての行末を書き換えたことでファイル全体が変更されたように見えたり、スクリプトで余分な復帰文字がファイル名の一部になって何も動かなくなったりします。

プレーンテキストが本当に優れている点

まず耐久性です。何十年か経っても、ソフトウェアに関する前提を置かずに読める必要があるなら、それはテキストであるべきです。メモ、記録、書き起こし、設定、データのエクスポート、アーキビストが感謝してくれるあらゆるものが該当します。

次にツールとの相性です。テキストは、あなたのデータについて何も知らない膨大な数のプログラムによって、検索、絞り込み、並べ替え、比較、編集ができます。二つのバージョンの差分には意味があります。バージョン管理は二人の変更をマージできます。バイナリの文書ではそのどれもできません。技術的な作業の多くが、代替案と比べれば原始的に見えるテキスト形式で行われている理由です。

非常に大きなテキストファイル

ログやエクスポートは数ギガバイトになることがあり、ほとんどのエディターは全体をメモリーに読み込もうとします。ワープロなら単に拒否し、汎用のエディターならパソコンが固まることもあります。

これに対応できるツールは、チャンク単位で読み込みます。本格的なコードエディター、ページャー、あるいはそのために設計されたコマンドラインのユーティリティです。どんなシステムでも、大きなファイルの最初と最後の五十行を見れば、開かなくてもほとんどの疑問に答えられます。冒頭はそのファイルが何かを教えてくれ、末尾はそれを書いたプロセスが最後まで終わったかどうかを教えてくれます。

テキストとの相互変換

文書を TXT に変換すると、文字だけが残り、フォント、レイアウト、画像、表、見出しといったそれ以外はすべて失われます。それが目的であることもよくあります。PDF から文字を取り出して引用したり検索したり、別の何かに読み込ませたりする場合です。知っておく価値があるのは、表をプレーンテキストに変換すると、たいてい読めなくなるということです。表を表たらしめていた整列は、内容ではなく書式だったからです。

逆方向では、テキストを PDF に変換するのは中身の変化ではなく容れ物の変化です。見た目を固定し、印刷できるようにし、誰が見ても同じように開けるものを作ります。テキストファイルのほうは、今も編集・検索・差分の取れるバージョンとして残ります。両方を残しておくのがたいてい正しい判断です。

基本情報

TXTフォーマットの識別子と出自。
拡張子.txt, .text, .log
メディアタイプtext/plain
初版1963
仕様Unicode

TXT ファイルについてのよくある質問

なぜテキストファイルに変な文字が表示されるのですか

エンコーディングの推測が誤っているためです。おそらく古い地域固有のエンコーディングで保存されたファイルが UTF-8 として読まれているか、その逆です。バイトは無事なので、まともなエディターで正しいエンコーディングを指定して開き直せば、文字は元に戻ります。

バイトオーダーマークとは何で、なぜ問題を起こすのですか

一部のエディターが UTF-8 ファイルの先頭に付ける、三つの目に見えないバイトです。あなたには見えなくても、プログラムには非常に目立ちます。設定ファイルの解析が失敗したり、CSV の見出しが一致しなくなったり、スクリプトが実行を拒否したりします。「BOM なしの UTF-8」として保存すれば直ります。

なぜファイルがメモ帳で一行の塊になるのですか

Unix の改行コードを使っていて、古いバージョンのメモ帳が Windows 式の改行しか理解できなかったためです。現行のバージョンはどちらも扱えます。コードエディターであれば正しく表示され、必要なら改行コードを変換することもできます。

非常に大きなテキストファイルを開くには

全体を読み込むのではなくチャンク単位で読み込むツールを使ってください。本格的なコードエディター、ページャー、コマンドラインのユーティリティなどです。たいていの目的には最初と最後の五十行を見れば十分で、どちらもファイル全体を開かずに読めます。

PDF をテキストに変換すると何か失われますか

文字以外のすべてが失われます。レイアウト、フォント、画像、表の構造です。内容を検索したり引用したりしたいだけなら、それが目的であることも多いです。表が最も影響を受けます。その整列は内容ではなく書式だったからです。

TXT は長期保存に向いた形式ですか

最良の選択です。バージョンもなく、独自の構造もなく、古くなるものが何もありません。1970 年代のテキストファイルが今日どんなソフトでも開けます。エンコーディングをどこかに記録しておき UTF-8 を使えば、保守すべきことはそれだけです。