見出し画像

3.テキストファイルとバイナリファイル

こちら第3回「プログラマー養成講座」になります!
目次はこちらからご参照下さい!

ファイル形式について

前回、拡張子の話をしましたが、パソコンでの「ファイルを開く」は、OSに設定されている拡張子に紐づくソフトウェア/アプリで、対象ファイルを開いているよって話をしました。

ソフトウェアには、特定の役割があり、その作業データや保存データなどが、「ファイル」としてディスクに保存されています。ファイルの中身については、大きくざっくりとわけると「テキスト形式」と「バイナリ形式」があります。

テキスト形式とバイナリ形式

テキスト形式とは、ファイルをメモ帳などの「テキストエディター」と呼ばれるソフトウェアで開いたときに、人間の目で見ることができて、編集も可能なファイルです。そのファイルをテキストファイルと言います。

バイナリ形式とは、上記とは逆に人の目でみてもサッパリ何が書いてあるかわからない、画像や動画などのファイルや、特定のアプリで使うことを目的として独自の形式で保存しているファイルなどになります。総称的にバイナリファイルといいます。

テキストファイル

拡張子が「txt」でなくても、テキスト形式でかかれているファイルはテキストファイルといいます。特に「日本語」などの文字を含まず、英数字のみで構成されたファイルはアスキーファイルということもありますが、現在はあまり使われないです。

プログラムにはいくつかパターンがあるのですが、
テキストファイルで書いたものをバイナリファイルに変換して実行するもの、
テキストファイルで書いたものをWEBサーバーを仲介し実行するもの、
テキストファイルで書いたものを1行ずつ機械語に変換して実行するもの、
などがあります。ここで言えることは「プログラムを書く」ことは「テキストファイルを編集する」ことと等しいということです。そしてそのファイルのことを「プログラムソース」と言います。

プログラムソース以外にもテキストファイルは本当にたくさんの用途があります。ただの「メモ書き」用のテキストファイルだったり、プログラムの設定をするための「iniファイル」もテキストファイルの一種だったり、Excelで開けるけど「csvファイル」はテキストファイルだったり、これから学ぶHTMLファイル、Javasciptファイル、CSSファイルなども全部テキストファイルになります。

テキストファイルの2大要素、文字コードと改行コード

これからテキストファイルを作る際に、
以下の2点は最初に確認しておくことを癖にしておきましょう。

①文字コード
テキストファイルには、色んな文字が記入できるのですが、その「文字」自体に色々な種類があります。それが文字コードです。有名なところでは「SHIFT-JIS」「EUC-JP」「ISO-2022-JP」「UTF-8」などがあります。例えば「SHIFT-JIS」で書かれたテキストファイルを「UTF-8」として開くと、特定の文字が読めない状態になります。これを一般的に「文字化け」と言います。選んだテキスト編集アプリが「SHIFT-JIS」しか対応していない場合は「UTF-8」のファイルを作ることができません。例にあげた4種類は対応していることが望ましいです。

テキストファイルを作成する際には、今の世の中では「UTF-8」を使うことがスタンダードになってきていますので困ったら「UTF-8」を使っておけばとりあえず問題ないと思います。

②改行コード
次に大事なのは改行コードです。これは「LF」「CR」「CR+LF」の3パターンしかありません。LFは「Line Feed」といい改行という意味です。特定のアプリでは改行した時の位置を揃えないものもあり、そのためにCRがうまれ「Carriage Return」といい、行頭に移動することを意味します。改行コードが間違ってしまうと、6万行あるデータをミスして1行で表示されてしまうと、場合によってはメモリがぱんぱんになってPCが不安定になったり、ファイルを壊してしまう可能性もあります。

基本的には「LF」で問題ないですが、一部では「CR+LF」が必要だったりします。

テキストエディター

テキストファイルを、読み込みしたり、編集したりできるアプリのことを、特に「テキストエディター」と言います。

