ディレクトリ
読み:ディレクトリ
外語:directory

 ディスクなど補助記憶装置に記録した、ファイルの登録簿のこと。
目次

概要

登録簿
 この登録簿には、ファイル名やファイルサイズ、ファイル更新日(タイムスタンプ)、ディスク上の位置などの情報が記録され、この登録簿自体もファイルと同様にディスクに記録される。
 そして、保存ファイルの一覧を表示する場合は、このディレクトリの情報が読み出される。
 また、このディレクトリは階層化することが可能である。

階層構造

UNIX
 UNIXでいつごろ階層ディレクトリ機能が作られたのかは定かではない。
 しかし必要に迫られ、ファイルシステムにその機能が導入されたと考えられる。

CP/MとDOS
 CP/Mやその流れを汲むMS-DOSバージョン1の頃は、階層ディレクトリという機能は無く、全てのファイルは今で言うところのルートディレクトリに格納された。
 この当時、ディスクと言えばフロッピーディスクしかなく、容量的にもこれでも充分だったからである。
 MS-DOSで階層ディレクトリ機能に対応したのはバージョン2以降である。但し、OSとしては階層ディレクトリ機能は使っていない。MS-DOSというOSは実質、ルートディレクトリにIO.SYS、MSDOS.SYS、COMMAND.COMという3ファイルがあれば成立するからである。

特徴
 UNIXMicrosoft Windowsなどの近代的なオペレーティングシステム(OS)のファイルシステムでは、ユーザーが自由に新しいディレクトリを作ることができ、新しく作られたディレクトリは既存のディレクトリに登録される。
 こうしてファイルをディスクに記録する時に登録するディレクトリを任意に選択することで、大量のファイルを整理・分類できる。
 この仕組みは「階層ディレクトリ(構造)」と呼ばれ、最も上位のディレクトリを「ルートディレクトリ」、それ以外のものを「サブディレクトリ」という。
 GUIを採用したOSでは、このディレクトリはもっぱら「フォルダー」と称されるが、具体的な機能や構造・内容などは全く同じものであり、同義と考えても差し支えない。

技術

登録簿の構造
 ファイルの登録簿がどのような構造で管理されるかは、OSやファイルシステムにより異なるため一概には言えないが、一定の構造を持ったファイルとして扱われることが多いと思われる。
 例えば、MS-DOSMicrosoft WindowsFATファイルシステムでは、1エントリ32バイトの構造を持ったバイナリファイルが正体である。最初にディレクトリ(フォルダー)が作られた時に一定サイズがドライブに確保され、不足した場合は適時サイズが増えてゆく。
 そして通常のファイルと区別するために、ファイル属性としてディレクトリのフラグを立てている。実装としてはシンプルである。
 このような機構になったのは、大昔のCP/MやMS-DOSバージョン1ではディレクトリ機能を持っておらず、MS-DOSバージョン2から後づけで機能が追加されたという理由もあるものと思われる。

相対位置
 データやプログラムは様々なディレクトリに置かれうる。時にプログラムは、外部のファイルを読み込んだりするために、自分からの相対位置を指定する必要が出てくる。
 ルートディレクトリからの位置を表わすものを絶対パス、自分が今いるディレクトリ(カレントディレクトリ)からの相対位置を表わすものを相対パスという。
 例えば、/home/hogehoge/public_html/cgi-bin/bbs.cgiというパスがあったとして、カレントディレクトリが/home/hogehoge/public_htmlのとき、cgi-bin/bbs.cgiのように表現するのを相対パスという。
 また、この相対パスを表現するために、...という表現方法が存在する。
 .はカレントディレクトリを表わす。..は一つ上のディレクトリを表わす。
 その正体はOSやファイルシステムにより異なるが、MS-DOSやWindowsのFATファイルシステムの場合、実はディレクトリを作った時に自動でその先頭に.と..という二つのエントリが作成され、OSはこの情報を参照して動作している。つまり、一見空に見えるディレクトリでも、.と..という二つのディレクトリエントリは常に存在しているわけである。

実例

UNIX
 UNIXでは、ルートディレクトリ以下をどのような構成にするか、特別な規定は無いようである。
 このため、大まかなところは似通っているが、同じ名前のディレクトリが同じ機能・目的用とは限らない。

FreeBSD
 FreeBSDの一般的なディレクトリ構造は、次のようになっている。他のBSD、例えばNetBSDなども、多少差はあるが、概ねにおいて同様である。

Linux
 Linuxは様々なLinuxディストリビューションが存在するという都合からか、ディレクトリ構成については標準化が進められている。その標準の一つ、FHS 2.3では次のようなディレクトリ構成が規定されている。
 オプションでないものは必須である。

Android
 Androidのディレクトリ構成は独特である。
 OS自体はLinuxだが、Androidが組み込み用のOSであること、シングルユーザーが前提であることなど、一般的なLinuxとは用途が異なるためと思われる。
 ルート直下は次の通り。詳細はAndroidのディレクトリ構成を参照。

Windows XP
 Microsoft Windowsは16ビット時代と32ビット時代で大きく仕様が違う。また、32ビットWindowsでも、Windows 2000までとWindows XP以降ではかなり違う。その上、元々はシングルユーザーOSだったため、あまりマルチユーザー向きの構造をしていない。
 Windowsのシステムファイルは、Windows 95/98系は「\Windows」、Windows NT/2000は「\WINNT」、Windows XPは「\Windows」に、それぞれ存在している。
 以下は、Windows XPの例である。

再検索