オレンジのブログ
読書と運動で人生を変えよう
パソコンシリーズ

絶対パスと相対パスを桃鉄に例えて解説

おはようございます。
本日は絶対パスと相対パスについて解説したいと思います。

ITエンジニアにとって基礎の基礎になる話ですが、「今更かよ」と思わず復習していただければと思います。

今回は特に相対パスについて詳しく解説させていただいてますので、ぜひ参考にしてみてください。
※登場する例えはあくまでイメージですので、細かい点はご了承いただければと思います。

絶対パス

概要

システムのルートディレクトリ(最上流にあるディレクトリ)から見た、ファイルやディレクトリへの完全なパスです。絶対パスは、そのファイルやディレクトリの場所を一意に示すので、どの場所からも同じ結果を得られます。

通常Windowsでは、「C:/」または「D:/」
LinuxなどのOSでは「/」がルートディレクトリとなります。

桃鉄に例えると

桃鉄では地名が書いてあるマスに停まると、その土地ならではの物件が購入できます。
なのでディレクトリ地名ファイル物件に例えられます

地名(ディレクトリ)物件(ファイル)
東京深夜高速バス会社.txt
超丸デパート.txt
秋葉原メイド喫茶.txt
家電量販店.txt
日本橋老舗折詰弁当屋.txt
老舗デパート.txt
銀座フルーツパーラー.txt
化粧品会社.txt
船橋競馬場.txt
ショッピングモール.txt

この情報を元にディレクトリ構造になおしてみます(銀座以外のファイルは省略)

東京
 ├ 秋葉原
 └ 日本橋
      ├ 船橋
      └ 銀座
         ├ フルーツパーラー.txt
         └ 化粧品会社.txt

ルートディレクトリ(最上流にあるディレクトリ)を東京として、フルーツパーラーを絶対パスで指定すると以下のようになります。

/東京/日本橋/銀座/フルーツパーラー.txt
※東京の前の「/」は絶対パスで書きますよ~という意味

この表現方法は、現在秋葉原に居ようが、船橋に居ようが変わりません。

更に例えるなら、秋葉原の家電量販店で買い物をしていたところ、外国人観光客に
「銀座のフルーツパーラーに行きたいんだけど、東京駅からの行き方を教えて」
と聞かれる感じです。

船橋のショッピングモールにて
「銀座のフルーツパーラーに行きたいんだけど、東京駅からの行き方を教えて」
と聞かれても同じ答えになるはずです。

相対パス

概要

相対パスは、現在の作業ディレクトリ(カレントディレクトリ)を基準として、ファイルやディレクトリへのパスを指定します。相対パスは、カレントディレクトリによって結果が異なるため、カレントディレクトリがどこであるかに依存します。

再び桃鉄に例えると

ディレクトリ地名ファイル物件に例えます。
マップは同じくこちらです。

ディレクトリ構造も載せます。

東京
 ├ 秋葉原
 └ 日本橋
      ├ 船橋
      |   ├競馬場.txt
      |   └ショッピングモール.txt
      └ 銀座
         ├ フルーツパーラー.txt
         └ 化粧品会社.txt


では船橋の競馬場.txtから、銀座の化粧品会社.txtを相対パスで指定します。

答えを先に書くとこちらになります。

../銀座/化粧品会社.txt

../ は現在のディレクトリから一つ上の階層に移動する意味です。
ディレクトリ構造だけを見ると船橋から銀座に直接行けそうに見えますが…

親ディレクトリの日本橋(../)を経由しなければならないことに注意しましょう。

銀座/化粧品会社.txt 間違い!!
../銀座/化粧品会社.txt 正解

これはマップを見ると分かりやすいですね。

完全理解と思いきや、個人的にここでもう一点気になる点があるんですよね。

それは船橋の競馬場.txtからということは、船橋を経由しなくていいの?


ということです。

相対パスで示すと

../../銀座/化粧品会社.txt

冒頭でも書いたように、正しくは ../銀座/化粧品会社.txt なのですが、何故でしょうか。

それは相対パスは、現在の作業ディレクトリ(カレントディレクトリ)を基準として、ファイルやディレクトリへのパスを指定するからです。

そう、競馬場.txtはファイルであってディレクトリではありません。
なので、現在の作業ディレクトリは船橋となります。

船橋の競馬場.txtからの相対パスと言いつつ、実際は船橋からのパスを書くことになることに注意しましょう。

オレンジ
オレンジ
個人的に理解に苦しんだポイントです


桃鉄では、前のターンで船橋の競馬場を購入しました。
次のターンに銀座の化粧品会社を購入します。
という操作イメージです。

マップには船橋の競馬場というマスは無いですよね?

競馬場購入後、船橋から銀座にコマを動かす
(../銀座)

化粧品会社を購入する。
(化粧品会社.txt)

これらをあわせて

../銀座/化粧品会社.txt

このイメージで覚えていただければと思います。

まとめ

絶対パスは
東京から銀座のフルーツパーラーまでの道のりを聞かれています。
これは秋葉原の家電量販店で聞かれても、船橋のショッピングモールで聞かれても答えは変わりません。
/東京/日本橋/銀座/フルーツパーラー.txt

相対パスは
船橋の競馬場を購入した次のターン、銀座の化粧品会社を購入する手順を聞かれています。
コマは駅(マス)にしか置けないので、日本橋(../)→銀座と動かして、化粧品会社を選択します。
../銀座/化粧品会社.txt

今回は以上です。
少しでもイメージを掴んでいただければと思います。