• ITに強い編集プロダクション・リブロワークスのWebサイト

    近頃、「あ、これはテキストファイルが何かわかっていないんだな」と思うことが何度かあって、記事を起こしてみることにしました。個人的には前々から、何かの書籍とかで説明できないものかなとは思っていたのですが、なかなか書く機会がなく(そもそも何の本ならふさわしい話題なのか?)、IT系の資格や教科書などでもちゃんと説明されていることが少ないように思います。

    さて、テキストファイルがわからないと、どんな困ったことがあるのかというと、こんな失敗をしてしまいます。

    • 「Wordファイルをテキスト形式にして」といわれて、ファイルの拡張子を.docxから.txtに書き換えてしまう
    • 「テキストファイルがほしい」といわれて、Wordのdocxファイルを渡してしまう
    • 「JPEG形式ではなくPNG形式の画像がほしい」といわれて、ファイルの拡張子を.jpgから.pngに書き換えてしまう

    最後の例はテキストと関係ないのですが、原因はつながっています。

    まずは「テキストファイル」と「バイナリファイル」の定義から

    コンピュータの中では、写真も音声も文字もすべて2進数の数値の形で記録されているというのは、教科書などにも載っている話なので割愛します。文字の場合は文字コードという数値で記録されているというのも、よく聞く話なので飛ばしましょう。

    一般に「テキストファイル」と呼ばれるのは、文字しか入っていないファイルではなく、文字コードしか入っていないファイルです。そしてテキストファイル以外は、まとめてバイナリファイルと呼びます。バイナリは2進数のことなので、厳密にはテキストファイルもバイナリファイルの一種なのですが、一般的には「テキストファイルとそれ以外」を分けるために使われます。

    また、テキストファイルであるかどうかと拡張子は関係ありません。プレーンテキストには「.txt」が使われることが多いのですが、拡張子が「.html」「.js」「.md」などであっても、内容がすべて文字コードだけであればテキストファイルです。

    バイナリエディタでファイルを見てみよう

    テキストファイルを具体的に理解するには、バイナリエディタというツールを使うのが一番です。バイナリエディタは、ファイルの中のデータを16進数の数値のまま表示するツールです。

    「Binary Editor BZ」色分け表示のできる多機能バイナリーエディターのオープンソース版 – 窓の杜

    Mac用バイナリエディタiHexへのリンク

    メモ帳とWordで同じ内容のファイルを用意します。

    2つのファイルを、バイナリエディタで開いてみましょう。

    メモ帳で作成したmemo.txtをバイナリエディタで開くと、下の画像のようになります。画面の左側にはファイルの内容が16進数で表示され、右側にはそれを文字コードとして解釈したものが表示されています(日本語が文字化けする場合は、右上のリストで文字コードを選択してください)。テキストファイルの場合、メモ帳で入力したとおりの文字がそのまま記録されていることがわかりますね。

    テキスト表示のところどころにある「.」は文字として表示できないもの(改行など)や、桁をそろえるための空きです(UTF-8は日本語1文字に3バイト以上使います。話が脱線しすぎるのでググってみてください)。

    次はWordで保存したものを開いてみましょう。右側の領域を見ると、文字として読める部分もありますが、ほとんど「.」ですね。Wordのdocxというファイル形式はバイナリファイルだからです。おそらくどこかには入力したテキストのデータが存在しますが、それ以外のものがたくさんあります。

    ファイルの拡張子をdocxからtxtに変更しても、テキストファイルになることはありません。拡張子はファイルの種類を表すものですが、拡張子だけ変えてもファイルの中身は変わらないからです。Wordの別名保存でテキスト形式にするか、クリップボード経由でメモ帳に貼り付ける必要があります。

    参考までに他の種類のファイルもバイナリエディタで開いてみました。以下はJPEGファイルを開いた結果です。文字として読める部分もありますが、バイナリファイルですね。

    次はPNG形式の画像です。こちらもバイナリファイルだとわかります。

    同じバイナリファイルといっても、JPEGとPNGでは画像を数値として記録する方法が異なります。ですから、拡張子だけ変えてもJPEGファイルがPNGファイルになることはありません。単に開けないファイルになるだけです。

    たまに.rtfという拡張子のファイルを見かけることがあります。これはリッチテキストといい、Macのテキストエディットや、Windowsのワードパッドで編集できる書式付きテキスト用のファイル形式です。バイナリエディタで開いてみると、フォントの指定などがテキストとして書き込まれているので、定義としてはテキストファイルといえます。ただしあまりメジャーなものではないので、「テキストファイルがほしい」と指示されて、リッチテキストを渡すのはやめたほうがいいでしょう。

    余談ですが、Macのプレビューアプリは、JEPGファイルの拡張子を.pngに変えたファイルでも、ファイルの中身を見てムリヤリ表示してくれます。バイナリファイルの先頭数バイトにはファイル形式の情報が書き込まれていることが多いため、そこを見て判別することもできるからです。そのせいで、「拡張子を変えただけでJPEGをPNGに変換できる」と誤解する人を時々見かけますが、プレビュー以外のアプリはたいてい開けずにエラーを出すだけです。

    もう1つよくある誤解が、CSVファイルをExcel用のファイルだと誤解することです。Excelをインストールした環境だと、CSVファイルはファイルの関連付けによってExcelで開かれます。しかし実体は文字をカンマで区切ったテキストファイルです。メモ帳などのテキストエディタでも開くことができます。また、Excelの書式や数式はCSVには保存できません。データをカンマで区切っただけのテキストだからです。

    テキストファイルとバイナリファイルの違いを知らなくても、パソコンを使うことはできます。ただ、長く使っていると、絶対に困ることが出てきます。ですから、ときどきバイナリエディタでファイルの中身を眺めてみることをおすすめします。意外な発見があるかもしれませんよ。