directory
「directory」とは・「directory」の意味
「directory」とは、日本語で「ディレクトリ」と訳されることが多く、コンピュータのファイルやフォルダを整理するための仕組みである。覚え方としては、英語の「directory」には「指示する」という意味があり、ディレクトリがファイルやフォルダへの道筋を指示していると捉えることができる。また、「directory」の複数形は「directories」となる。「directory」の発音・読み方
「directory」の発音は、/dəréktəri/ であり、日本語では「ディレクトリ」と読むことが一般的である。「directory」の類語
「directory」の類語としては、「folder」や「catalog」が挙げられる。これらの言葉も、コンピュータ上でファイルやフォルダを整理するための仕組みを指す。「directly」と「directory」の違い
「directly」と「directory」は、綴りや発音が似ているため、混同されやすいが、意味は異なる。「directly」は副詞で、「直接に」や「すぐに」という意味があり、一方、「directory」は名詞で、ファイルやフォルダの整理をする仕組みを指す。「directory」を含む用語・関連する用語
「directly」とは
「directly」は副詞で、「直接に」や「すぐに」という意味がある。例えば、「I will contact you directly.(直接あなたに連絡します。)」のように使われる。「Directory C」とは
「Directory C」とは、Windowsオペレーティングシステムにおいて、デフォルトでシステムファイルやプログラムファイルが保存される場所である「Cドライブ」のディレクトリを指す。「directory」の使い方・例文
1. Please create a new directory for the project files.(プロジェクトファイル用の新しいディレクトリを作成してください。) 2. The directory structure should be organized in a logical manner.(ディレクトリ構造は論理的に整理されるべきである。) 3. You can find the file in the ""Documents"" directory.(「Documents」ディレクトリにそのファイルがあります。) 4. The software will automatically create a directory for the installation.(ソフトウェアはインストール用のディレクトリを自動的に作成します。) 5. How can I move this file to another directory?(このファイルを別のディレクトリに移動する方法は?) 6. The directory contains several subdirectories.(そのディレクトリにはいくつかのサブディレクトリが含まれている。) 7. The ""Pictures"" directory stores all the image files.(「Pictures」ディレクトリにはすべての画像ファイルが保存されている。) 8. The directory path should be specified in the configuration file.(ディレクトリパスは設定ファイルで指定されるべきである。) 9. The server's root directory is not accessible to the public.(サーバーのルートディレクトリは一般にはアクセスできない。) 10. The application will scan the specified directory for any changes.(アプリケーションは指定されたディレクトリを変更があるかどうかスキャンします。)ディレクトリ
ディレクトリとは、コンピュータ上で個々のデータを分類および整理するための、階層構造(ツリー構造)を持った場所の概念である。
オペレーティングシステム(OS)のほとんどは、個々の電子データをファイルという単位で格納することで、一つの単位として扱う。それらのファイルを、ルートと呼ばれるトップレベルの場所から、階層型に分類された下位構造の適切な場所に配置して整理するという考え方を採用している。ディレクトリは、そのような階層的に分類された場所のことである。
ディレクトリは、OS上でどのように永続的なデータを管理するかという方法を決定しているファイルシステムの要素の一部を成している。もともと、ハードディスクなどの生の装置のレベルでは、セクタという物理的な単位でデータが扱われている。しかし、アプリケーションから見た場合、これは低レベル過ぎて扱いづらい。そこで、OSはよりアプリケーションのロジックに近いデータの格納とアクセスの手段として、ファイルシステムを提供している。
どのような種類のデータをどこに置くべきかということは、OSごとに作法が決まっていることが多い。例えば、Linuxディストリビューションの一つであるCentOSなどでは、Web用の公開ファイルを置く場所は/var/www/htmlなどとなっている。この場所は、OSあるいはディストリビューションが違えば、変わることがある。またWindowsでは、インストーラからインストールされるアプリケーションの位置は、C:\Program Files以下となっている。
ディレクトリ階層の中で、ユーザーが現在参照しているディレクトリは、カレントディレクトリと呼ばれる。あるディレクトリの上のディレクトリは親ディレクトリなどと呼ばれ、下位のディレクトリが子ディレクトリあるいはサブディレクトリなどと呼ばれる。
ディレクトリの任意の場所を参照する機能として、Windowsではエクスプローラ、Mac OSではファインダーが用意されている。WindowsやMac OSはグラフィカルユーザーインターフェース(GUI)が採用されているため、アイコンをクリックする操作によって任意のディレクトリへアクセスすることができる。また、キャラクターユーザーインターフェース(CUI)のOSの場合は、コマンドライン入力で命令することによりディレクトリの移動が可能である。特に指定すれば階層を飛び越して直接アクセスすることもできる。
ディレクトリの考え方は、UNIX系OSにより普及したと言える。WindowsやMacintoshも、同様の思想で作られている。
ディレクトリと似た概念としてフォルダという概念がある。ディレクトリとフォルダの違いとしては下記の点が指摘できる。すなわち、ディレクトリがより物理的な構造に近い意味で使用されるのに対して、フォルダは、利用者に近いメタファーの一部として用いられることが多い。
ちなみに、ディレクトリサービスは、ネットワーク上の分散処理環境において、さまざまなサービスに関する情報を一元管理して提供するサービスや、あるいは、インターネット上でホームページ情報を紹介する電話帳のようなサービスを指す表現である。
ファイルシステム: | タイムスタンプ ダイナミックディスク ディスククオータ ディレクトリ トラックアットワンス ツリー構造 VFAT |
ディレクトリ関数
ディレクトリ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/11/17 16:54 UTC 版)
ディレクトリ(英: directory)は、コンピュータのファイルシステムにおいて、ファイルをグループ化するための特殊なファイル[注釈 1]で、整理・管理などの目的で活用される。ディレクトリの中にも、通常のファイルだけでなく入れ子的にディレクトリを作って、任意の階層を持たせて管理できることがほとんどである。
ファイルの入れ物(容器)などとも表現され、GUIでは文具のフォルダー(folder)のようなメタファーで表現されることが多い。このフォルダーはディレクトリと内部的に同じである場合もあれば、そうでない場合もある。
概要
UnixやMS-DOS、バージョン3.1以前のWindowsなどでは「ディレクトリ」と呼び、Mac OSやiOSやAndroidなどでは「フォルダ」と呼んでいる。Windows 95以降のエクスプローラーでは仮想的な階層構造であるシェル名前空間が導入され、GUI上はフォルダ(フォルダー)[注釈 2]と呼称するようになったが、ディレクトリと完全に同義ではない。例えば、コントロールパネルやネットワーク、圧縮フォルダーなどは、ファイルシステム上のディレクトリとは異なる仮想的なフォルダーである[1]。GoogleドライブやOneDriveのようなオンラインストレージサービスにもフォルダ(フォルダー)の概念がある。
Unixなどでは唯一の最上位の根幹(ルート、ルートディレクトリ)があり、ストレージやボリューム(パーティションなど)の内容は、任意の枝(マウントポイント)にマウント(接ぎ木)される、というツリー(木)モデルとなっている。それに対し、MS-DOSおよびWindowsでは、最上位は「ドライブ」という単位であり[注釈 3]、各ドライブに対してそれぞれのメディアのルートディレクトリがあって、それぞれのツリーがある、という(数学では「林」あるいは「森」と呼んで、「木」と区別することがある)ようなモデルとなっている。
ディレクトリにより任意の深さの[注釈 4]階層を構成することが可能なシステムでは、システムコール上のファイルの指定を、カレントディレクトリ(後述)の移動とファイルの指定のようにして別々に行わなければならないシステムもあるが、Unixなど多くのように「ディレクトリ名/ディレクトリ名/ディレクトリ名/ファイル名」のようにセパレータ(分離符、区切り文字)で分離する表現により一度に行えるものもある。セパレータは、Unixでは '/
'(スラッシュ)、MS-DOSやWindowsでは '\
'(コードが 0x5C の文字)[注釈 5]である。なお、MS-DOSのセパレータは、内部的にはスラッシュへの切り替えにも対応していた[2]。Windowsでは、多くの場面でセパレータとして0x5Cの代わりにスラッシュも使うことができるが、APIによってはスラッシュに対応しておらず、0x5Cのみを受け付けるものもある。
(セパレータが使えるシステムでは)先頭をセパレータで始めるなどの方法により、ルートディレクトリからの絶対的な表現で指定したパスを「絶対パス」や「フルパス」と呼ぶ。それに対して、カレントディレクトリ(後述)など、なんらかの任意のディレクトリから相対的に指定することもできる。これを「相対パス」と呼ぶ。例えばnote.txt
や../2024-04/note.txt
などが相対パスである。相対パスは特に注意深く扱う必要がある。ユーザーから与えられたパスを無害化する処理を施しておかないと、ディレクトリトラバーサルなどの攻撃を許すセキュリティホール(セキュリティ脆弱性)を簡単に生み出してしまう。
Unixなどでは[注釈 6]、プロセスの持つ属性として、カレントディレクトリ(あるいはワーキングディレクトリ)がある。そのプロセスが発行するシステムコール中において、相対パスで指定された場合の起点としてなど「デフォルトのディレクトリ」として使われる。子プロセスの起動時には、その時点での親プロセスのカレントディレクトリが引き継がれるか、明示的に指定することができるものもある。原則として子プロセスは親プロセスに影響を与えることができないため、「シェルのカレントディレクトリを変更する」というコマンドは外部コマンドとして実装することができないので、必ずシェルの内部コマンドとして実装される。
Unixにはディレクトリの内容を表示する外部コマンドとして ls
コマンドがあり、Domain/OSには、相当するコマンドとして ld
がある。なお、MS-DOSのCOMMAND.COMには、相当する機能を持つ内部コマンド dir
[3] があり、DISK-BASICには、相当するコマンドとしてfiles
とlfiles
がある。
Unixなどでは、ユーザーごとにホームディレクトリが設定されており(passwdファイルなどで)、そのユーザーのログイン後の最初のプロセス(通常はシェル)の初期カレントディレクトリがそれになる。通常[注釈 7]、そのユーザーが所有者かつ読み書き可能に設定されており、その下にユーザー個人のファイルを置くことが多い。
Unixをはじめ多くのシステムでは、ディレクトリ中のファイル名(正確には、「ディレクトリエントリ」)の順番をユーザーが編集することはできない[注釈 8]が、MS-DOSでは比較的容易に直接ディスクの内容を改変して編集[注釈 9]できたため、FDやマイクロデータの「エコロジー」シリーズなど、そのような編集機能を持つファイル管理ソフトもあった。
商用UNIXや、FreeBSDなどいわゆるBSD系のシステムでは、GNU/Linuxにおけるcoreutilsに相当するような基本的なユーティリティ類は全て、カーネルと同じプロジェクトとして維持管理されているいわゆるベースシステムに含まれており、通常は各システムのデフォルトの配置が使用されるため問題が起きることは少ないが、GNU/Linuxでは以前はディストリビューションごとにまちまちであったために面倒な作業などが必要になることがあったため、Filesystem Hierarchy Standard (FHS) により標準化が図られている。
API
プラットフォームごとにディレクトリを扱うためのシステムコールやAPIが用意されている。代表的なものには大別してPOSIXとWindows APIがあり、C言語互換のインターフェイスを持つ関数として提供されている。OSのシェルやシステムコマンドもこれらの上に構築されており、その動作はシステムコールやAPIの仕様の影響を少なからず受けている。
Javaや.NETなどの標準クラスライブラリにおけるディレクトリ操作APIは内部でこれらを使用して実装されている。Pythonのような動的言語のライブラリも同様である。
POSIX
mkdir()
rmdir()
opendir()
fdopendir()
readdir()
readdir_r()
rewinddir()
closedir()
ディレクトリを作成する場合は、mkdir()
を使う。
ディレクトリを削除する場合は、rmdir()
を使うが、中身が空である必要がある。
ディレクトリ内にある項目を列挙する場合は、opendir()
にディレクトリのパス文字列を渡して生成したDIR
オブジェクトを使い、readdir()
で列挙していく[4]。使い終わったDIR
オブジェクトはclosedir()
で破棄する。
もともとreaddir()
は、呼び出しのたびに上書きされる静的な内部バッファへのポインタを返していたため、スレッドセーフではなかった。readdir_r()
は引数経由でユーザー提供のバッファに対して値を書き込むことでスレッドセーフ性(リエントラント性)を追加した関数だが、呼び出し側によってバッファサイズを指定することができず、ファイル名を保持するのに十分なバッファを確実に割り当てる方法がないという設計欠陥をかかえていた。そのため、IEEE 1003.1-2024 Issue 8ではreaddir_r()
は廃止予定(obsolescent)となり、代わりにreaddir()
は(単一のディレクトリストリームに対して異なるスレッドからの同時並行的な呼び出しがない限り)スレッドセーフであることが要求されるようになっている[5]。
fdopendir()
はファイル記述子に対応したバージョンである。
seekdir()
やtelldir()
といった拡張 (XSI) をサポートしている実装もある。
Windows API
CreateDirectory()
RemoveDirectory()
FindFirstFile()
FindNextFile()
FindClose()
ディレクトリを作成する場合は、CreateDirectory()
を使う。
ディレクトリを削除する場合は、RemoveDirectory()
を使うが、中身が空である必要がある。
ディレクトリ内にある項目を列挙する場合は、FindFirstFile()
にディレクトリのパス文字列を渡して生成したHANDLE
オブジェクトを使い、FindNextFile()
で列挙していく[6]。使い終わったHANDLE
オブジェクトはFindClose()
で破棄する。
他にも、Windowsのバージョンによっては、ディレクトリ階層を一度の呼び出しで作成するSHCreateDirectoryEx()
[7]、ログインユーザーのホームディレクトリやデスクトップなどのよく使われる特殊なフォルダーのパスを取得するSHGetKnownFolderPath()
[8][注釈 10]といった上位のシェルAPIもサポートしている。
符号位置
GUIで表現されるディレクトリ(フォルダー)のアイコンは、絵文字としてUnicodeに収録されている。なお、U+1F4C1とU+1F4C2の2つはUnicode 6.0で、U+1F5BF、U+1F5C0、U+1F5C1の3つはUnicode 7.0で追加されたものである。
記号 | Unicode | JIS X 0213 | 文字参照 | 名称 |
---|---|---|---|---|
📁 | U+1F4C1 | - | 📁 📁 | FILE FOLDER |
📂 | U+1F4C2 | - | 📂 📂 | OPEN FILE FOLDER |
🖿 | U+1F5BF | - | 🖿 🖿 | BLACK FOLDER |
🗀 | U+1F5C0 | - | 🗀 🗀 | FOLDER |
🗁 | U+1F5C1 | - | 🗁 🗁 | OPEN FOLDER |
脚注
注釈
- ^ 正確には「特殊なファイルとして実装されることが多い」。
- ^ Microsoft Windows Vista以前の日本語版では「フォルダ」と表記されていたが、2008年以降のマイクロソフトの外来語表記ルール変更により、Microsoft Windows 7以降の日本語版では長音符を付けた「フォルダー」と表記されるようになった。
- ^ フロッピーの場合で明らかなように[要説明]、ディスク単位ではない。なお、物理的なディスク上の複数のパーティションなどに対し論理ドライブをそれぞれ割り当てることもできる。
- ^ 実際には後述する絶対パスの最大長などによる制限がある。
- ^ ASCII の 0x5C の文字が表示されているはずだが、実際にどのように表示されるかは言語やフォントなどの環境に依存する。MS-DOS/Windowsのセパレータの 0x5C というコードは ASCII ではバックスラッシュだが、ISO 646 であえて統一化されず自由領域として残されたコードであったため、JIS X 0201 では0x5Cが半角円記号(¥)として使われた。Shift_JISの派生版であるMacJapaneseでは0x5Cが円記号として使われるが、別途バックスラッシュが0x80に割り当てられた。さらにUnicodeでは円記号がU+00A5として別途規定された。このため、文字コード変換のアルゴリズムによって変換結果が左右されてしまい、また可逆変換にはならないことがある。
- ^ MS-DOSにおけるカレントディレクトリに関しては、元々シングルタスクが前提のCP/M風の設計だったところに、無理やりUnix風のシステムをツギハギしたものになっていて変なこと[要説明]になっており、ディレクトリだけでなく「カレントドライブ」というものもあってややこしいため、敢えて無視する。
- ^ nobodyなどの特殊なアカウントの場合は違うこともある。
- ^ Unixのlsコマンドや、シェルでの * による展開では、通常はソートされるためわからないが、lsの -f オプションなどで実際の順番を確認できる。
- ^ MS-DOSをバイパスする形で実現しているため、LFN(VFAT)導入時にはトラブルになった。
- ^
SHGetSpecialFolderPath()
[9]およびSHGetFolderPath()
[10]の後継であり、Microsoft Windows Vista以降で実装されている。
出典
- ^ Raymond Chen (2011年2月16日). “What is the difference between a directory and a folder?”. 2021年2月12日閲覧。
- ^ ASCII.jp:Windowsのパス区切り文字は、なぜ逆スラッシュになったのか?
- ^ 発行者 塚本慶一郎『標準MS-DOSハンドブック』株式会社アスキー、1984年7月10日、107-110頁。ISBN 4-87148-742-3。
- ^ fdopendir, opendir — open directory associated with file descriptor | The Open Group Base Specifications Issue 8 / IEEE Std 1003.1-2024
- ^ readdir, readdir_r — read a directory | The Open Group Base Specifications Issue 8 / IEEE Std 1003.1-2024
- ^ Listing the Files in a Directory - Win32 apps | Microsoft Learn
- ^ SHCreateDirectoryExW function (shlobj_core.h) - Win32 apps | Microsoft Learn
- ^ SHGetKnownFolderPath function (shlobj_core.h) - Win32 apps | Microsoft Learn
- ^ SHGetSpecialFolderPathW function (shlobj_core.h) - Win32 apps | Microsoft Learn
- ^ SHGetFolderPathW function (shlobj_core.h) - Win32 apps | Microsoft Learn
関連項目
外部リンク
この節には参考文献や外部リンクの一覧が含まれていますが、脚注による参照が不十分であるため、情報源が依然不明確です。 |
ディレクトリ
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/04/29 06:27 UTC 版)
「ICO (ファイルフォーマット)」の記事における「ディレクトリ」の解説
サイズは16バイト。 オフセット大きさ内容0 1 幅。256ピクセルの場合は0になる。 1 1 高さ。256ピクセルの場合は0になる。 2 1 カラーパレットの色数。カラーパレットを含まない場合は0になる。 3 1 予約済み。常に0。 4 2 ICOフォーマットではカラープレーン数1。CURフォーマットではホットスポットのX座標。 6 2 ICOフォーマットではピクセル毎のビット数。CURフォーマットではホットスポットのY座標。 8 4 対応するビットマップデータのバイト数。 12 4 対応するビットマップデータまでのファイル内オフセット。
※この「ディレクトリ」の解説は、「ICO (ファイルフォーマット)」の解説の一部です。
「ディレクトリ」を含む「ICO (ファイルフォーマット)」の記事については、「ICO (ファイルフォーマット)」の概要を参照ください。
「ディレクトリ」の例文・使い方・用例・文例
ディレクトリと同じ種類の言葉
- ディレクトリのページへのリンク