熊本大学大学院教授システム学専攻
目次:
【第8回】URIとサーバ:SCP,FTP
第1章
第3章
第4章
現在の場所: ホームページ > [2]HTMLとCSS > 【第8回】URIとサーバ:SCP,FTP > 第4章 > WWWサーバ上の実世界と仮想世界

WWWサーバ上の実世界と仮想世界

【本節の目的】
WWWサーバ上でのフォルダやファイルの構成を、 その世界を模した仮想世界を用いて理解します。

(註)今回のテキストは「情報基礎A・B」の環境(サーバ名:www.stud.kumamoto-u.ac.jp、アップロードするためのソフトウェア:FFFTP)で説明しています。「基盤的情報処理論」の環境とは異なりますが、説明する内容に変わりはありませんので、サーバ名やソフトウェア名は自分の環境に合わせて適宜読み替えてください。

フォルダと仮想世界との対応

これからしばらくの間、WWWサーバ上のフォルダの性質を、 仮想世界との対応で考えてみます。 話題の設定に少し無理があると思うかも知れませんが、 我慢してこの世界に入って下さい。

皆さんは、今PCを操作していますが、 皆さん自身がPCの中に入ってしまったと想像して下さい。 そして、皆さんは、PC中のフォルダを移動しながら、 各種ファイルを作成/修正していると考えて下さい。

PC中で作業している皆さんが、 作成したファイルをWWWサーバにアップロードしたくなりました。 そこで、自分の分身である熊太郎ロボット(以下では「熊太郎」)をWWWサーバへ送り出し、 アップロードの手伝いをさせることにしました。

熊太郎

FTPクライアントソフト(FFFTP)を起動し、 WWWサーバに接続して熊太郎をサーバに送り込みました。 これで、サーバ内の様子は、熊太郎の目を通して見ることができますし、 熊太郎に指示することで、サーバ内を移動したり、 サーバ内にフォルダを作ったりすることができます。 ただし、様子を観察したり、各種作業ができるのは、 現在熊太郎のいる場所(フォルダ)だけに限られます。 また、PC内のファイルを指定して、 「転送(アップロード)」指示を出すと、 物質瞬間転送機能により熊太郎のいる場所にファイルを届けることができます。 ただし、転送できるのは、現在、熊太郎のいる場所に限られます。

熊太郎が着いたサーバ上のフォルダ(部屋)は、 窓やドアも無い殺風景なところでした。天井や床にも何もありません。

初期ホームディレクトリ
(註) この「FTP接続して初めに入るフォルダ」を、 WWWサーバの「ホームディレクトリ」と呼ぶのでしたよね。

ところで、この様子を実世界で思い出してみると、FFFTPで、 はじめてWWWサーバに接続したときは、以下のようになりましたよね。

初期ホームディレクトリ

サーバ側(右側)の様子を見てみると、ペインは空っぽで、 フォルダ バーは「/」と表示されています。

確認のため、現在熊太郎がいる部屋(フォルダ)の図と隣合わせで表示してみます。 ただし、FFFTPの図は、サーバの方だけ表示しています。

初期ホームディレクトリ 初期ホームディレクトリ

次に、Webページを公開するために専用のフォルダ (public_html) を 熊太郎に作らせます。
ここで、public_htmlという特別のフォルダ(部屋)だけでなく、 一般的にフォルダ(部屋)は、 あるフォルダの下(その部屋の床下)にしか作ることができない ことに注意して下さい。 壁の向こうや天井の上にフォルダ(部屋)を作ることはできないのです。

そこで、public_htmlというフォルダ(部屋)を、 このフォルダの下(床下)に作ってみましょう。

初期ホームディレクトリ 初期ホームディレクトリ

ここで、熊太郎には、public_html フォルダ (public_htmlという名前の部屋)は、 その存在 (図では「星の印」)とそのフォルダ名(部屋の名前)は分かるのですが、 そのフォルダ(部屋)の中を直接見ることはできないことに注意して下さい。 (外の世界から上の熊太郎のいる世界を見ている我々には、 public_htmlフォルダ(部屋)の中まで、 見えていますが、トップフォルダにいる熊太郎の目から、 フォルダの下(床下)にあるpublic_htmlの中を見ることはできません。) FFFTPのサーバペインも同様に、public_htmlというフォルダは見えていますが、 その中味を見るためには、public_html アイコンをダブルクリックして、 そのフォルダに移動する必要がありますよね。

そこで、public_htmlというフォルダ(部屋)に移動してみましょう。 すると、下図のようになります。

初期ホームディレクトリ 初期ホームディレクトリ

