【初心者向けに解説】プログラミングに必須の絶対パスと相対パス を理解しよう

プログラミングの世界では、自分の位置を示す方法として

絶対パス相対パス

というものがあります。

パスの理解があやふやだと、つまらないミスで躓くことが多くなります。

プログラムを勉強中に「画像は相対パスで指定して」とか「ここは絶対パスのほうが良い」などと書いてあり理解できずに学習が止まってしまった…などということが無いように、しっかり基本を押さえておきましょう!

絶対パスと相対パスの違い

プログラミングで使われるパスとは、英語で記載すると”path””通り道、通路、進路、軌道”という意味です。
パスとは、ファイルの場所やWebページのあるところまでの道筋を示す情報のことです。

そして、その情報の表現方法には絶対パス相対パスの二種類があります。

絶対パス(absolute path)

絶対パスはフルパスとも呼ばれます。これはシステム内では重複しない位置を示します。例えば、ウェブサイトのURLなどがこれにあたり、絶対的な「住所」のようなイメージです。

絶対パスで指定することで、システム内の分岐や条件が変わったりしても参照したい位置を正確に示すことができるという特徴があります。

相対パス(relative path)

相対パスは特定の場所を基準として、基準からの道筋を伝えることで位置を示します。例えば、今いる場所から目的地までの道のりを「信号を渡って」「右に曲がって」「50m歩いたところ」と説明するようなイメージです。

相対パスで指定した位置は、 システム内での基準の位置が変われば伴って目的地も変わることに注意しましょう。

具体例で見てみよう

では実際に具体例で見てみましょう。
以下のような構成のディレクトリ構造があります。「home」の下にディレクトリが続き、「memo」の中には「my_data.txt」というデータが格納されています。

絶対パスと相対パスの図解

絶対パスの例

「my_data.txt」の位置を絶対パスで示すと、現在の位置に関わらず

/home/text/memo/my_data.txt

となります。

Windowsでは、自分の使用したいドライブから指定し、/の代わりに\を使用します。例えば、「home」ディレクトリがCドライブにあるとき、「my_data.txt」の位置を絶対パスで示すと、現在の位置に関わらず

c:\home\text \memo\my_data.txt

となります。

相対パスの例

次に相対パスを使ってみます。
もし、現在地が「text」を参照している場合の「my_data.txt」を示す相対パスは

text/memo/my_data.txt

となります。ここで迷ってしまった人は、もう一度図をよく見てみましょう。スタート地点が「text」ディレクトリで、その下層の「memo」ディレクトリを通り、 「my_data.txt」 にたどり着きます。

複雑な相対パス  一つ前に戻る書き方

絶対パスは特定の住所なので分かりやすいですが、相対パスは現在地によって表示方法が複雑になり難易度が上がります。

例えば、現在のディレクトリが「image」で「my_data.txt」を参照したいという場合を考えてみましょう。

図を見ると、「image」から 「my_data.txt」 までたどり着く直接の道筋はありません。その為、この場合

①現在のディレクトリから出て
②階層上に戻り
③「my_data.txt」を指定

とする必要があります。この時にひとつ前のディレクトリを参照する場合は、パスの先頭に

../

と指定します。

つまり、現在のディレクトリが「image」で「my_data.txt」を参照したい場合の相対パスは

../text/memo/my_data.txt

となります。

プログラミングをしていて、何故か画像や他のページがエラーで表示されないという場合はこのパスの指定が間違ってる場合が多くあります。最初は複雑に見えるパスの指定ですが、慣れると簡単に出来ますので練習をして慣れていきましょう!

おまけ

Pythonのpathlibモジュールを使ってファイル・ディレクトリ(フォルダ)の絶対パスと相対パスを相互変換および判定する方法は以下のブログが参考になります。すでにPythonのライブラリを勉強中という方は参照してみて下さい。

進導エイリ
進導エイリ

Start Labでは、
未経験でも始められる入門コースから、DXや機械学習に特化したコースまで
スキルや目的に合わせて学習コースをお選びいただけます!
まずはお気軽にお問い合わせください✨