相対パスとは?絶対パスやルートパスと何が違う?

Webサイトを構築・運営しているとリンクなどの設定において相対パスにするべきか絶対パスにするべきか悩むことが多いかと思います。パスはIT用語で書類やデータなど特定の資源がある場所への経路を表す言葉で、小道や通り道、道筋を表す「path」という英単語が元になっています。具体的にはファイルの位置を表すのに使われる文字列を指しています。

今回はこの「相対パス」「絶対パス」についての基本とそれぞれのメリットやデメリットなどについてご紹介します。

相対パス

まずは「パス」の意味を理解

ストレージの内部では、複数のファイルを格納する「ディレクトリ」(directory)がいくつもの入れ子状になった構造となっています。これを「階層」構造と見て、あるファイルについて一番上から順にディレクトリ名を並べて記述したものが「パス」となります。このとき一番上位にあるものをルートディレクトリと呼んでいます。

例えば、日本語フォントのWindowsでは先頭をドライブ名、区切り文字を「\」で表します。従って、Cドライブのルートディレクトリにある「base」ディレクトリの中の「ten」ディレクトリの中にある「red.txt」というファイルを指す場合は「C\base\ten\red.txt」(Cドライブのbaseの中のtenの中のred.txt)と表記します。

インターネット上のURLも同様の形でファイルの所在を表記しています。あるファイルを「https://brown.com/orange/page01.html」で表されるとすれば、「https://brown.com」というWebサイト内ルートディレクトリの中のorangeというカテゴリーの下層にpage01.htmlというファイルがあることを示しています。

相対パスとは

先ほど挙げた例のように「https://brown.com/orange/page01.html」のような形式で、一番上の階層からファイルがある場所までの経路をもれなく記述する書き方を「絶対パス」または「フルパス」と呼びます。絶対パスの場合はユーザーがどこで作業していても記述する内容は変わりません。

リードジェネレーションのための重要なテクニック30選
バイヤーペルソナテンプレート

これに対して、ユーザーが現在作業している場所を基点にして目指す場所へのルートを記述する方法を「相対パス」と呼びます。相対パスではユーザーが作業している場所によって記述の内容が変化します。また、最上位のルートディレクトリを基準にパスを記述する「ルートパス」という方式もあります。

絶対パスやルートパスと何が違うか

相対パスではユーザーがいる場所を起点として、目指す書類が保存されている場所に至るまでの経路を説明します。絶対パスとは異なり、一番上からの階層をすべて書き出す必要はなく、対象ファイルが同じ階層やごく近くにある場合は極めて短い記述で済ませることができます。

ルートパスは、絶対パスからPCやサーバーの所在に関する記載を省いたものです。例えば「https://brown.com/orange/page01.html」というサイトをルートパスで表現した場合は、絶対パスからドメイン部分の「brown.com」を省略して「/orange/page01.html」という形となります。

相対パスにおいて重要な「階層」について

相対パスを記す場合には、ユーザーの現在地から目的の場所までの経路を表すために、ファイルの「階層」という概念を使っています。URLの場合は階層を「/」で区切りますが、相対パスの場合、1つ上の階層にさかのぼる場合は「../」と記述します。目的とする場所が同じ階層(カレントディレクトリ、カレントフォルダ)にあるときは「./」で表します。カレントディレクトリの場合は「./」の記述を省略してそのままファイル名を記述してもよいことになっています。

相対パスの使い方の例

Webサイトで相対パスを扱う場合の実際の使い方を見ていきましょう。
例えば、ユーザーの現在地と同じ階層にある画像ファイル「gazou.jpg」の場所を表す場合は、相対パスは「./gazou.jpg」または「gazou.jpg」となります。
この画像ファイルが1つ上の階層にある場合は「../gazou.jpg」、1つ下の階層の「kaiga」ディレクトリ内にある場合には「/kaiga/gazou.jpg」と記述します。

実際には相対パスはもう少し複雑な記述になることもあります。データを住所で分類、整理しているケースで、「東京都」内の「中野区」ディレクトリ内の現在地から「千葉県」フォルダ内「浦安市」ディレクトリの中に保存されている「mouse.jpg」を参照する場合を見てみましょう。

この場合は、「中野区」から1つ上の階層の「東京都」に上がり、「東京都」からさらに上の「日本」に移動します。その「日本」の内部にある「千葉県」に移動し、「千葉県」の中の「浦安市」に移動し、その中の画像にたどり着く、という流れです。これを相対パスで示すと「../../千葉県/浦安市/mouse.jpg」という記述になります。

絶対パスやルートパスでは、経路を最上層からすべて順番に記述するため、構造が複雑でもその所在地を追いやすく、「階層」を意識しなくても書けるので記述を間違う可能性が比較的少ないと言えます。それに対し、相対パスは経路をたどり記述する方法ですから、常に目的の場所を意識して正確に把握しておかないと、誤って記述することになります。つまり、相対パスを使うときにはディレクトリの階層構造を、一貫性のある論理的、合理的な設計にしておくことが求められます。データを住所で整理する場合は、都道府県別にディレクトリを作り、その中に市区町村のディレクトリを作り、さらにその中に細かい地域ごとのディレクトリを作るという形です。

階層を分けるのに使う区切り文字は使用する環境によって変わります。代表的なものは次の通りです。

  • Windows:日本語フォントの場合は「\」または「/」で階層の区切りを表します。
  • HTML:Webサイトのアドレス(URL)の階層を表す場合は「/」を用います。
  • Java:プログラムでパスを使う場合、階層の区切り文字には「\\」を使います。
  • PHP:プログラムでパスを使う場合、階層は「/」で区切ります

相対パスのメリット・デメリット

こうした相対パス方式での記述には、どのようなメリット・デメリットがあるでしょうか?

相対パスは開発時に大きなメリットがあります。絶対パスと比べて文字列が少なく済むため、ファイルが軽くなり作業効率を上げることができます。例えば「abcde.com」というドメインのWebサイトで同じディレクトリ「aaaaa」にあるpage01.htmlからpage02.htmlを参照する場合、絶対パスなら「https://abcde.com/aaaaa/page02.html」と書くことになりますが、相対パスでは「page02.html」だけ記述すればよいことになります。

また、相対パスならばインターネットを経由しないで目的地に着くので、必要な部分だけを抽出してテストし、改修などの作業を行うこともできます。
もう1つの大きなメリットは、このWebサイトをそっくりそのまま別のドメインに移動させた場合にページ内のパスを書き換える必要がありません。例えば「abcde.com」のドメインにあったものを「fghij.co.jp」に移した場合には、絶対パスを使っている場合は旧ドメインの「abcde.com」が記述された部分をすべて「fghij.jp」に変更する必要があります。それに対し、相対パスの記述ならドメインを移してもページ内の記述を変える必要がありませんので、変更やリンク切れの修正が不要です。

相対パスのデメリットは、大規模なサイトや複数の人が関わるプロジェクトの場合、階層構造の全体像が見えにくくなりファイルの所在などが分かりにくなること、ファイルの場所が離れている場合に記述が複雑になること、ページを移動させた場合にリンク切れが起こることなどが挙げられます。

Webサイトのリニューアル時に 絶対おさえておきたい SEO対策10のポイント