講義内容: URI
Webを構成する主要技術の1つ目、URI(Uniform Resource Identifier)についてお話ししました。以下、今日の講義の概要を箇条書きでまとめてみます。
- URI(Uniform Resource Identifier)
- リソースの統一的な識別子=リソースの「名前」
- 現在のWeb技術の観点からは、URIは「自動的に決まるもの」ではなく「設計するもの」←これは重要
- URIの例
- http://example.jp/2013/10/21.html
- ftp://ftp.example.jp/sample.txt
- file:c:/sample.txt
- tel:09099999999
- これらの例から分かる通り、URIはWeb(HTTP通信)だけでなく様々な通信プロトコルにも使えるし、ローカルコンピュータ上のファイル、他のアプリケーションの起動指定などにも使われている
- URI = URL + URN
- URL(Uniform Resource Locator): 上に挙げた例はすべてURL
- URN(Uniform Resource Name):ホスト名やプロトコルに依存しないリソースの「名前」
- 例: urn:isbn:9784774142043 … ISBN番号9784774142043の書籍を表すURN
- ほとんど使われていないため、事実上、URI ≒ URL
- URIの構成
- http://example.jp/2013/10/21.html
- http … URIスキーム(リソースを取得するためのプロトコルなど)
- example.jp … ホスト名(リソースを取得するために通信するべき相手)
- /2013/10/21.html … パス(通信相手上でのリソースの識別子)
- 複雑な例
- http://kunishi:pass@example.jp:8000/search?q=data&debug=true#n10
- kunishi … ユーザ名
- pass … パスワード
- 8000 … TCP/IPのポート番号
- q=data&debug=true … クエリパラメータ(GETパラメータ)。この例では、q(値data)とdebug(値true)という2つのパラメータを指定している。
- #n10 … URIフラグメント(リソース中のある部分を指す)
- URIの役割
- Web上(インターネット上)でリソースを一意に識別するための識別子(名前)
- リソースを取得するための手順の記述
- 手順がコンピュータ処理可能で記述されているため、URIでリソースを指定すると、自動的にリソースを取得することが可能になる
- いいURIとは
- 変更されないURI(変更されるとリンク切れが発生する=ユーザがリソースにたどり着けなくなる)
- Webサイトを公開したり、Webアプリケーションを実装する場合、なるべく将来にわたってURIを変更する必要がないように、URIを設計する必要がある
- URIが変更される要因
- パスの構成の変更(静的Webサイトでのディレクトリ構成の変更など)
- Webアプリケーションのプログラムの変更
- Webアプリケーションのプログラミング言語の変更
- Webサーバの設定変更
- Webサーバのリプレース
- etc.
- どのようにすれば変更されにくくなるか
- 最初から熟慮してURIを設計(適切な階層構造にする)
- 実装に依存しないURI(プログラミング言語を表す拡張子をつけない、cgi-binなど特定の実装方法に依存する文字列をURIに含めない、など)
- Webサーバに用いるコンピュータ名とURIのホスト名とを独立させる(独自ドメインなど)
- どうしても変更しなければならない場合は→HTTPリダイレクト