ファイルシステムに関する次の記述中の a~c に入れる字句の適切な組合せはどれか。 PC でファイルやディレクトリを階層的に管理するとき,最上位の階層に当たるディレクトリを [ a ] ディレクトリ,現時点で利用者が操作を行っているディレクトリを [ b ] ディレクトリという。[ b ] ディレクトリを基点としてファイルやディレクトリの所在場所を示す表記を [ c ] パスという。
平成23年度 特別試験 ITパスポート試験 問83
この問題の解説と、これまでの解答の記録です。
問 83
不正解ア
a:カレント、b:ルート、c:絶対 の組合せで、a と b が入れ替わっている点がまず誤り。カレントディレクトリは利用者が現時点で操作している現在位置のディレクトリであって、階層の最上位という意味は持たないので a には入らない。逆にルートディレクトリは階層の最上位に固定されており、利用者の操作位置に応じて変化するものではないので b にも入らない。さらに c も誤りで、絶対パスはルートディレクトリを基点とする表記であるのに対し、設問文は基点を b のディレクトリ (正しくはカレントディレクトリ) と明記しているため、ここに絶対は当てはまらない。三つとも誤っている。
不正解イ
a:カレント、b:ルート、c:相対 の組合せ。c の相対は語としては正しいが、a と b がアと同じく入れ替わっているため不適切である。この組合せのまま設問文に当てはめると、最上位の階層に当たるディレクトリをカレントディレクトリと呼び、現時点で利用者が操作しているディレクトリをルートディレクトリと呼ぶことになってしまい、二つの用語の定義が完全に逆転する。加えて、b がルートのままだと「[ b ] ディレクトリを基点とする表記」はルートを基点とする表記、すなわち絶対パスの説明になり、c の相対とも整合しなくなる。
不正解ウ
a:ルート、b:カレント、c:絶対 の組合せ。a と b は正しいが、c だけが誤っている。この選択肢は絶対パスと相対パスの区別を問う、最も紛らわしい引っ掛けである。絶対パスはルートディレクトリを起点として最上位から目的のファイルまでの道筋をすべて記述する表記であり、どのディレクトリで作業していても同じ表記で同じ対象を指せる。一方、設問文が説明しているのは [ b ] ディレクトリ、すなわちカレントディレクトリを基点とする表記であり、これは相対パスの定義である。基点がルートではなくカレントである以上、c に絶対は入らない。
- エ
正解 正解はエ (a:ルート、b:カレント、c:相対)。三つの空欄は、設問文の中の定義そのものから順に確定できる。まず a は「最上位の階層に当たるディレクトリ」と説明されている。ファイルシステムはディレクトリを入れ子にした木構造 (階層構造) で管理され、その木の根に当たる、それ以上たどれない最上位のディレクトリをルートディレクトリと呼ぶ。Windows なら C:\ 、UNIX 系なら / がこれに当たる。したがって a はルートである。次に b は「現時点で利用者が操作を行っているディレクトリ」と説明されている。利用者が今どの位置で作業しているかを示すディレクトリをカレントディレクトリ (作業ディレクトリ) と呼び、cd のようなコマンドで移動すると変わる、いわば現在地である。したがって b はカレントである。最後に c は「[ b ] ディレクトリを基点としてファイルやディレクトリの所在場所を示す表記」と説明されている。ここで基点が b すなわちカレントディレクトリであることが決め手になる。パスの表記法には二種類あり、ルートディレクトリを基点として最上位からすべての道筋を書くものを絶対パス、カレントディレクトリを基点として、そこからの差分だけを書くものを相対パスという。相対パスでは、自分自身のディレクトリを表す . (ピリオド一つ) や一つ上の親ディレクトリを表す .. (ピリオド二つ) を使って、例えば ..\data\a.txt のように書く。基点がカレントである以上、c は相対パス以外にはなり得ない。以上を組み合わせると a:ルート、b:カレント、c:相対 となり、図の組合せ表でこれに一致する行はエだけである。
- ルートディレクトリとカレントディレクトリ — ファイルシステムはディレクトリを入れ子にした階層 (木) 構造で管理される。その最上位 (根) に当たる固定のディレクトリがルートディレクトリ (Windows の C:\ 、UNIX 系の / )、利用者が現時点で作業している現在位置のディレクトリがカレントディレクトリ (作業ディレクトリ) で、cd などの操作で移動すると変わる。
- 絶対パスと相対パス — 所在場所の表記は基点で区別する。ルートディレクトリを基点として最上位からの道筋を全部書くのが絶対パス、カレントディレクトリを基点としてそこからの差分だけを書くのが相対パス。相対パスでは . が自分自身のディレクトリ、.. が一つ上の親ディレクトリを表す。