「URLはURIのサブセット」は聞き飽きた
URN1を持ち出して「(場所|名前)を示す」「包含関係が~~~」とかは調べれば出てくる2しまあ分かる3。
でもURNなんか目にする機会が無い4。
我々5は「https://qiita.com/
」←コレ をURLと呼ぶべきかURIと呼ぶべきかを知りたいのだ。
まず結論
-
文字列
https://qiita.com/
はURLかつURIだが、URLと呼ぶ方が余計なもの6を含まない分簡潔。 -
API等インタフェースの引数・戻り値を説明するときは、よっぽどのことが無い限りはURLの方が間違いを生みづらい。
それぞれ解説
1. 文字列https://qiita.com/
リンクとして跳べるものはURLであるからして、URLと呼んでもURIと呼んでも正しい。
ただ、URIだと表す範囲が無駄に広くなるので別にURLで良いじゃん。
2. インタフェースの引数・戻り値
確実にURNが来ても大丈夫な実装は現実問題少ないと思われる7。
URIを名乗っているそのシステム、多分URLしか想定してないと思う8。
つまりURLの方が正しい場合が多い9。
余談的な何か
URLっぽいのにURLには含まれず、URIには含まれるものがある。
一例はXMLの名前空間(xmlns
)。
SVG10でよく見るhttp://www.w3.org/2000/svg
はURLではないということ11。
リソースの場所を表すわけではなく、単にユニークなID12として使っている。
簡単かつ非常に雑な見分け方は 、それで有効なリンクを作れるかどうか13。
まとめ
結 局 U R L で 良 い じ ゃ ん
-
urn:uuid:1be02e05-076c-44f1-bdae-867a976f752b
みたいにurn:
で始まるやつ。 ↩ -
Locatorだから場所(Location)とかNameだから名前とかそんな当たり前のことを教えてもらいたいんじゃないのよこっちは。 ↩
-
ISBNとかRFCとかが例として挙げられてるけど
urn:isbn:***
とかURNの例でしか見ない。 ↩ -
特にURN。 ↩
-
そういうシステムはわざわざ「URI」ではなく単に「ID」と呼ぶと思うんだが。 ↩
-
特に使いたいインタフェースの戻り値でURNが返ってきたら死ぬシステム多そう。 ↩
-
設計するときはトラブルを回避するためにもちゃんと「URL」と書こうね! ↩
-
ベクタ画像フォーマットの一種。実は.svgファイルはJSPでimportもincludeもできる。 ↩
-
URLはユニークなので、IDにも流用したろという発想。 ↩
-
まあ誰しも5一度はアドレス欄に入力してみるよね。ちなみにSVGはこれにわざわざ専用ページを用意しているせいでURLじゃない14かつURLと非常に複雑。
別の例にすれば良かった↩ ↩2 -
名前空間はあくまでリソースの場所ではないためURLではない。 ↩