もしかすると説明されないでも使えているから、まあそれで良いということでしょうかね。(^o^;)
現実世界のファイル・フォルダと言えば、キングファイル(これは商品名ですね)のような紙の資料を綴る文房具や、半透明のプラスチックのケース(これをフォルダと言うことが多い)を思い浮かべますね。
コンピュータの世界では最初期の頃から「ファイル」というものがありました。大型計算機でファイルというと、磁気テープや磁気ディスクに保管してあるデータの塊をコンピュータプログラムで使う時に「ファイル」という言葉で扱います。
ファイルとは、コンピュータにおけるデータの管理単位の一つで、ストレージ装置(外部記憶装置)などにデータを記録する際に利用者やOSから見て最小の記録単位となるデータのまとまり。
私がファイルを意識し始めたのは、大型計算機よりもパソコンを使いだしてからです。パソコンでプログラムを書く時は、データを扱う場合はもちろん、データの入出力装置であるキーボードやディスプレイ(モニター)も「ファイル」として扱うのです。
そういう考え方がコンピュータプログラムでは非常にすっきりしていると・・・UNIX(ユニックス)を作った先人たちは思ったのでしょう。私はUNIXに似た考え方のパソコン用OSであるMS-DOS(エムエスドス)を使い始めた時に初めて学びました。
プログラミングの中では、入出力の対象となるもの全てがファイルと考えて良いです。パソコンが使われだした初期の頃(1960年台〜1980年台)は、パソコンを使うのは技術者達でしたから、パソコン用語の多くは、むき出しのプログラミング技術用語ばかりです。
私がパソコンを使い初めた頃、一番最初に学んだのは「ファイルシステム」です。MS-DOS(元になったのは前述した通りUNIXです)は、
- ファイル
- ディレクトリ
の2つを扱うところから始まります。UNIXがそうだからです。コンピュータ(パソコン)を使うということは、パソコンの資源(現代風に言うと”リソース”と言います)を使うことです。
パソコンのリソースには、データ(ファイル)もあれば装置(ディスプレイやキーボードやプリンターなど)もあります。それら全てを「論理上のファイル」としたのです。
ファイルはデータの塊という”モノ”だと言えば確かにそうですが、OS(MS-DOSやUNIXやWindows)でいうところのファイルは「論理的なファイル」という仮想の世界のものだと思ってよいです。
実際、ファイルの実体であるデータは必ずしも「一つの塊」になっていません。記憶装置の中で小分けされてバラバラに存在していたりします。バラバラのデータを一つに集めて「ファイル」として扱っています。
この「論理上の」という考え方が重要です。ファイルを扱う構造として、階層構造というものを考えるようにしたのです。ファイルを入れる入れ物である「ディレクトリ」というものがあって、それが階層構造に配置されている。下図のようなイメージです。
ディレクトリもファイルの一種ですが、ファイルやディレクトリを入れるためにある特別なファイルです。実際にはその中にあるファイルや別のディレクトリの「情報」を持っています。
ディレクトリはファイルの「入れ物」ですから、ディレクトリの中にファイルや別のディレクトリを入れられます。この「入れる」という考え自体が論理的・仮想的なもので、物理的なモノとして入っている訳ではありません。
この「論理的な」構造という考え方が非常に大事です。
コンピュータの資源(リソース)を利用する時に、物理的なモノとしてだけ考えると、ユーザーにはとてつもなく難解な状況になってしまいます。現実の物理的な状態はコンピュータとOS(オペレーティングシステム)に任せて、ユーザーは論理的構造を考えればよい・・・ということなのです。
論理的なファイル構造(ファイルシステム)さえ分かっていれば、後はコンピュータがやってくれる。人間と実際のモノとを「ファイルシステム」という考え方で結びつけている訳です。
そしてこのファイルシステム上のファイルが扱うべき実際の「資源」です。ディレクトリはそれがある「場所」だと思えばよい。
ここまで「ディレクトリ」という言葉を使ってきましたが、Windowsではこれを「フォルダ」と言っています。現実世界でファイルを入れるものとしてフォルダというものがあって、その方が一般のユーザーには分かりやすいと思ったのでしょう。
Windowsを使っている皆さんは、「ファイルがフォルダに入っている」という言い方だとすっきり分かりますね。UNIXやLinuxの世界では、フォルダは「ディレクトリ」と言います。こっちの方がコンピュータの世界では元からある用語なのです。
ファイルシステムが論理的な構造を表しているということが分かったでしょうか。現実にファイルのデータがどう保存されているかは、OSが管理していてユーザーには普通は分かりません。もちろん、技術的には(専門の技術者には)分かる方法がありますが、それを一般のユーザーが知ったところであまり役に立ちません。
あえて言えば、ファイルのデータを扱う場合に物理的な状態が読み書きの性能に影響することはありますので、巨大なデータファイルを高速に読み書きする場合は、なるべく一続きの連続した物理的配置が良いだろう・・・ということは理解できるでしょう。これがあちこちにバラバラにあったら、読み書きの時間も余分にかかります。そういうことを昔のパソコン使いは気にしていて、時々、データ(ファイル)の物理的配置をし直す・・・という処理をしていたことがあります。
データがバラバラになっていることを、「フラグメンテーション」(断片化)と言って、それを修正し、なるべく一続きのデータファイル化することをデフラグと言いました。
今でも原理的には同じですが、機器自体の能力が昔よりはるかにアップし、Windowsでは以前程、そういうことをしなくてはいけないとは言われていませんね。
ファイルシステムを通して、コンピュータの世界では「論理」(人からの見え方・考え方)と「物理」(実際のモノのあり方)の両面を理解できることが色々な面で役立つということが分かれば、この世界に一歩踏み込んだと言えるでしょう。
例えば、何かのシステムを設計する時に、論理設計と物理設計の両面を扱える技術者は実力者だと言える訳です。
コメント