目次:
【第8回】URIとサーバ:SCP,FTP 第1章
第3章
--HTMLチェッカ
第4章
|
WWWサーバ上のファイルの特定
【本節の目的】
WWWサーバ上でのフォルダやファイルを一意に特定する方法として、 絶対参照と相対参照について習得します。 (註)今回のテキストは「情報基礎A・B」の環境(サーバ名:www.stud.kumamoto-u.ac.jp、アップロードするためのソフトウェア:FFFTP)で説明しています。「基盤的情報処理論」の環境とは異なりますが、説明する内容に変わりはありません。サーバ名やソフトウェア名は自分の環境に合わせて適宜読み替えてください。 絶対参照と相対参照によるファイルの特定フォルダ名を指定しても目的のファイル(物)が特定できないという、 前章での問題を解決する方法として2つの方法があります。 それは「ファイル名」あるいは「フォルダ名」を、
で記述する方法です。 絶対参照「絶対参照」とは、 「必ず存在し、かつ、ただ一つしかない トップフォルダ 」 (「ルート ディレクトリ」という呼び名が一般的です)を起点として、 対象とするファイル (もしくはフォルダ)を含むフォルダの名前を、 ルートディレクトリから順につないで表現する方法です。 起点が一つしかありませんから、確実に対象を特定することができます。 この方法は、人の名前を呼ぶときに、単に「総情先太」さんと言うのではなく、 「日本国熊本県熊本市黒髪2-39-3に住んでいる総情先太」さんと言うようなことです。 つまり、単に氏名を呼んだだけでは、 熊本市黒髪2-39-3に住んでいる総情先太さんなのか、 大阪に住んでいる総情先太さんなのか区別できませんが、 上記のように指定すれば唯ひとりを特定できますよね。 それでは、具体例を見てみましょう。もう一度、先に示した図を示します。 ![]() 上図中の「だんごのt0.html」と「ソフトクリームのt0.html」を、 絶対参照で表わしてみると、次のようになります。
これで、「testフォルダにある t0.htm」では区別できなかった、 「だんごのt0.html」と「ソフトクリームのt0.html」 がちゃんと区別されているのがわかりますね。 たとえば、上の「だんごのt0.html」の絶対参照表記は、 「ルートディレクトリの下 (中) にあるpublic_htmlフォルダの、 さらにその下 (中) にあるw04というフォルダの下 (中) にある、 testt0.html」を表わしていることになります。 相対参照で記述した表記と上記の日本語を、 改めて表で対応させると以下のようになります。
ここで重要なのは、 まず、フォルダの階層の一番上にあるルートディレクトリの名前が「/」 であるということです。 これは、熊太郎が初めにこの世界に入ったフォルダ(部屋)と、 それに対応するFFFTPのサーバ側の図を再び表示してみるとわかりますが、 下図のFFFTPのフォルダ バーに 「/」が表示されています。 これが、トップのフォルダ (ルートディレクトリ)の名前を表わしているわけです。 ![]() ![]()
そのため、 ルートディレクトリからのフォルダの関係をすべて表わす絶対参照の先頭には、 必ず「/」がつくということになるのです。 言いかえると、 「先頭に / のついている(フォルダ名を含んだ)ファイル名は、 絶対参照で表記されたものである」 と言うことになります。
次に大切なのは、先頭の「/」(ルートディレクトリ)以外の「/」は、
それぞれのフォルダどうしの区切りを表わしている記号であるということです。
また、意味的には、「/」の直前についているフォルダ名と一緒になって
「(あれこれフォルダ) の」とか「(あれこれフォルダ)の下の」
とかいう接尾語的な働きをしているということもできます。 相対参照それでは、もう一つのファイルの特定方法である「相対参照」とは どういうものでしょう? 「相対参照」とは、 任意のフォルダを起点として、 対象とするファイル (もしくはフォルダ)を含むフォルダの名前を 順につないで表現する方法です。 先に説明した「絶対参照」では、 熊太郎のいる世界全体を横から見てファイル名を特定していましたが、 「相対参照」では、熊太郎の目から見える様子だけで、 ファイルを特定することになります。 例えば、熊太郎が下図のように、 /public_html フォルダにいる状況を考えてみましょう。 ![]() この場合、熊太郎には以下のように見えているはずです。 ![]() つまり、熊太郎に見えているのは次のものです。
このとき、
「現在注目しているフォルダ (熊太郎のいる部屋)」を、
「. (ドット)」と書くことにし、
「現在注目しているフォルダの上 (熊太郎のいる部屋の天井の上)
にあるフォルダ(部屋)の入口(赤の星)」を「.. (ドット ドット)」
と書くことにします。 これらの記述規則を利用すると、熊太郎に見えているのは、 次のように簡単に書くことことができます。
このとき、注目しているフォルダ (熊太郎のいる部屋) が、 現在「/public_html」ですので、この情報と「./ex1.html」を合わせると、 ケーキである ex1.html を一意に特定することができますね。 このように、現在注目しているフォルダと、 そこからの相対位置でファイルを特定するのが「相対参照」なのです。 ですから、「現在注目しているフォルダにある...」を表わす 「./」が重要な役目をするわけです。 プリンの ex1.html や オムライスの ex1.html も同様にして、 以下のように特定することができますね。
プリンである ex1.htmlの相対参照記述中の要素と、 それらの意味を表にしてみると以下のようになります。
上の表の「相対参照表記中の要素」の列を上から順につないだものが「相対参照での表記」ですし、 「意味」の列を上から順に読んだものが「相対参照での表記の意味」になります。 今度は、熊太郎が下図のように、 /public_html/w05 フォルダにいる場合を考えてみましょう。 フォルダやファイルは、先の図と全く同じです。 ただし、各フォルダ(部屋)にあって その上位のフォルダ(天井上の部屋)の入口を表わす赤い星には「..」という名前がついていることが分りましたので、 それも表記してあります。 ![]() 今回は、熊太郎には以下のように見えているはずです。 ![]()
この状況で、3つのex1.htmlを相対参照で記述すると、 以下のようになります。
例えば、プリンの ex1.htmlへの相対参照は、次のように考えてみました。 前の例のように対応関係を表にしますので確認して下さい。
オムライスの ex1.htmlと、プリンの ex1.htmlは、 隣どうしのフォルダ(部屋)であるのにもかかわらず、相対参照では、 一旦、 上の階層 (天井の上にある部屋)を経由してしか参照できないことに注意して下さい。 ファイルの特定に関するまとめこれまでの学習で、 「ex1.htmlファイル」とか「testフォルダ」などというのは、 「どこにあるかは分らない」、あるいは、 「どこにあるかは関係ない (気にしない)」 抽象的な呼び方であることが分ったと思います。 もちろんこれは、一般的なファイルやフォルダを表わすときには重要な表記方法です。 更に、抽象的な呼び方ではなく、一意に特定する呼び方には、 絶対参照と相対参照の2通りがあることも分ったと思います。 そこで、ここでは、これらの表記の相異点 (見分け方?)を表にしておきます。
(註) 実は困ったことに、相対参照で利用する「./」は、
多くの場合 省略しても良いということになっています。
ただ、「./」を省略すると、抽象的なファイル名なのか、
相対参照のファイル名なのか自他ともに不明瞭になります。
そのため、皆さんは相対参照をしているときには、省略しないように心掛けて下さい。
少なくとも、基盤的情報処理論では、相対参照で「./」を省略するのはやめて下さい。
(省略したら、確認テストでは間違いになりますし、課題では減点します。)
今回は、一つのサーバの世界でのファイルの特定について学習しましたが、 多数のサーバが存在する実際の世界での、ファイルの特定ついての話は、 次回にしたいと思います。 ファイルの特定に関するサンプルファイルの特定に関するサンプルを掲載しますので、 自分で確認して下さい。 ![]() 上図で、「だんごのt0.html」を、絶対参照と、熊太郎から見た相対参照で記述すると以下のようになります。
|