ファイルとは

OSの役割について前章で学習しましたが、OSの主たる役割の中にファイルの管理があります。ファイルというイメージは何となくあっても、正確にファイルの定義を答えるとなると難しいものです。

ファイルの定義が重要だというわけではありませんが、ファイルとは何か知っておくことはとても大切です。

なぜなら、

データがファイルという形になってはじめて人間が扱うことができる

からです。

プログラムとはまた別の切り口になりますが、実際に人間が扱うのは細かいビットやバイト単位ではなく、ファイル単位で扱うということなのです。順を追って説明していきましょう。

まず、ファイルとは何か?

デジタルデータの単位 で学習のとおり、デジタルデータの最少単位は「ビット」で、8ビットをまとめた「バイト」が実質の最少単位でした。

しかし、私たち人間がバイトのままの素の2進数を扱うことはできません。何らかの形にまとまった集合体を扱うことになります。それがファイルです。

ただ、これまでデジタルデータ(命令)の集合体は、プログラムでありソフトウェアであると学習してきました。プログラムやソフトウェアとの違いは何かというと、

プログラムもファイルの一種である

ということなのです。

ファイルとはプログラムよりも「広い意味」でのデータの集合体を指す言葉になります。ソフトウェアもプログラムの集合体なのですから、ファイルの集合体と言うことができます。

つまり、プログラムもファイルもデータの集合体ということに変わりはありませんが、

機能や種類にかかわらずデータの集合体すべてがファイル

というくくりになるのです。

プログラムは「命令」の集合体なので、ファイルの一部にはなりますが、写真などの画像データや音楽データはファイルであってもプログラムではありません。

というわけで、つまるところ、データとファイルの違いを理解すれば「ファイル」というもが理解できます。もっとも両者は同じ意味で使われることもありますし、明確な区分があるわけではありません。

なので、次のように解釈すればよく理解できると思います。(あくまで個人的な見解ですが)

まず、データとは0と1の2進数のことです。データには明確な枠組みが存在するわけではなく、ただ単なる0と1の並びです。その並びの列のどこからどこまでがこのデータである、という概念も存在しません。その並びの列のどこを切り取っても、全体であっても「データ」と言う他ありません。

こう考えるとファイルというものが見えてくるのではないでしょうか?

データをファイルという「入れ物」に入れなければならない

ということです。

ファイルという入れ物にデータを入れておかないと、素の2進数がバラバラになって処理ができなくなるのです。

パソコンもただの箱であるということを再び思い出してください。パソコンにとっては、0と1の2進数の並び方が大切であり、混ざり合ったら得体の知れないものになるかもしれません。パソコンには、素の2進数に対して「このデータはここからここまで」といった判断はできないのです。

このように、データを入れる「入れ物」にあたるのがファイルになります。入れ物に入れることによって、はじめてそのデータがデータになり得る、つまり、私たち人間に認識できるデータとして扱うことができるというわけです。

したがってパソコンには、

ファイルに入っていない素のデータ(2進数)は保存できない

というルールがあります。

そもそも、パソコンに保存されているデータはすべてファイルという形になって保存されているのです。そして、そのファイルをOSが管理しているのです。

すなわち、私たち人間はOSを通して様々なファイルを操作、管理していることになります。

ファイルを操作・管理することこそパソコンを使いこなすということ

だと言うこともできます。

なぜなら、後述しますがファイルを操作するということはアプリケーションソフトを操作することでもあるからです。ファイルの整理の仕方をみれば、そのパソコンのユーザーのスキルやレベルが大体わかります。

では、ファイルにはどのような種類があるでしょうか?

ファイルには、

プログラムファイルとデータファイル

という区分があり、すべてのファイルは大きくわけるとその2つのどちらかに分類されます。

プログラムファイルとは、先述のとおりこれまで学習してきた様々なプログラムが収められたファイルになります。このファイルを実行すると、プログラムが連動して様々な処理が開始されます。

このため、プログラムファイルは別名、実行ファイル(実行可能ファイル)と呼ばれたりもします。プログラムの集合体であるアプリケーションソフトの中枢となるファイルです。