public_html フォルダ(部屋)に移動した熊太郎には、 何が見えているでしょうか? フォルダ(部屋)は作ったばかりですので、 このフォルダ(部屋)の中には何もファイル(物)はありませんね。 ただ、天井に、上の階へ上がることができる入口(上図では「赤い星」)だけが見えています。
FFFTPのサーバのフォルダ バーは、「/public_html」に変わっていますが、 このフォルダには何もありませんので、サーバペインは空(から)の状態です。 また、上部(階層)のフォルダヘの入口は、ペイン内には見えてませんが、 cd ../. アイコンで上部(階層)のフォルダヘ移動可能です。

ここにおいても、 PCにあるファイルを「物質瞬間転送機能 (FTP機能)」 により熊太郎のいるこのフォルダ(部屋)へ送ることができますし、 このフォルダの下(その部屋の床下)に新しいフォルダ(部屋)を作ることができます。 もちろん、 壁の向うや天井の上にフォルダ(部屋)を作ることはできません。

それでは、試しにこのフォルダに、 PCよりex1.htmlというファイル(物質)を転送してみましょう。 更に、このフォルダの下に(その部屋の床下)に、 w05というフォルダを作ってみます。 これらの操作をした結果は、下図のようになります。

初期ホームディレクトリ 初期ホームディレクトリ

この場合、熊太郎からは、このフォルダに関して以下のことが認識できます。

  1. ex1.htmlという名前のついたファイル(物質)が存在する
  2. このフォルダの下にフォルダ(部屋)が存在し、そのフォルダの名前がw05である
  3. このフォルダの上にフォルダがある (ただし、フォルダ名は分らない)

実は、このとき熊太郎にとって、上記以外のこと、 例えばw05フォルダ中にファイルが(物質)があるのかどうとか、 上位のフォルダ(部屋)にファイルや public_html以外のファイルがあるのかどうかなどは分りません。

つまり一般的に言いますと、 あるフォルダ中に入って認識できるのは以下のことだけです。

  1. そのフォルダ(部屋)に置かれている複数のファイル(物質)の存在、 ならびにそれぞれのファイル名
  2. そのフォルダの下(床下)にフォルダ(部屋)の存在、 ならびにそれぞれのフォルダ名
  3. フォルダ名(部屋の名前)は分らないが、このフォルダの上にフォルダがある
    (「トップのフォルダ」以外、対象フォルダの上位には、フォルダが必ず存在します)

ファイル名だけでは、対象を特定できない

前節の説明のようにして、 WWWサーバにフォルダを作成したりファイルを転送したりしていき、 下図のようになったとします。 (フォルダ w04や、いくつかのファイルが増えています。)

初期ホームディレクトリ

この状況で、 「ex1.html を別のフォルダ(部屋)に移動せよ」とか、 「ex1.html を消せ (食べてしまえ?)」などの司令を熊太郎に出したとします。

すると熊太郎は、「くまって」ではなかった、「困って」しまいます。

なぜなら、それは次の理由からです。
熊太郎には、現時点で (ケーキの)ex1.html が見えていますので、 それを移動したり消したりすることは可能です。ところが、 熊太郎はこれまでフォルダを作ったりファイルを転送したりしたため (作業履歴を記憶しているため)、 別のフォルダ(部屋)にも同じ名前の ex1.html が存在することを知っています。 それで、「ex1.html を ... せよ」と司令を出されても、 「どの ex1.html を?」と困ってしまうわけです。

これは、我々の住んでいる世界でも同じですよね。 例えば、風呂に入っているお父さんが、 リビングでテレビを見ている息子に大声で、 「エアコンのスイッチを入れておいてくれ!」で頼んだとします。 すると息子は、 「俺の今いるリビングのエアコン?それとも、書斎の?」と聞きたくなりますよね。

つまり、単に「物質の名前」を指定しても特定できないことは沢山あるわけです。 PCやサーバ上のファイル名やフォルダ名はその典型的な例だということになります。 それは、1台のPCやサーバの中に、 同じ名前のファイルやフォルダが複数存在するのはあたりまえのことだからです。

そこで、「一意にそれ」と指定できるようにするためには、 必ず「どこそこにある何々」と指定するようにしなければなりません。 例えば、「書斎にあるエアコン」とか 「w05フォルダにある ex1.html」などと指定しなければならないわけです。

ところが、実はこれでも不十分です。下の図を見て下さい。 下の図で、 「testフォルダにある t0.html」と言ってどれを指示しているか分りますか?

2つのtest/t0.html

上図では、「testフォルダ」が2つ存在しますので、 「testフォルダにある...」と言っても、 「どちらのテストフォルダ?」ということになってしまい、 肝心の「t0.html」が「だんごのt0.html」なのか 「ソフトクリームのt0.html」なのか特定できないわけです。

それでは、どうれすれば一意に特定できるでしょうか? その答えは、次章で述べることにします。

Copyright (C) Kenichi Sugitani 2005, All Rights Reserved