ITパスポート 2019年 春期 問96
問題文
Webサーバ上において、図のようにディレクトリd1及びd2が配置されているとき、ディレクトリd1(カレントディレクトリ)にあるWebページファイルf1.htmlの中から、別のディレクトリd2にあるWebページファイルf2.htmlの参照を指定する記述はどれか。ここで、ファイルの指定方法は次のとおりである。
〔指定方法〕
(1)ファイルは、“ディレクトリ名/.../ディレクトリ名/ファイル名”のように、経路上のディレクトリを順に“/”で区切って並べた後に“/”とファイル名を指定する。
(2)カレントディレクトリは“.”で表す。
(3)1階層上のディレクトリは“..”で表す。
(4)始まりが“/”のときは、左端のルートディレクトリが省略されているものとする。

選択肢
ア:./d2/f2.html
イ:./f2.html
ウ:../d2/f2.html(正解)
エ:d2/../f2.html
🔒 解説は解答すると表示されます
d1からd2のファイルを参照するパス指定【ITパスポート 解説】
正解の理由
カレントディレクトリ(current directory:現在操作しているディレクトリ)であるd1(ディレクトリ:directory=ファイルを入れるフォルダ)から、同じ階層にある別のディレクトリd2の中のファイルf2.html(HTML:HyperText Markup Language=Webページを作るファイル)を参照するには、まず一つ上の階層に移動してからd2に入る必要があります。
「1階層上」は .. で表すので、順に書くと ../d2/f2.html になります。よって選択肢のうち ウ(../d2/f2.html)が正しい指定です。これは相対パス(relative path:現在位置から見たファイルへの経路)による指定です。
「1階層上」は .. で表すので、順に書くと ../d2/f2.html になります。よって選択肢のうち ウ(../d2/f2.html)が正しい指定です。これは相対パス(relative path:現在位置から見たファイルへの経路)による指定です。
解法ステップ
- 問題の図から現在地(カレントディレクトリ)が d1 とわかる。
- 目的地 f2.html は d2 の中にある。d1 と d2 は同じ親(ルートディレクトリ)にぶら下がっている=「兄弟」関係。
- 同じ階層の別ディレクトリへ行くには、まず親に戻る(1階層上 = ..)してから目的のディレクトリに入る。
- よってパスは ".." + "/" + "d2" + "/" + "f2.html" → ../d2/f2.html となる。
(補足用語)ルートディレクトリ(root directory:階層の一番上)という語は図の「ルート」です。今回のパスは先頭に "/" がないので、相対パスです。先頭に "/" があるとルートからの絶対パス(absolute path:階層の一番上からの経路)になります。
選択肢別の誤答解説
-
ア: ./d2/f2.html
「.」(ドット)はカレントディレクトリ自身を表します。./d2/f2.html は「d1 の下にある d2 の中の f2.html」を意味します。図では d1 の中に d2 はないため誤りです。 -
イ: ./f2.html
これは「カレントディレクトリ d1 の中にある f2.html」を指します。f2.html は d2 の中にあるので誤りです。 -
ウ: ../d2/f2.html
正しい。d1 から一つ上へ(..)移動して、そこから d2 に入り f2.html を指定します。現在位置から見た相対的な書き方で、図の構造に合致します。 -
エ: d2/../f2.html
これは一見「d2 に入ってから親に戻る」ように見えますが、相対パスとして解釈すると d1/d2/../f2.html となり、"d2/.." が打ち消されて d1/f2.html と同じ意味になります。つまり「d1 の中の f2.html」を指し、実際の f2.html の場所(d2)とは合いません。
よくある誤解
-
「. と .. の役割を逆に覚える」
- . は自分(そのディレクトリ)を指し、.. は一つ上の親を指します。混同すると間違った階層に移動します。
-
「d2/../f2.html で兄弟ディレクトリに行ける」と思う誤り
- その書き方は「d1 の中の f2.html」を指します。まず d2 に入ってから親に戻るため、結果的に元の場所と同じ階層に戻ります。
-
「先頭に / を付けないとルートから始まらない」との混同
- 先頭に / があれば絶対パス(ルートからの指定)です。今回の選択肢は先頭に / がないので全て相対パスとして扱います。
補足コラム
-
相対パスと絶対パスの違い(覚え方)
- 相対パス(relative path):「今どこにいるか」からの経路。短く書ける。プロジェクト内のリンクでよく使う。
- 絶対パス(absolute path):ルート(最上位)からの完全な経路。どこから見ても同じ場所を指す。先頭に "/" を付けることが多い。
-
HTMLでのリンク例
d1 にある f1.html から d2 の f2.html にリンクするHTMLの例:<a href="../d2/f2.html">f2へ移動</a> -
親をさらに遡る場合は ../.. と続けます(例: ../../dir/file.html)。
FAQ
Q1. 先頭に "/" を付けるとどうなる?
A1. 先頭の "/" はルートディレクトリ(最上位)からの経路を意味します。例えば /d2/f2.html はルート直下の d2/f2.html を指します(今回の相対位置とは表現方法が異なります)。
A1. 先頭の "/" はルートディレクトリ(最上位)からの経路を意味します。例えば /d2/f2.html はルート直下の d2/f2.html を指します(今回の相対位置とは表現方法が異なります)。
Q2. URLでも同じ書き方でいいですか?
A2. はい。Webサーバ上でのファイルパスやリンク(href)の指定はスラッシュ(/)で区切る点で同じです。Windowsのファイルパスで使うバックスラッシュ(\)とは異なります。
A2. はい。Webサーバ上でのファイルパスやリンク(href)の指定はスラッシュ(/)で区切る点で同じです。Windowsのファイルパスで使うバックスラッシュ(\)とは異なります。
Q3. d1 と d2 が同じ階層でなければどう書く?
A3. 例えば d2 が d1 の下にあるなら d2/f2.html、d2 が d1 の上のさらに上にあるなら ../../d2/f2.html のように「..」の個数で上がる階層を調整します。
A3. 例えば d2 が d1 の下にあるなら d2/f2.html、d2 が d1 の上のさらに上にあるなら ../../d2/f2.html のように「..」の個数で上がる階層を調整します。
関連キーワード: 相対パス、絶対パス、カレントディレクトリ、ルートディレクトリ、パス指定、HTMLリンク

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

