結論から言うと、URIが「広い概念」で、URLはその中の一種類だ。すべてのURLはURIだが、すべてのURIがURLというわけではない。
それぞれの意味
URI(Uniform Resource Identifier) は「統一資源識別子」と訳される。インターネット上の「リソース(資源)」を識別するための文字列の総称だ。ここでいうリソースとは、Webページ・画像・動画・ファイル・書籍など、何かを指し示せるもの全般を意味する。
URL(Uniform Resource Locator) は「統一資源位置指定子」と訳される。リソースが「どこにあるか(場所)」を示す文字列だ。ブラウザのアドレスバーに入力する https://example.com/page.html のようなものがこれにあたる。
関係を整理する
人を識別する方法を考えてみよう。
「山田太郎」という名前で呼ぶ方法と、「東京都新宿区〇〇町1-2-3に住んでいる人」と住所で呼ぶ方法がある。どちらも同じ人を指せるが、前者は「名前による識別」、後者は「場所による識別」だ。
URIはこの両方を含む大きな概念で、URLは「住所による識別」にあたる。一方、「名前による識別」にあたるのが URN(Uniform Resource Name) で、これもURIの一種だ。
URI(識別子の総称)
├── URL(場所で示す) 例:https://example.com/index.html
└── URN(名前で示す) 例:urn:isbn:978-4-12-345678-9
具体例で比べる
| 文字列 | 種別 | 理由 |
|---|---|---|
https://www.example.com/photo.jpg |
URL(かつURI) | サーバーとパスという「場所」を示している |
urn:isbn:978-4-12-345678-9 |
URN(かつURI) | ISBNという「名前」で本を示している。どこにあるかは不明 |
https://www.example.com/photo.jpg はURLだ。example.com というサーバーの photo.jpg というファイルという場所を示しているからだ。同時にこれはURIでもある(URLはURIの一種なので)。
urn:isbn:978-4-12-345678-9 はURNだ。特定の本をISBN番号という名前で指しているが、その本が書店にあるのか図書館にあるのかは示していない。これもURIの一種だ。
実務での使い分け
日常会話やWeb開発の現場では「URL」という言葉が圧倒的によく使われ、ほとんどの場合それで通じる。
ただし、技術仕様書では正確性のために「URI」という用語が使われることが多い。
// Javaの標準ライブラリ
java.net.URI // より広い概念を扱う
java.net.URL // URLに特化したクラス
HTMLの仕様書やRFC文書でも「URI」が使われるのは、URLだけでなくURNなどより広い識別子も対象に含めるためだ。
まとめ
URI = リソースを識別する文字列の総称
URL = その中でも「場所(アドレス)」で示すもの
URN = その中でも「名前」で示すもの
日常会話 → 「URL」で問題なし
技術文書で「URI」を見かけたら → URLも含む広い意味だと理解する
参考文献・リンク
https://www.rfc-editor.org/rfc/rfc3986
https://developer.mozilla.org/ja/docs/Glossary/URI
https://developer.mozilla.org/ja/docs/Glossary/URL