平成24年度 秋期 ITパスポート試験 問63 解説 ディレクトリの相対パス指定
図に示す階層構造で,複数個の同名のディレクトリ A,B が配置されており,ユーザ ID ごとにログインしたときのカレントディレクトリが異なる。U0002がログインした直後に,矢印が示すディレクトリ B に存在するファイル f を指定するものはどれか。ここで,ファイルの指定方法とユーザ ID 別のカレントディレクトリは次のとおりである。 〔ファイルの指定方法〕 (1) “ディレクトリ名¥ … ¥ディレクトリ名¥ファイル名”のように,経路上のディレクトリを順に“¥”で区切って並べた後に“¥”とファイル名を指定する。 (2) カレントディレクトリは“.”で表す。 (3) 1階層上のディレクトリは“..”で表す。 (4) 始まりが“¥”のときは,左端のルートディレクトリが省略されているものとする。 〔ユーザ ID 別カレントディレクトリ〕
- ア .¥B¥f
- イ ..¥B¥f
- ウ ..¥..¥B¥f
- エ ..¥..¥..¥B¥f ✓ 正答
解説
この問題は、現在の場所から目的の場所まで、階層を遡ってから降りる「相対パス」の書き方を問うものです。 正解へたどり着くための手順は、以下の3ステップです。
- 現在地(U0002のディレクトリ)から出発し、共通の親である「ルート」まで遡る(「..」を3回使用)。
- ルートに到達したら、そこから目的の「B」ディレクトリへ下る。
- 最後にファイル名「f」を指定する。
これらを繋げると「......\B\f」となり、正解は「エ」となります。
相対パスを理解するための基本ルール
コンピュータのファイルシステムは、木構造(ツリー構造)で管理されています。その中で位置を指定する方法として「絶対パス」と「相対パス」があります。
- 絶対パス:ルートディレクトリ(最上位)を基準とした、ファイルまでの経路。
- 相対パス:現在のディレクトリ(カレントディレクトリ)を基準とした、ファイルまでの経路。
問題文にある「..」は、一つ上の階層(親ディレクトリ)へ移動することを指します。例えば、現在地が「ルート\A\B\A」であれば、一つ上の「..」で「ルート\A\B」へ戻り、さらにもう一つ上の「..」で「ルート\A」へ戻る、という操作を繰り返すことで、階層構造の中を移動できます。
階層を遡る思考プロセス
今回の問題のように複雑な構造の場合、まずは現在地からルートまでいくつの階層を遡る必要があるかを確認します。
U0002のカレントディレクトリは「ルート\A\B\A」です。ここから親を辿ると以下のようになります。
- 最初の「..」:AからBへ(場所:ルート\A\B)
- 次の「..」:BからAへ(場所:ルート\A)
- 最後の「..」:Aからルートへ(場所:ルート)
これでようやく全体が見渡せる地点(ルート)に到達しました。あとはルートから見た目的地の場所を記述するだけです。矢印が指しているのはルート直下の「B」ですので、そこへ向かうために「\B」、そしてその中の「f」へ向かうために「\f」を繋げます。これらを合わせると「......\B\f」となります。
この知識が役立つ場面
OSのコマンドプロンプトやターミナルで作業をする際、カレントディレクトリを移動する cd コマンドや、ファイルをコピーする cp コマンドなどを使用する際、必ずこのパス指定の知識が必要になります。
特にプログラミングの現場やサーバー管理においては、プログラムから設定ファイルを読み込む際に「プログラムの実行場所から見てどこにあるか」を指定しなければなりません。絶対パスで指定してしまうと、場所を移動させたときにプログラムが動かなくなってしまうため、相対パスを使って柔軟に場所を指定する能力は、実務における基本的なスキルといえます。
この問題は、単なる知識の暗記ではなく、ディレクトリ構造という「空間」を頭の中でイメージし、論理的に経路を組み立てるという、情報処理の基礎的な思考を養うために設定されています。