1.4. ファイルとディレクトリ#
1.4.1. パス#
コンピュータには多くのフォルダ(folder)やファイル(file)が存在しています。これらには、システムが利用するプログラムや設定ファイル、ユーザーが保存したプログラムやデータなどが含まれます。各ファイルはハードディスク上のどこかに保存されますが、必ずしも連続した領域に保存されるわけではありません。特にサイズの大きなファイルは、いくつかの断片に分かれて、異なる場所に保存されることが一般的です(Fig. 1.4)。

Fig. 1.4 サイズの大きいファイルは、断片化されてハードディスクなどの記憶装置に保存されます。#
たとえば、Ubuntu 上では 239 MB のファイル(iwgsc_refseqv2.1_HC.gff3)が物理的にどこに保存されているかを、次のように調べることができます。
filefrag -v iwgsc_refseqv2.1_HC.gff3
## Filesystem type is: ef53
## File size of iwgsc_refseqv2.1_HC.gff3 is 250023123 (61041 blocks of 4096 bytes)
## ext: logical_offset: physical_offset: length: expected: flags:
## 0: 0.. 22527: 260661248.. 260683775: 22528:
## 1: 22528.. 45055: 260706304.. 260728831: 22528: 260683776:
## 2: 45056.. 61040: 260773888.. 260789872: 15985: 260728832: last,eof
## iwgsc_refseqv2.1_HC.gff3: 3 extents found
この結果から、ファイルは 3 つの断片(extents)に分かれて保存されていることがわかります。また、ファイル(logical offset)の最初の 22528 ブロック分は、ハードディスク上(physical offset)の 260661248〜260683775 番のブロックに保存されていることも読み取れます。
ファイルの断片化の状況は、OS の種類、保存時のディスク状況、空き領域の配置などによって変わります。また、ファイルをコピーや移動するたびに、ブロック番号や断片数が変化します。そのため、ファイルの物理的な位置情報を人間が覚えたり管理したりするのは、非常に困難です。
そこで、コンピュータの利用者は、OS が提供する仮想的な場所情報であるパス(path)を用います。OS は、ファイルの断片化された物理的な情報を管理しつつ、それらを一つのまとまったファイルとして扱い、パスと結びつけて利用者に提示します。利用者はこのパスを指定することで、ファイルの中身を開いたり、編集したりできるようになります。
ファイルの物理的な場所を覚えるというのは、図書館で『眠れる森の美女の朝寝坊対策』や『三匹のこぶたの建築設計図』といった本が「7階4番棚3段1冊目」や「3階6番棚1段8冊目」にあるのを完璧に覚えるようなものです。しかも、誰かがその本をちょっとでも動かしたら大パニックです!そこで図書館は「自己啓発」や「建築学」といったざっくりした分類を用意してくれています。パスはまさにその分類札のようなもので、迷子にならずに目的のファイルをさっと見つけられる、頼れる案内役なのです。
なお、UNIX 系のシステムでは、フォルダのことをディレクトリ(directory)と呼びます。厳密には、フォルダとディレクトリは異なる概念ですが、日常的にはほぼ同義として使われています。
1.4.2. パスの調べ方#
プログラミング言語でファイルを処理したりする際に、ファイルのパスを指定する必要があります。Windows の場合は、対象のファイルを右クリックして「プロパティ」を選び、「全般」タブの「場所」に表示された内容がパスです。必要に応じて、このパスをコピーしてプログラムに利用できます。

Fig. 1.5 Windows のファイルパスの調べ方#
macOS の場合は、ファイルを右クリックして「情報を見る」を選ぶと、「一般」タブの「場所」にパスが表示されます。ここを右クリックして「コピー」を選べば、パスをクリップボードに取得できます。なお、コピーされたパスは情報ウィンドウの表示と異なっています。プログラムの処理などには、コピーされたパスの方を利用します。

Fig. 1.6 macOS のファイルパスの調べ方#
上記のように、調べられたパスは絶対パス(absolute path)と呼ばれます。Windows では通常、C:\
から始まる形式です。Linux や macOS では、/
から始まります。この C:\
や /
の部分が、OS のファイルを保存するシステムの最上層を意味し、ルート(root)と呼ばれています。絶対パスは、言い換えれば、ファイルシステムの最上層を起点として、ファイルやフォルダの場所をすべての階層を辿って表現したものです。
一方で、相対パス(relative path)という考え方もあります。相対パスは、自分の現在の作業ディレクトリを基準として、目的のファイルまでの経路を表す方法です。絶対パスに比べて短く記述でき、柔軟に使える場面も多くあります。相対パスの具体的な使い方については、実例と一緒に紹介すると理解しやすいため、ここでは説明を省略します。