目次 | 索引 |
---|---|
ディレクトリを用いますとファイルの分類ができますが、ディレクトリには、ファイルだけでなくディレクトリも登録できます。 (ファイルとディレクトリを混在させることもできますし、ファイルもディレクトリもない空の状態にもできます。) ディレクトリに(他の)ディレクトリが登録できる機能を、 階層的ディレクトリ ( hierarchical directory )とよびます。 階層的ディレクトリによって、ファイルだけでなく、ディレクトリも分類できます。 つまり、ファイルを分類してディレクトリに登録し、それらのディレクトリを分類してより上位のディレクトリに登録し、さらにそれらのディレクトリを分類してさらに上位のディレクトリに登録し、…ということができるのです。
階層的ディレクトリでは、 ルートディレクトリ ( root directory )とよばれる特別なディレクトリが用意されます。 すべてのファイルはルートディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているか、ルートディレクトリに登録されているディレクトリに登録されているディレクトリに登録されているか、…のいずれかです。
階層的ディレクトリは、木の構造としてとらえると分かりやすくなります。 以下は、木の構造として描かれた階層的ディレクトリの例です。 木の根(図の一番上)がルートディレクトリに対応します。 ルートディレクトリにディレクトリ Users や tmp が登録され、…、ディレクトリ comp2e にファイル ex8.html と ex8.html~ が登録されていることを表しています。
| +-----+-----+---.. | | Users tmp | : +-----+-----+---.. | | b04a001 b04a002 | : +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ comp2e photo.jpg | +-----+-----+ | | ex8.html ex8.html~
パス名 ( pathname )とは、階層的ディレクトリにあるファイルやディレクトリを参照する名前です。 パス名には絶対パス名と相対パス名があります。 ファイルの 絶対パス名 ( absolute pathname )とは、記号 / から始まり、階層的ディレクトリを表す木の根から順にたどり、そのファイルに至るまでのディレクトリ名とファイル名を、記号 / で区切って書き並べたものです。 ディレクトリの絶対パス名も同様に、記号 / から始まり、木の根からそのディレクトリに至るまでのディレクトリ名を、記号 / で区切って書き並べたものです。 なお、ルートディレクトリは単に / です。
例えば、図の最も下のファイル ex8.html の絶対パス名は
/Users/b04a001/WWW-local/comp2e/ex8.html
です。 また、下から2段目のファイル index.html の絶対パス名は
/Users/b04a001/WWW-local/index.html
です。 ディレクトリ comp2e の絶対パス名は
/Users/b04a001/WWW-local/comp2e
です。
絶対パス名を用いますと、階層的ディレクトリにあるファイルやディレクトリが確実に参照できます。 しかし、いちいち木の根からディレクトリ名を書き並べるのは大変です。 ファイルの 相対パス名 ( relative pathname )とは、木の根からではなく、カレントディレクトリから順にたどり、そのファイルに至るまでのディレクトリ名とファイル名を、記号 / で区切って書き並べたものです。 ここで カレントディレクトリ ( current directory )とは、その時の操作の基準となるディレクトリです。 ディレクトリの相対パス名も同様に、カレントディレクトリから順にたどり、そのディレクトリに至るまでのディレクトリ名を、記号 / で区切って書き並べたものです。 先頭に記号 / がつかないことに注意してください。
: | b04a001 | +-----+-----+-----------+-----------+ | | | | Mail Maildir WABI WWW-local : : : | +-----------+-----------+-----+-----+ | | | | index.html index.html~ comp2e photo.jpg | +-----+-----+ | | ex8.html ex8.html~
例えば、カレントディレクトリが WWW-local であるとき、ファイル ex8.html の相対パス名は comp2e/ex8.html です。 カレントディレクトリが comp2e のときは、単に ex8.html となります。 カレントディレクトリが b04a001 であるとき、ディレクトリ comp2e の相対パス名は WWW-local/comp2e です。 カレントディレクトリが WWW-local のときは、単に comp2e となります。
相対パス名が、カレントディレクトリの下にあるファイルやディレクトリしか参照できないように思えますが、特別なディレクトリ名 .. を使えば、カレントディレクトリの上にあるものも参照できます。 ディレクトリ名 .. は、一つ上のディレクトリを意味します。 例えば、カレントディレクトリが comp2e であるとき、ファイル photo.jpg の相対パス名は ../photo.jpg ですし、ディレクトリ b04a001 の相対パス名は ../.. です。
.. の他にも特別なディレクトリ名があります。 以下の表を見てください。 ここで、 ホームディレクトリ ( home directory )とは、ユーザ(システムの利用者)の個人的な利用のために割り当てられているディレクトリです。 情報処理センターでは、例えば学生番号b04a001のユーザに対しては、ディレクトリ
/Users/b04a001
を割り当てています。 ユーザがログインしますと、ホームディレクトリが最初のカレントディレクトリになります。
名前 | 意味 |
---|---|
. | カレントディレクトリ |
.. | 一つ上のディレクトリ |
~ | 自分のホームディレクトリ |
~user | ユーザuserのホームディレクトリ |
URL (Uniform Resource Locator)とは、主にインターネットで利用できる情報サービスの、アクセス方式や設置箇所を表す文字列です。 例えば、検索エンジン「ヤフー・ジャパン」を利用するときは、Safariの「場所:」入力欄に
http://www.yahoo.co.jp/
と入力して、ヤフーのホームページを表示します。 この文字列がURLの一例です。
URLは、Safariの「場所:」入力欄に入力する他に、HTMLドキュメントに書いて、リンク先を指定したり、イメージファイルの所在を示したりするのに使われます。 具体的には、次の部分です。 これまでファイル名を書いていたところです。
<img src="
URL
">
<a href="
URL
">
〜
</a>
<body background="
URL
">
〜
</body>
background-image: url(
URL
)
<frame src="
URL
">
<link href="
URL
">
もしかしたら、URIという用語を聞いたことがあるかもしれません。 URI (Uniform Resource Identifier)は、URLの拡張概念です。 この授業では、両者の差を意識する必要はありませんので、URLをURIと読み替えてもかまいません。
URLには、 絶対URL ( absolute URL )と 相対URL ( relative URL )があります。 絶対URLは、情報サービスのアクセス方式や設置箇所を完全に指定します。 一方、相対URLは、それらを部分的に指定します。 相対URLが書かれたところには、基準となる絶対URLがあり、基準のURLと相対URLの両者から完全な指定がなされます。
絶対URLの書式は次の通りです。
scheme : scheme-specific-part
ここで、 scheme はアクセス方式を表す文字列です。 アクセス方式のうち重要なものは次の通りです。
scheme-specific-part はアクセス方式によって様々です。
file方式の場合は、file:(正式にはfile://)に続けてファイルの絶対パス名を書いて、ローカルファイルを指定します。 例えば、パス名が
/Users/b04a001/schedule.html
であるファイルを作成した場合、Safariの「場所:」入力欄に
file:/Users/b04a001/schedule.html
と入力しますと、そのファイルの内容が表示されます。 準備中のホームページや公開しないホームページは、この方法で開くとよいでしょう。
mailto方式の場合は、mailto:に続けてメールアドレスを書きます。 例えば、メールアドレスがb04a001@twcu.ac.jpである場合、HTMLドキュメントに
... <a href="mailto:b04a001@twcu.ac.jp"> メールはこちらまで</a> ...
と書きますと、ブラウザは「メールはこちらまで」の部分を始点アンカーとして表示します。 そして、もしそのブラウザにメール送信機能があれば、その部分をクリックしますとメール送信用のウィンドウが開きます。
http方式の場合、URLの書式は次のようになります。 (もう少し複雑な形もあります。)
http:// host path
ここで、 host はWWWサーバのコンピュータの名前、 path はファイルの絶対パス名です。 ただし、ファイルの絶対パス名と言っても、WWWサーバのコンピュータにおける絶対パス名とは少し異なります。 例えば、Safariの「場所:」入力欄に
http://www.twcu.ac.jp/cis/index.html
と入力しますと、情報処理センターのホームページが表示されます。 このURLは、コンピュータwww.twcu.ac.jpで稼働しているWWWサーバを指定しています。 しかし、指定しているファイルは、/cis/index.htmlではありません。
WWWサーバは、すべてのファイルを公開するのではなく、あるディレクトリ(ドキュメントルートとよばれます)を定め、その下の部分のみを公開するようにしています。 そして、http方式で絶対パス名が指定されたときには、ドキュメントルートの下になるように絶対パス名が構成されます。 仮に、このWWWサーバのドキュメントルートが/var/lib/httpd/htdocsと設定されているとします。 すると、このURLはファイル
/var/lib/httpd/htdocs/cis/index.html
を指定していることになります。
この授業の演習で、例えば
/Users/b04a001/WWW-local/comp2e/ex1.html
にHTMLファイルを作成したとき、Safariの「場所:」入力欄に
http://www-local.twcu.ac.jp/~b04a001/comp2e/ex1.html
と入力してもホームページが表示できました。 ここでも同様の仕組みが働いています。
WWWサーバは、各々のユーザに対しても、ホームディレクトリの下のすべての部分を公開するのではなく、ユーザごとにドキュメントルートを定め、その下の部分のみを公開するようにしています。 そして、URL
http:// host /~ user / path
が指定されたときには、ドキュメントルートの下になるように絶対パス名が構成されます。 コンピュータwww-local.twcu.ac.jpのWWWサーバでは、WWW-localというディレクトリがそれです。 したがって、URL
http://www-local.twcu.ac.jp/~b00a001/comp2e/ex1.html
は、ファイル
/Users/b04a001/WWW-local/comp2e/ex1.html
を指定していることになるのです。
file方式やhttp方式のURLでは、ファイルの絶対パス名の代わりにディレクトリの絶対パス名が書けます。 このようなURLが指定された場合、ブラウザの反応はWWWサーバの設定に依存しますが、たいていは次のいずれかです。
例えば、Safariの「場所:」入力欄に
http://www.twcu.ac.jp/unofficial/
と入力しますと、東京女子大学の非公式情報のホームページが表示されます。 このURLは、コンピュータwww.twcu.ac.jpのファイル
/var/lib/httpd/htdocs/unofficial/index.html
を指定しているのです。 (ドキュメントルートが/var/lib/httpd/htdocsの場合。)
絶対URLとは、アクセス方式と設置箇所を完全に指定する文字列でした。 相対URLとは、これらを部分的に指定する文字列です。 相対URLは、主にHTMLドキュメントで用いられ、そのHTMLファイルが基準になります。 基準となるHTMLファイルを指定する絶対URLを、 基準URL ( base URL )とよびます。 相対URLが指定するものは、この相対URLと基準URLから決定されます。 この決定手続きを、相対URLの解決といいます。
例として、基準URLが
http://www.fiction.co.jp/people/1999/list.html
であるとしまして、相対URLがどのように解決されるかを説明します。
基準URL http://www.fiction.co.jp/people/1999/list.html 相対URL top.html → http://www.fiction.co.jp/people/1999/top.html
ファイル名は相対URLの一種です。 この場合、基準URLの最後のファイル名を取り除き、相対URLのファイル名を付け加えた文字列に解決されます。 すなわち、
http://www.fiction.co.jp/people/1999/list.html
で指定されたHTMLファイルのドキュメントに、
<a href="top.html">
〜</a>
という始点アンカーがあれば、そこをクリックしますと
http://www.fiction.co.jp/people/1999/top.html
の内容が表示されます。
基準URL http://www.fiction.co.jp/people/1999/list.html 相対URL konishi/intro.html → http://www.fiction.co.jp/people/1999/konishi/intro.html
ファイルの相対パス名も相対URLの一種です。 この場合も、基準URLの最後のファイル名を取り除き、相対URLの相対パス名を付け加えた文字列に解決されます。
基準URL http://www.fiction.co.jp/people/1999/list.html 相対URL ../1998/list.html → http://www.fiction.co.jp/people/1998/list.html
相対URLでは、一つ上のディレクトリを指定することもできます。 ただし、http方式の場合、ドキュメントルートより上は指定できません。
基準URL http://www.fiction.co.jp/people/1999/list.html 相対URL /about/detail.html → http://www.fiction.co.jp/about/detail.html
ファイルの絶対パス名も相対URLの一種です。 この場合は、基準URLの絶対パス名の部分を取り除き、相対URLの絶対パス名を付け加えた文字列に解決されます。
基準URL http://www.fiction.co.jp/people/1999/list.html 相対URL file:/Users/konishi/test.html → file:/Users/konishi/test.html
HTMLドキュメントに絶対URLを書いた場合は、基準URLに関わらず、その絶対URLに解決されます。
<base>
タグを用いますと、HTMLファイルの所在に関わらず、基準URLを明示的に指定できます。
書式は、
<base href="
URL
">
です。
このタグに終了タグはありません。
また、このタグは
<head>
〜
</head>
の中に書きます。
例えば、
<html> <head> <title>Image file collection</title> <base href="http://www.fiction.co.jp/img/list.html"> </head> <body> <h1>イメージファイルコレクション</h1> <img src="pic01.jpeg" alt="pic01"> <img src="pic02.jpeg" alt="pic02"> ... </body> </html>
と書きますと、このHTMLファイルがどこにあったとしましても、イメージファイル
が指定されることになります。
ホームページが大規模になりますと、一つのディレクトリにすべてのファイルを置いたのでは、管理が難しくなります。 階層的ディレクトリを利用して、ファイルを分類、整理するべきです。 しかし、これはそれほど単純な作業ではありません。 きちんとした方針を定めておかないと、ファイルが増えるにつれて、どこに何があるのか分からなくなってしまいます。
有用な方針のひとつに、「表現対象に階層構造があれば、それをディレクトリの構造に反映させる。」があげられます。 この方針に従ったホームページの作成例を、以下に示します。
ここで、「東京都ガイド」というホームページの作成について考えます。 これは、都内の観光地を紹介するもので、紹介する観光地は順次増やしていく予定とします。 最初の観光地を東京女子大学とし、次のようにホームページを作成したとします。
この程度でしたら、階層的ディレクトリを利用しなくても大丈夫です。 しかし、観光地を増やしていくにつれて、ディレクトリ comp2e には、市区町村のHTMLファイル、観光地のHTMLファイル、そして練習用のHTMLファイル(ex1.html など)が混在することになり、だんだんファイルが探しにくくなることが予想されます。
そこで、「都道府県」→「市区町村」→「観光地」という階層構造を利用して、次のようにファイルを整理することにします。
: | comp2e | +-------------+-------------+ | | | ex1.html ex1.html~ tokyo | +-------------+ | | suginami tokyo.html | +-------------+ | | suginami.html twcu | + | twcu.html
Finderを用いてディレクトリを作成するは、メニュー・バーから「ファイル」→「新規フォルダ」とします。 この場合は、次のような作業になります。
HTMLドキュメントを書く場合、リンク
に注意する必要があります。 ディレクトリの構造
: | comp2e | +-------------+-------------+ | | | ex1.html ex1.html~ tokyo | +-------------+ | | suginami tokyo.html | +-------------+ | | suginami.html twcu | + | twcu.html
から相対URLを求めますと、
となりますので、HTMLファイルは次のようになります。
<h1>東京都ガイド</h1> <p> 東京都のお勧めスポットは <a href="suginami/suginami.html">杉並区</a> です。 </p>
<h1>杉並区ガイド</h1> <p> 杉並区は <a href="../tokyo.html">東京都</a> にあります。 杉並区のお勧めスポットは <a href="twcu/twcu.html">東京女子大学</a> です。 </p>
<h1>東京女子大学ガイド</h1> <p> 東京女子大学は <a href="../suginami.html">杉並区</a> にあります。 </p>
これで、ファイルが増えても大丈夫になりました。 例えば、東京女子大学の写真を撮って twcu.jpg というファイルにしたならば、それをディレクトリ twcu の中に置きます。 観光地を増やすには、杉並区内ならばディレクトリ suginami の中に対応するディレクトリを作成します。 杉並区外ならば、いったんその市区町村のディレクトリを作成し、そしてその中に対応するディレクトリを作成します。
階層構造を持つホームページを作成してください。
以下の例を参考にして、スポーツの「リーグ」→「チーム」→「選手」、海外旅行の「国」→「都市」→「観光地」などの階層構造を考え、その構造を反映したディレクトリを作成し、それぞれのディレクトリにHTMLファイルを置いてください。
用意するHTMLファイルは3個です。
また、一つ上の階層と一つ下の階層にリンクを張ってください。
href
属性の値は、絶対URLではなく相対URLとします。
余力のある人は、選手や観光地などを増やしてください。
今日の演習9に従ってホームページを作成し、そのファイル名をkonishi@twcu.ac.jpあてにメールで報告してください。 メールには、学生番号、氏名、科目名、授業の日付け(6/18)を明記してください。