身近なところではMicrosoftのメモ帳やWordpadはテキストエディターですし、Microsoft OfficeでもtxtファイルはWordで開けるし、csvファイルはExcelで開くことができますので、そういう意味だとテキストエディター的な要素があります。(WordとExcelは専用のバイナリファイルがメインで扱うので、あくまで補助というか、機能の1つとしてですね)

テキストエディタは文字を書くだけのアプリですが、プログラマーにはお気に入りの「テキストエディター」を掲げている人が多くいます。筆ペンで文字を書く際に「この筆ペンが自分にあってて書きやすい」と思うのと感覚は似ていると思います。気にしない人もいると思いますが、自分が使いやすいと思っているアプリを使うのが効率が良いです。
(追記:師匠は「MKEditor」というテキストエディターを使っているそうですが、最近はあまりメンテナンスされていないので、オススメはできないかもって言ってました。)

また、プログラムをする際には、総合開発環境をインストールする場合も多くあります。それらにはテキストエディターが内包されているものが多く、特定の言語しか使わない人は、総合開発環境しか触ったことない人もいます。

バイナリファイル

テキストファイルには「文字コード」や「改行コード」という属性がありますが、基本的にはどの「テキストエディター」でも、テキストファイルを編集することが可能です。

バイナリファイルにも、扱いやすいように一部ルールが決まっているファイルがあります。ルールに従って作られたファイルは、対応アプリで読込や編集が可能です。有名どころは、画像ファイル、音声ファイル、圧縮ファイル、PDFファイルなどです。
例:
 画像ファイル(GIF,PNG,JPGなど)
 動画ファイル(AVI,MOV,MP4,WMVなど)
 圧縮ファイル(ZIP,LZH,RARなど)
 その他(PDFなど)

逆に「特定のアプリでの利用を想定し、アプリ独自の構成」で出来ているものもあります。有名なのはMicrosoftのOffice系のファイルは全部そうですね。
例:
 実行ファイル(EXE,COMなど / 一部テキスト形式もあり)
 Officeファイル(DOC,DOCX,ELS,ELSX,PPTXなど)

まとめ

ここではざっくりと、テキストファイルとバイナリファイルを説明してきました。

これからプログラムをする際に「テキストファイル」でプログラム言語を書きます。それを何らかの手段で、実行したり、見えやすい表示にすることで「プログラムの実行」を行っていきます。

また、画像ファイルなどは「ペイント」などの専用ツールで編集する「バイナリファイル」と覚えました。そのように「専用ツールでないと編集できないファイル種類がある」ということがわかっていればとりあえず大丈夫です。

補足:パソコンの計算処理とファイルの正体

実はパソコン内の計算処理は、数字の足し算だけではありません。プログラムの実行もそうですが「ファイルに書いた文字が正しく画面に表示すること」も計算処理となります。そのことについて補足しておきます。

実は「ファイル」はすべて「0」と「1」という情報からできています。これを2進数といいます。
「0」と「1」を組み合わせて「文字列」を作っているものが「テキストファイル」になります。
「0」と「1」を使って「GIF形式の画像」を作っているのが「GIFのバイナリファイル」になります。

ファイルの正体を見たい場合は「バイナリエディタ」というもので、対象のファイルを開くと2進数の内容を確認することができます。例えばテキストファイルに「a」とだけ保存して開くと2進数で「01100001」と表示されます。「あ」は「01010010 10100000」となり、2桁で表します。このように2進数にあてはめられた文字表が存在し、パソコンはその表通りに画面にテキスト情報を表示します。

日本語のひらがた、カタカナ、漢字などたくさんの文字が大きな表になっており、8000文字くらいあります。とてもじゃないですが手動でこれを解読することはできません。不可能とまでは言いませんし、頑張ればできると思いますが、とても労力と生産性が噛み合いません。この表は「UTF-8」などの文字コードによって変わってしまうので、1つだけ覚えれば済むという話でもないのです。ですから、この変換処理=計算処理は、パソコンにやってもらうことで人間は違うところの作業をメインに担当して、効率的なデジタルデータの作成をしていくのです。

この記事が気に入ったらサポートをしてみませんか?