今更だけどパスのお話。絶対パスをちゃんと理解するのイメージ画像

初めてWebサイトを作ってみよう!ってなった時、必ず覚えなければならない事の一つがパスの書き方ですよね。
絶対パスや相対パス、ルートパスとか色々ありますね。
こんな事はちょっとでも経験があれば何を今更って感じですが、上級者の方でも結構勘違いしてる気もするので、今更ながらパスに関してゆるく書いてみようと思います。

絶対パスってなんだ?

分からない時はまずは検索!
例えば「絶対パス 相対パス」で検索してみると、解説しているサイトがたくさん出てきます。
そしてその多くのサイトで、絶対パスと言うのは「httpから始まる~」と解説されていますので、絶対パスっていうのは、URLを全て指定する書き方だと覚えている人も多いのではないでしょうか。

こんな感じですね。

https://example.com/company/map/

しかし、よくよく調べてみると、絶対パスは / から始まるパスのことを指しています。
先程の例でいうと、絶対パスで記述する場合は次のようになります。

/company/map/

httpから始まるスキームやらドメイン部分のオーソリティは含んでいません。
雑ですが図で説明するとこんな感じ。

path.png

この図でパスってなってる部分の一番上(ルート)から表記するのが「絶対パス」となるそうな。
つまり、絶対パス=ルート(相対)パスです。

で、これの根拠となる部分ですが、IETFっていうインターネット関係の基準を決めている団体が有りまして、その基準をちゃんとまとめたRFCっていう文書が有ります。
このRFCにはすっごいたくさんの基準が書かれてるんですが、その中の「RFC3986」に、URLとかパスとかってこんな感じにしてるよっていう内容が有ります。

英語なんで読む気が起きない方は、日本語訳がUniform Resource Identifier (URI): 一般的構文にあります。

先程の図は、このRFC3986 に書かれてた部分を分かりやすい感じにしたものですが、この文書の4.2.Relative Referenceに

single slash character is termed an absolute-path

って書いてあるんですね。
日本語訳の方を見てみると

単一のスラッシュ文字をもって始まる相対的参照は、絶対パス参照と呼ばれる。

と書いてます。
4.2まで行かなくとも、途中の3.3.Pathあたりに、「path-absoluteは / から始まるが // では始まらない」とも書いてあるので、この辺りからも、絶対パスっていうのは / から始まる部分で、http~は含まないと言うことが分かります。

ってことで、絶対パスはhttpから始まらないので、じゃあhttpから始まるのは何ていうのかと言うと「絶対URL」です。

相対パスに関しては、特に間違えそうな事も無いので非常に簡単にですが、現在の位置を基準にして記述します。

../../company/map/./company/map/のように、.././ から始まる書き方です。

フルパスってなんだ?

ちょっとおまけ的な内容ですが、パスの中にはフルパスって呼び方をするのも有ります。
Windowsの場合だと、

C:\Users\hira\Documents

みたいに、ドライブから始まるやつですね。
このフルパスは絶対パスやルート相対パスと意味としては同じですが、Webサーバーの場合、

/virtual/underhat/public_html/company/map/

みたいに、サーバー内部での実際のパスから書くことをフルパスって呼ぶことが多い(気がする)ので、Webのお話をしている場合にフルパスって言ったら、サーバー内部でのパスのことだと思っておくのが良さそうです。

絶対パスはやめてルートパスって言えば平和かもしれない

絶対パスはhttpから始まらないのが分かったとしても、初心者向けに解説している書籍やサイトを見てても多くの場合、httpから始まるのが絶対パスだよって説明されているので、絶対パスはそうじゃないよ!って言っても角が立つ気もします。

なので、「ルートパス」か「ルート相対パス」って言うようにすると、どこのサイトでも/ から始まる書き方だよって説明されてる(と思う)ので、誰も誤解せずに伝わり世の中は平和に進むような気がしました。

でも、書籍や初心者向けの解説をしているサイトとかでは、ちゃんと書いてあげたほうが良いんじゃないかなって思いました。