11.8. 階層ファイルシステム
コンピュータ内部でファイルやフォルダを管理する方法をまとめます。 全体の構造をファイルシステムと呼びます。
まずこれまでの理解を確認しましょう。
ユーザが日常的に使うフォルダは、ユーザ個人ごとにわりあてられた「ホーム」です (
11.2. ホーム
)。
はじめは「ホーム」とその直下の「ダウンロード」と「デスクトップ」程度を区別できれば十分ですが、慣れたら自分でフォルダを作成したり、他のフォルダを使う機会も生じます。
フォルダ内にファイルやフォルダを配置した状況を、親子関係と呼びました ( 11.1. ファイルとフォルダの基本 )。 ホーム自身を親を持ち、またホームの外にもフォルダが存在します。 たとえば全ユーザに共通の「アプリケーション」フォルダはホームの外に存在します。
親をたどってゆきつく最古の祖先をルート /
、ルートから対象ファイルやフォルダまでの親子関係の列をパス path
と呼びました。学籍番号を使えば同姓同名の人を正しく認識できるように、同じ名前を持つファイルやフォルダもパスで区別することができます (
11.6. フォルダの場所
)。
階層構造 #
一般に「木構造」とはグラフの一種で、ルート (根) から枝分かれしながら頂点を伸ばした形をとります。辺で結ばれた2つの頂点のルートに近い方を親、遠い方を子と呼びます。また子を持たない頂点を葉と呼びます。
/
) を根、通常のフォルダを頂点、通常のファイルを葉、親子関係を辺とする
木構造と対応します。
このようなファイルシステムを階層的なファイルシステムとも呼びます (昔のファイルシステムにはフォルダの中にフォルダを作れないものもありました)。
ルートもフォルダの一つであることに注意してください。ルートの中にいくつかのフォルダがあり、それぞれの中にまたフォルダがあり、またその中にフォルダが……、といった具合に入れ子構造を成しています。 自然界の木は下から上に伸びますが、情報科学では根を上に描き枝を下に伸ばすことが多いです。
ファイルシステムの木構造は、不変ではなく、さまざまな機会に変更されます。 たとえば、ユーザが新規フォルダを作れば木は下に伸びます。 またUSBメモリをつなげば、USBメモリ内のファイルシステム全体 (これも木構造を持ちます) が、コンピュータのファイルシステムのどこかの子として接続されます。
パスの文字列表現 #
木構造のファイルシステムでのパスの代表的表現方法は、
ルート /
とし、そこからたどったフォルダの名前を スラッシュ/
でつなげます。
1台のコンピュータ内でファイルは、この文字列により一意に特定されます。
確認例 #
多くのGUIでは、初学者の混乱を防ぐため、パスの詳細は隠されています。 その場合でも、コンピュータ内部では、 GUI (Finder で表示されるアイコン) とパスは結びつけられています。
ここでは「ターミナル」というアプリケーションに、Finder で表示中のアイコンをドラッグアンドドロップすることで、パスの文字列表現を確認してみます。
- Dock からターミナルのアイコンをクリックし、起動させましょう。
このようなウィンドウが現れます。 - 続いて、Finderで表示中のアイコンをドラッグアンドドロップします。
- 表示された文字列が、アイコンに対応するパスです。
- 事故が起こらないように、確認したらいちどターミナルを閉じましょう。なお、ターミナルの正規の使い方は 13. コマンドの基本 で学びます。
この場合はGoogle Chromeで開いたアドレスバーでも同じ文字列が表示されます。
表示された文字列 /System/Volumes/Data/home/.../Downloads/9.dpf
は以下の構造を持ちます。
/System/Volumes/Data/home/
と続く 10桁のIDまでが、「ホーム」のパスに相当します。- ECCS環境ではこのように長いですが、
/home
が/System/Volumes/Data/home/
別名として定義されているので、/home/1234056680
など/home/
に10桁のIDをつなげた省略記法も利用できます。 - 他の環境では
/Users/hanako
のように短い場所に置かれることも多いです。
- ECCS環境ではこのように長いですが、
- Finder で「ダウンロード」として表示されるフォルダ名は、実際には
Downloads
というアルファベットの名前を持ちます。 macOSを英語モードで起動すると Finder でもDownloads
と表示されるようになります。このような翻訳が行われるのは、開発者が意図した特定のフォルダだけで、ユーザが作成したフォルダ名は翻訳されません。 - 区切り文字
/
で切ったときの右端9.pdf
がファイル名です。このなかでピリオドより右.pdf
の部分を 拡張子 と呼びます。ファイル名だけからファイルの種類を知りたいときには、拡張子が手がかりになります。拡張子は Finder では隠されていることもあります。
パスの文字列は、前 (左) が大分類、後 (右) が細かい分類になります。日本の住所表記と同じ慣習です。 比較して URL のところで触れたドメイン名は逆向きで、前 (左) が細かい分類、後 (右) が大分類でした。
7.1. ブラウザとURL
別の例を見てみましょう。 アプリケーションの Google Chrome のパスを調べてみます。
/Applications/Google\ Chrome.app
となります。
/Applications/Google%20Chrome.app
となります。
正しいパスは /Applications/Google Chrome.app
で以下の構造を持ちます。
- アプリケーションソフトウェアのGoogle Chrome は、
/Applications
というルート直下のフォルダに配置されています。このパスがユーザのホームの外であることが、パスの文字列からも分かります。また/Applications
がFinderでは「アプリケーション」と表示される理由は、「ダウンロード」と同じ翻訳するよう設定されているためです。 - macOSのアプリケーションは、
.app
という拡張子を持つフォルダ内の複数のファイルから構成されます。このこと自体を覚える必要はありませんが、通常のGUIの見た目と実体は異なりうるという理解は重要です。 - パス中の
Google
とChrome
の間の空白文字\
に、URLバーでは%20
と変換されています。これは空白文字は、ターミナルが扱うシェルで別の意味を持ったり、URLでの使用が許されていないためです。このように、「ファイル名として使えるが、扱いが面倒な文字」があります。
パスに移動 #
Finder にパスを入力して移動することもできます。 ウェブブラウザにURLをコピーペーストして移動することと似ています。
開いてほしいフォルダを他者に伝える際は、パスを正確に伝えられるなら、この方法が適しているでしょう。(そうでないと、あれをクリックして、と伝言している内に迷子になってしまうかもしれません)
とメニューを選択すると
/
とルートを入れると
今の環境ではパスを入力するダイアログでも翻訳が働くようで、/System
と入力すると数秒後にシステム
と置き換えられたりします。 このあたりは環境の違いが大きく、HWBでは触れません。
/home/hwb/exercise/
にカレントフォルダ変更してみましょう。ここには、操作の練習のためのファイルやフォルダがおかれています。次のうち、
/home/hwb/exercise
に置かれていないフォルダ名はどれでしょう。/home/hwb/exercise/taro/interest.txt
というファイルには、太郎くんの興味があるものが書いています。彼の興味がある科目は何でしょうか?ファイル名とパス #
ファイル名の制限 #
ファイル名には使えない文字、使わない方が良い文字があります。
基本的には
大文字と小文字の英数字、そしていくつかの記号 (ハイフン -
、ピリオド .
、アンダースコア _
) を使うことをお勧めします。
まずパスの区切り文字である/
は、ファイル名には使えません (理由は分かりますね?)。
また多くの環境で、長さの制限がありmacOSでも「255 文字まで」という制約があります。
さらに他の環境や別の人に送付することを想定するなら、使えない文字は増えます。
Microsoft Windows のユーザに送る場合は、バックスラッシュ\
とコロン:
も、ファイルの区切り文字になるため、使えません。
また濁音半濁音のひらがなやカタカナは避けた方が良いでしょう。 文字の符号化のところで紹介しますが 濁音や半濁音は、「が」を「か」+「゛」のように分解するかどうかで、大手の環境でも流儀が分かれているためです。
macOS独自の注意点として、いまのところ、ファイル名の大文字と小文字を区別しないようです。 つまり、同一フォルダ内にok.pdf
とOK.pdf
の両方のファイルを作ることができません。
Microsoft社製の環境などで、 スラッシュ異なるファイルが同じ名前を持つことは、一つのフォルダ内ではできません。 別の場所なら、同じ名前の別のファイルやフォルダを作成可能です。たとえば、/
に替えて バックスラッシュ\
を区切りに使うことがあります。 さらにややこしいことに日本語環境では バックスラッシュ\
が 円記号¥
に文字化けのように代用されることがあります。 そのような環境に慣れている人は、国際的にはパスに円記号は使われない ことに注意してください。
2023-04/journal.pdf
のように月毎にフォルダを分けて、同じ名前のファイル journal.pdf
に日記を書いて、いつの日記かはフォルダで区別することは合理的です。
拡張子 #
慣習としてファイル名にピリオド .
を含めて、その左側を人が認識するための文字列に、右側をファイルの種類を示す略称にすることがあります。
後者を 拡張子と呼びます。たとえば index.html
というファイル名は、html
が拡張子です。
GUI環境では、ファイル名の拡張子部分が表示されていないこともあります。 これは、ファイルの種類はアイコンでわかるため、不要な情報を省く意図です。 パスを一部省略したり、一部が日本語に翻訳して表示されることと共通の目的です。
かつて個人用コンピュータの性能が未発達だった頃 (たとえば1980年代)、 ファイル名の拡張子が 3文字までという環境もありました。今の環境は拡張子に特に制約がありませんが、2-4文字が人には見やすいようで多く使われています。
普段使わない情報を隠すことも、よいUIの設計方針と言えます。一方、リテラシーとして、普段は隠されている内容の理解もが多少は必要です。電源コードの許容電流や、ブレーカーについて、順調な間は意識しないで生活することと似ているかもしれません。
ネットワーク共有 #
通常の個人用コンピュータでは、各コンピュータ毎にユーザが管理され、ユーザのホームは各コンピュータで異なります
ECCSの iMac 環境では、全端末でユーザを統一的に管理しホームもネットワークで共有しています。 そのため、どの端末に座ってログインしても、同じホームを使うことができます。
Google Driveや iCloud, One Drive などのクラウドサービスは、別の仕組みで、ファイル共有を実現しています。 各自の計算機では設定によってホーム以下のダウンロードや文書などのフォルダが自動で同期されているかもしれません