このプログラムファイルがアプリケーションソフトではないのかと疑問に思われるかもしれませんが、アプリケーションソフトには、プログラムファイル以外にも多くのファイルが集まって成り立っているところに違いがあります。

基本的にWindowsのプログラムファイルは3種類しかありません。拡張子が「.exe」「.com」「.bat」の3種類です。基本的にというのは、プログラムファイルに近いファイルが存在するためです。(詳しくは、拡張子 の章で学習します)

対してデータファイルとは、

私たちがアプリケーションソフト等を使って作成したデータ

のことです。

例えば、Wordで作成した書類や、Excelで作成したグラフや統計データなどが「データファイル」です。

デジカメなどから取り込んだ画像データや映像データ、ダウンロードした音楽データなども、自分では作成していませんが、デジカメのような機器や他人のアプリケーションソフトなどで作成されたデータであるので、データファイルとなります。

データファイルはプログラムファイルと異なり、無数の種類があります。拡張子がプログラムファイルの3種類以外のものはすべてデータファイルです。(詳しくは、拡張子 の章で学習します)

プログラムファイルとデータファイルは、持ちつ持たれつの関係であり、どちらかが欠けると存在意義がなくなってしまいます。

なぜなら、プログラムファイルはデータファイルを作成、編集するためのファイルであるし、データファイルはプログラムファイルがないと、開くことすらできないからです。

画像ファイルなどのデータファイルをダブルクリックすれば開くことができるじゃないか、と言われるかもしれませんが、それはプログラムファイルが開くように関連付けているためです。プログラムファイルがなければ開くことはできません。(これも詳しくは、拡張子 の章で学習します)

プログラムファイルとデータファイルの2種類が揃ってはじめて、パソコンを使いこなすことができるのです。

さて、今度はファイルについて別の見方をしてみましょう。

プログラムファイル(実行ファイル)であれデータファイルであれ、もとは0と1の2進数に変わりありません。

この2進数からなるファイルのことを、

バイナリファイル

と言います。

したがって、ファイルはすべてバイナリファイルになるのですが、ある種類のファイルとあえて区別しています。

そのファイルを、

テキストファイル

と言います。

テキストファイルは文字通り、テキスト(文字)だけから成るファイルになります。もちろんテキストファイルもバイナリファイルに違いありませんが、バイナリとテキストは区別されています。

詳しくは割愛しますが、テキストファイルは文字情報という最も基本的なファイルであるので、どのような環境(OSの種類などのパソコンの環境)でも同じように共通して扱うことができます。

一方、テキストファイル以外のバイナリファイルは、開くアプリケーションソフトが異なったりOSが異なったりすると、表示できなかったり文字化けしたりします。

つまり、バイナリファイルは「特定の環境で扱うことを前提としたファイル」になり、テキストファイルは「どんな環境でも共通して扱うことを前提としたファイル」になります。このため、バイナリファイルとテキストファイルは区分されているのです。

補足ですが、Wordで作成した文章ファイルはテキストファイルではありません。(修飾やレイアウト情報が含まれるため、純粋なテキストだけのファイルではありません)拡張子が「.txt」のファイルがテキストファイルになります。

こうして、ファイルという「入れ物」にデータを入れてまとめてやることで、私たちはそれを操作することができるようになります。

では、いつデータをファイルという入れ物に入れる作業を行っているのかというと、

保存

という作業を行ったときに「データ」から「ファイル」に変わるのです。

WordやExcelで、下図のような「保存」という作業をしたことがあると思います。

「名前を付けて保存」画面のイメージ

先述のとおり、ファイルに入っていない素のデータ(2進数)は保存できないルールがあるので、保存のときにファイルという入れ物に入れて保存するというわけです。

更新履歴

2008年7月9日
ページを公開。
2009年3月17日
ページをXHTML1.0とCSS2.1で、Web標準化。レイアウト変更。
2018年1月24日
ページをSSL化によりHTTPSに対応。
2022年1月9日
内容修正。

参考文献・ウェブサイト

当ページの作成にあたり、以下の文献およびウェブサイトを参考にさせていただきました。

ファイルシステム
http://www.rsch.tuis.ac.jp/~mizutani/online/filemanage/filesys1.html