ここから本文です

URLとURIはどう使い分けるのですか?

huj********さん

2012/3/1101:43:42

URLとURIはどう使い分けるのですか?

色んなサイトをざっと見てみると大きなくくりがURLでそのなかにURIとURNがあると何となく分かったのですが使い分けがよくわかりません。

htmlやcssを勉強するとbackground:url()とurlが出てくる一方説明ではuriとでてきたりもします。
同じサイトでurlとuriが出てくるという事は何らかの使い分けがあると思うんですが、どうちがいますか?

補足なるほど、ややこしいですね。
一応確認しておきたいのですが、例えばhttp://huji_sanroku.com/http://huji_sanroku.com/index.htmlはどちらもURLかつURIということでいいのですか?
LocatorとIdentifierなので「場所(ファイル名は含まない)」と「ファイル名を含む住所」の違いのようなものと思った(想像した)のですがそういうわけでは無いということでいいのですか?
追記の質問になってしまい申し訳ありません。

閲覧数:
3,840
回答数:
2
お礼:
50枚

違反報告

ベストアンサーに選ばれた回答

ris********さん

編集あり2012/3/1118:32:24

> 大きなくくりがURLでそのなかにURIとURNがある

逆です。URI の中に URL と URN があります。さらに言えばこれもずいぶん古い見解で、現在では(と言っても相当前からですが)

・URI = http: + ftp: + mailto: + tel: + news: + urn: + ....

のようになります。urn: はスキームの 1 個に過ぎません。これらの中で、昔から "URL" と呼ばれていた http:、ftp:、mailto: などを今でも URL と呼ぶこともあります。しかし正式名称は URI です。

さらに、URI でアルファベット以外の文字を使えるようにしたものを IRI と呼びます。XML や RDF 関連の規格では URI や IRI の用語をよく使います。

---
ところが、ウェブ制作の現場では未だに URL の用語がよく使われています。"URI" の用語ができたのが 1998 年の夏頃だったので、それ以前に作られたもので "URL" の名前を使ってしまった場合、迂闊に変更できないからです。CSS の url() 関数は、まさにこの罠に嵌ってしまったものです。

本当は URI の用語を使うべきなのに、みんな URL と言ってる。ならばいっそ、と HTML(5) 仕様書では URL を URI + IRI だと再定義してしまいました。これが後々どう影響するか分かりませんが、用語がものすごく混乱しているのは頭の片隅に入れておいて下さい。

簡単にまとめると、

・XML 関連では IRI > URI (> URL) ですが、
・HTML 関連では URL = URI + IRI です。

まあ、忘れて構いません。同じ意味だと思ってもらって結構です。

---

【追記】
> LocatorとIdentifierなので「場所(ファイル名は含まない)」と「ファイル名を含む住所」の違い

昔の見解としては、U.R.Identifier が総称で、その中で「場所」を示すのが U.R.Locator であり、「名前・番号付け」で示すのが U.R.Name でした。だから URI = URL + URN と説明されていました(RFC 2396)。

ですが、実際にはそんなに綺麗には区別できません。例えば、電話番号を示す tel: は URL として定義されましたが(RFC 2806)、上の定義で言えば URN ですよね。ですが、URN は urn: として定義されてしまったので(RFC 2141)、tel: を URN と呼ぶことはできません。なので、tel: は URI として再定義されました(RFC 3966)。こんな感じで、今後は URL と URN の区別というのも特に設けないので、みんな URI を使ってね、というのが RFC 3986 でした。

ftp:、http:、mailto:、file: などは RFC 1738 で典型的な URL として定義されているので、これらの URI に限っては、昔ながらの URL と呼んでも誤解はないでしょう。

---
rion8759 さん、

WHATWG は「URL Standard」として以下のようなものを作っています。
http://dvcs.w3.org/hg/url/raw-file/tip/Overview.html
実を言えば、URI の仕様が曖昧すぎるとして、URL を「意図的に」用いる人たちは以前からいました。

XML における URI/IRI ついても、統一されているとは全く言えません。XML Schema の anyURI 型には IRI が含まれます。SPARQL では IRI を「RDF URI 参照」のサブセットとします。XML システムの相互運用性のために LEIRI(Legacy extended IRI)なんてのを設け、ますます混乱に拍車をかけています。

だから、「統一概念としての URL」を設けたこと自体には、それなりに意味があります。問題は、よりによって古くからある「URL」を使っちゃうのか、てことなわけで。

この辺の事情は以下にまとまっています。
http://suika.fam.cx/~wakaba/wiki/sw/n/IRI
http://suika.fam.cx/~wakaba/wiki/sw/n/URI5

質問した人からのコメント

2012/3/12 04:33:51

もともとややこしかったものが再定義されて余計ややこしくなったんですね。
張っていただいたサイトを読んで勉強します。
ありがとうございました。

「URLとは」の検索結果

検索結果をもっと見る

ベストアンサー以外の回答

1〜1件/1件中

rio********さん

編集あり2012/3/1120:38:43

URI は RFC3986 で定義されています。
http://www.studyinghttp.net/rfc_ja/rfc3986
RFC3986 は RFC3987 で上書きされており、IRI が新しく定義されています。
http://www.ietf.org/rfc/rfc3987.txt
HTML Standard (HTML5) における URL は WHATWG で策定中です。
http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.ht...

# 私の理解では RFC3987 は XML に限定されない仕様です。
# HTML Standard (HTML5) で URL の定義が見直されていますが、それまでの常識は RFC にあったと認識しています。
# なので、まだ Working Draft である HTML Standard (HTML5) の URL は(今のところは)忘れて貰ってもいいんじゃないかな、という気はします。
# あと、HTML Standard (HTML5) の URL は HTML5 の仕様書に記述している「URL」を定義しているに過ぎないのでそれが一般化するかどうかは未知数ではないかなと。

> 例えばhttp://huji_sanroku.com/http://huji_sanroku.com/index.htmlはどちらもURLかつURIということでいいのですか?
どちらも「位置」を表すので URL であり URI です。
RFC3986 における「絶対URI」になります。
RFC3986 は日本語訳でわかりやすくまとめられているので目を通しておくといいと思います。(RFC3987 の日本語訳があればいいのですが)

(2012/03/11 20:39追記)
To: rishorusさん
勉強になります。
始めに「URL」があり、一般化した後に「URI」が生まれ、更にしばらく経って「IRI」が生まれているのですね。
「HTML」から「XHTML」に移行しようとして世に受け入れられず、HTML Standard (HTML5) に戻った経緯に似ているように感じました。
「URL Standard」はURLのパース方法など実装する側に立って仕様が策定されているのは評価できますが、「URL = URI + URN」にする必要があったのかなーというところは疑問が残ります。
例えば、RFC3986 における絶対URIに対比する形で「絶対URL」を定義して「絶対URI」はそのまま残せばよかったのではないかと…。
勿論、HTML5 で「URL」「URI」「URN」を再定義したからといって、今すぐ今までの概念がなくなるわけではないのでしょうが、とてもわかりづらいと思いました。

# Re: huji_sanrokuさん

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

別のキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる