目次 | 索引 |
---|---|
URI(Uniform Resource Identifier)とは、主にインターネットで利用できる情報サービスの、通信方式や設置箇所を表す文字列です。 例えば、検索エンジン「ヤフー・ジャパン」を利用するときは、ブラウザの「場所:」入力欄に
http://www.yahoo.co.jp/
と入力して、ヤフーのホームページを表示します。 この文字列がURIの一例です。
もしかしたら、URL(Uniform Resource Locator)という用語のほうになじみがあるかもしれません。 URIはURLの拡張概念です。 ただし、この授業では、両者の差を意識する必要はありませんので、URIという用語をURLと読み替えてもかまいません。
URIは、ブラウザの「場所:」入力欄に入力する他に、HTMLファイルの中に書いて、リンク先を指定したり、画像ファイルの所在を示したりするのに使われます。 今までの授業では、ファイルのパス名を書いて、リンク先や画像ファイルを指定していました。 実は、今までファイルのパス名を書いていたところには、本当はURIを書くことになっています。 ただし、ファイルのパス名はURIの一種ですので、今まで間違っていたわけではありません。
URIには、絶対URI(absolute URI)と相対URI(relative URI)があります。 絶対URIは、情報サービスの通信方式や設置箇所を完全に指定します。 一方、相対URIは、それらを部分的に指定します。 相対URIが書かれたところには、基準となる絶対URIがあり、基準のURIと相対URIの両者から完全な指定がなされます。
絶対URIの書式は次の通りです。
scheme:scheme-specific-part
ここで、scheme は通信方式を表す文字列です。 通信方式のうち重要なものは次の通りです。
scheme-specific-part は通信方式によって様々です。
file 通信方式の場合は、ここにファイルの絶対パス名を書いて、ローカルホストのファイルを指定します。 例えば、パス名が
/home/b00a/b00a001/schedule.html
であるファイルを作成した場合、ブラウザの「場所:」入力欄に
file:/home/b00a/b00a001/schedule.html
と入力しますと、そのファイルの内容が表示されます。
準備中のホームページや公開しないホームページは、この方法で開くとよいでしょう。
mailto 通信方式の場合は、scheme-specific-part の部分にメールアドレスを書きます。 例えば、メールアドレスが b00a001@twcu.ac.jp である場合、HTMLファイルに
... <a href="mailto:b00a001@twcu.ac.jp"> メールはこちらまで</a> ...
と書きますと、ブラウザは「メールはこちらまで」の部分を始点のアンカーとして表示します。 そして、もしそのブラウザにメール送信機能があれば、その部分をクリックするとメール送信用のウィンドウが開きます。
http 通信方式の場合、URIの書式は次のようになります。 (実際は、もう少し複雑な形もあります。)
http://host path
ここで、host はWWWサーバのホスト名、path はファイルの絶対パス名です。 ただし、ファイルの絶対パス名と言っても、WWWサーバにおける絶対パス名とは少し異なります。
例えば、ブラウザの「場所:」入力欄に
http://www.twcu.ac.jp/dept/phil.html
と入力しますと、東京女子大学の哲学科のホームページが表示されます。 このURIは、ホスト名が www.twcu.ac.jp であるWWWサーバを指定しています。 しかし、指定されているファイルは、/dept/phil.html ではありません。
WWWサーバは、すべてのファイルを公開するのではなく、あるディレクトリを定め、その下のファイルのみを公開するようにしています。 そして、http 通信形式で絶対パス名が指定されたときには、そのディレクトリの下になるように、WWWサーバにおける絶対パス名が構成されます。 仮に、このWWWサーバではディレクトリ /var/lib/httpd/htdocs の下のみを公開すると設定しているとします(実際は違うと思いますが)。 すると、このURIはファイル
/var/lib/httpd/htdocs/dept/phil.html
を指定していることになります。
この授業の演習などで、例えば ~b00a001/WWW/ex1.html にHTMLファイルを作成したとき、ブラウザの「場所:」入力欄には
http://www.twcu.ac.jp/~b00a001/ex1.html
と入力してホームページを表示していました。 ここでも同様の仕組みが働いています。
WWWサーバは、各々のユーザに対しても、ホームの下のすべてのファイルを公開するのではなく、ホームごとにあるディレクトリを定め、その下のファイルのみを公開するようにしています。 そして、URI
http://host/~user/path
が指定されたときには、そのディレクトリの下になるように、WWWサーバにおける絶対パス名が構成されます。 WWWサーバ www.twcu.ac.jp では、WWW というディレクトリがそれです。 したがって、URI
http://www.twcu.ac.jp/~b00a001/ex1.html
は、ファイル
/home/b00a/b00a001/WWW/ex1.html
を指定していることになるのです。
file 通信方式や http 通信方式のURIでは、ファイルの絶対パス名の代わりにディレクトリの絶対パス名が書けます。 このようなURIが指定されたとき、WWWサーバの設定によってブラウザの反応は変わりますが、たいていは次のいずれかです。
例えば、ブラウザの「場所:」入力欄に
http://www.twcu.ac.jp/unofficial/
と入力しますと、東京女子大学の非公式情報のホームページが表示されます。 このURIは、WWWサーバ www.twcu.ac.jp のファイル
/var/lib/httpd/htdocs/unofficial/index.html
を指定しているのです。 (このサーバの公開するディレクトリが/var/lib/httpd/htdocsの場合。)
http 通信形式の URI は、ブラウザの「場所:」入力欄に入力されるだけではなく、HTMLファイルの中に書かれ、WWWサーバとファイルを指定します。 URIが書けるところは、今までファイルの相対パス名を書いていたところです。 具体的には、次の部分です。
<img src="
URI" alt="...">
<... style="background-image: url(
URI)">
<a href="
URI">
<frame name="..." src="
URI">
絶対URIとは、通信方式と設置箇所を完全に指定する文字列でした。 相対URIとは、これらを部分的に指定する文字列です。 相対URIは、主にHTMLファイルの中で用いられます。 このHTMLファイルを指定する絶対URIを、基準URI(base URI)とよびます。 相対URIが指定するものは、この相対URIと基準URIから決定されます。 この決定する手続きを、相対URIの解決といいます。
例として、基準URIが http://www.fiction.co.jp/people/1999/list.htmlであるとしましょう。 このとき、相対URIがどのように解決されるかを、例を通して説明します。
基準URI http://www.fiction.co.jp/people/1999/list.html 相対URI top.html → http://www.fiction.co.jp/people/1999/top.html
ファイル名は相対URIの一種です。 この場合、基準URIの最後のファイル名を取り除き、相対URIのファイル名を付け加えた文字列に解決されます。
すなわち、http://www.fiction.co.jp/people/1999/list.html で指定されたHTMLファイルの中に、<a href="top.html">
〜</a>
というアンカーがあれば、そこをクリックすると http://www.fiction.co.jp/people/1999/top.html の内容が表示されます。
基準URI http://www.fiction.co.jp/people/1999/list.html 相対URI konishi/intro.html → http://www.fiction.co.jp/people/1999/konishi/intro.html
ファイルの相対パス名も相対URIの一種です。 この場合も、基準URIの最後のファイル名を取り除き、相対URIの相対パス名を付け加えた文字列に解決されます。
基準URI http://www.fiction.co.jp/people/1999/list.html 相対URI ../1998/list.html → http://www.fiction.co.jp/people/1998/list.html
相対URIでは、一つ上のディレクトリを指定することもできます。 ただし、http 通信方式の場合、サーバが公開しているディレクトリより上は指定できません。
基準URI http://www.fiction.co.jp/people/1999/list.html 相対URI /about/detail.html → http://www.fiction.co.jp/about/detail.html
ファイルの絶対パス名も相対URIの一種です。 この場合は、基準URIの絶対パス名の部分を取り除き、相対URIの絶対パス名を付け加えた文字列に解決されます。
基準URI http://www.fiction.co.jp/people/1999/list.html 相対URI file:/home/staff/konishi/test.html → file:/home/staff/konishi/test.html
HTMLファイルの中に絶対URIを書いた場合は、基準URIに関わらず、その絶対URIに解決されます。
HTMLファイルを書くとき、絶対URIと相対URIのどちらを用いたらよいでしょうか。 これは、HTMLファイルをどのWWWサーバのどのディレクトリに置くかによって様々です。
いま、ディレクトリ /home/b00a/b00a001/WWW にいくつかのHTMLファイルがあり、WWW の下に新しくディレクトリ info2a を作り、そこにそれらのファイルを移動したとしましょう。 もし、ファイル future.html の中でリンク先を絶対URI
http://www.twcu.ac.jp/~b00a001/in2010.html
で指定していたならば、これを
http://www.twcu.ac.jp/~b00a001/info2a/in2010.html
と書き直す必要があります。 一方、リンク先を相対URI in2010.html で指定していたならば、future.html を書き直す必要はありません。 なぜならば、移動後の future.html の基準URIは
http://www.twcu.ac.jp/~b00a001/info2a/future.html
なので、相対URI in2010.html は絶対URI
http://www.twcu.ac.jp/~b00a001/info2a/in2010.html
に解決されるからです。
絶対URIのほうが良い場合もあります。 例えば、ディレクトリ /home/b00a/b00a001/WWW にHTMLファイル intro.html
... 私が <a href="index.html"> はじめて作ったホームページ</a> を見てください。 ...
を作成していて、この intro.html をあるプロバイダでも公開したくなったとします。 このとき、プロバイダに転送した後で、intro.html を
... 私が <a href="http://www.twcu.ac.jp/~b00a001/index.html"> はじめて作ったホームページ</a> を見てください。 ...
と、絶対URIによる指定に書き直す必要があります。 一方、はじめから絶対URIで指定していれば、プロバイダに転送したあと intro.html を書き直す必要はありません。
base
タグ
<base>
タグを用いると、HTMLファイルの所在に関わらず、基準URIを明示的に指定できます。
書式は、<base href="
URI">
です。
このタグに終了タグはありません。
また、このタグは <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ファイルがどこにあったとしましても、画像ファイル
http://www.fiction.co.jp/img/pic01.jpeg,
http://www.fiction.co.jp/img/pic02.jpeg,
...
が指定されることになります。
学生番号b00a001のAさんは、歴史上の人物で好きな人を男女一人ずつ答えてもらうアンケートを行ない、注目する男性2人と女性2人に関して相関関係があるかどうか調べました。
4人の一人一人についてホームページを作成し、それらをディレクトリ ip2a の中に置きました。
ip2a | +---------------+-------+-----+--------------+ | | | | hojo.html murasaki.html shotoku.html tokugawa.html
北条政子ファンの好む男性ランキング1. 徳川家康2. 聖徳太子
紫式部ファンの好む男性ランキング1. 聖徳太子2. 徳川家康
聖徳太子ファンの好む女性ランキング1. 紫式部2. 北条政子
徳川家康ファンの好む女性ランキング1. 北条政子2. 紫式部
<a>
タグを用いて相互にリンクを張ったのですが、すべて同じディレクトリにありますので、リンク先として単にファイル名を書きました。
その後、ディレクトリ female と male を作成し、HTML ファイルを次のように移動しました。
ip2a | +---------------+------------+ | | female male | | +-------+-------+ +------+-------+ | | | | hojo.html murasaki.html shotoku.html tokugawa.html
すると、すべてのリンクが無効になってしまいました。
全部の <a>
タグを書き直そうと考えましたが、それは大変です。
そこでAさんは、それぞれのHTMLファイルに <base>
タグを1行追加するだけで、リンク機能を回復しました。
Aさんが最終的に作成した4つのHTMLファイルを再現してください。
<a>
タグのhref
属性の値がファイル名のままというのがポイントです。
(上級者向けのヒント: <base>
タグでは相対URIも指定できます。)
今日の演習11に従ってホームページを作成し、そのファイル名をkonishi@twcu.ac.jpあてにメールで報告してください。 メールには、学生番号、氏名、科目名、授業の日付けを明記してください。