2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

結局URLとURIはどう使い分ければいいのか

Posted at

「URLはURIのサブセット」は聞き飽きた

URN1を持ち出して「(場所|名前)を示す」「包含関係が~~~」とかは調べれば出てくる2しまあ分かる3
でもURNなんか目にする機会が無い4

我々5は「https://qiita.com/」←コレ をURLと呼ぶべきかURIと呼ぶべきかを知りたいのだ。

まず結論

  1. 文字列https://qiita.com/はURLかつURIだが、URLと呼ぶ方が余計なもの6を含まない分簡潔。

  2. 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 で 良 い じ ゃ ん

  1. urn:uuid:1be02e05-076c-44f1-bdae-867a976f752bみたいにurn:で始まるやつ。

  2. url uri 違い

  3. Locatorだから場所(Location)とかNameだから名前とかそんな当たり前のことを教えてもらいたいんじゃないのよこっちは。

  4. ISBNとかRFCとかが例として挙げられてるけどurn:isbn:***とかURNの例でしか見ない。

  5. 主語がでかい。 2

  6. 特にURN。

  7. そういうシステムはわざわざ「URI」ではなく単に「ID」と呼ぶと思うんだが。

  8. 特に使いたいインタフェースの戻り値でURNが返ってきたら死ぬシステム多そう。

  9. 設計するときはトラブルを回避するためにもちゃんと「URL」と書こうね!

  10. ベクタ画像フォーマットの一種。実は.svgファイルはJSPでimportもincludeもできる。

  11. 補足の[13]13にて補足アリ。

  12. URLはユニークなので、IDにも流用したろという発想。

  13. まあ誰しも5一度はアドレス欄に入力してみるよね。ちなみにSVGはこれにわざわざ専用ページを用意しているせいでURLじゃない14かつURLと非常に複雑。別の例にすれば良かった 2

  14. 名前空間はあくまでリソースの場所ではないためURLではない。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?