メインコンテンツに移動

URL・URI・URNの違いとは?Web開発者向けに分かりやすく徹底解説

URL、URI、URNは、Web開発、API設計、HTML、CSS、XML、ネットワーク通信などでよく登場する基本用語です。日常的には「URL」という言葉が最もよく使われますが、技術的にはURL、URI、URNは完全に同じ意味ではありません。特にAPI仕様書、REST APIの設計資料、Web標準のドキュメントを読むと、URLではなくURIという言葉が使われることがあり、初心者にとって混乱しやすいポイントになります。

結論から言うと、URIは最も広い概念で、URLとURNはURIの一種です。URLはリソースの場所とアクセス方法を示すURIであり、URNはリソースの名前や永続的な識別子を示すURIです。つまり、すべてのURLはURIですが、すべてのURIがURLであるとは限りません。同じように、URNもURIの一種ですが、URLとは目的が異なります。

Web開発の実務では、多くの場合URLという言葉だけで会話が成立します。たとえば、ブラウザで開くWebページのアドレス、APIのエンドポイント、画像ファイルのパスなどは、ほとんどの場合URLとして扱われます。しかし、仕様レベルで正確に理解するなら、URI、URL、URNの違いを押さえておくことが重要です。この記事では、URL、URI、URNの意味、関係性、実例、Web開発での使われ方、覚え方まで分かりやすく整理します。

1. URIとは?

URIを理解することは、URLとURNの違いを理解するための出発点です。URIは3つの中で最も広い概念であり、Web上のページだけでなく、ファイル、API、メールアドレス、書籍番号、XMLの名前空間など、さまざまな対象を識別するために使われます。まずはURIを「リソースを識別するための文字列」と考えると分かりやすいです。

1.1 URIはリソースを識別するための文字列

URIとは、Uniform Resource Identifierの略で、リソースを識別するための文字列です。ここでいうリソースとは、Webページ、画像、PDF、APIエンドポイント、メールアドレス、書籍、名前空間、ファイル、データベース上のオブジェクトなど、何らかの対象を指します。URIは、その対象を他のものと区別するための識別子です。

たとえば、次のような文字列はURIとして扱えます。

https://example.com/products mailto:[email protected] urn:isbn:9780131103627

これらは見た目も用途も異なりますが、いずれも何らかのリソースを識別しています。https://example.com/productsはWeb上のページやAPIを識別し、mailto:[email protected]はメール送信先を識別し、urn:isbn:9780131103627は特定の書籍を識別します。このように、URIは「場所を示すもの」に限定されず、広くリソースを識別するための概念です。

1.2 URIはURLとURNを含む上位概念

URIは、URLとURNを含む上位概念です。URLはURIの一種であり、リソースの場所とアクセス方法を示します。URNもURIの一種であり、リソースの永続的な名前や識別子を示します。したがって、URLとURNはどちらもURIですが、役割が異なります。

関係を簡単に表すと、次のようになります。

URI ├── URL └── URN

この関係を理解すると、URL、URI、URNの違いがかなり分かりやすくなります。URIは「リソースを識別するもの」という大きな枠組みです。その中で、アクセス場所を示すものがURL、場所に依存しない名前を示すものがURNです。

1.3 URIの例

URIは、Webページのアドレスだけではありません。メールアドレスを表すmailto:、書籍を識別するurn:isbn:、XML名前空間を表すURIなども含まれます。つまり、URIは「インターネット上で開けるリンク」だけではなく、「何かを識別するための標準的な文字列」として理解する必要があります。

URIの例意味
https://example.com/productsWeb上のページまたはAPIを識別する
mailto:[email protected]メール送信先を識別する
urn:isbn:9780131103627特定の書籍を識別する
https://www.w3.org/2000/svgSVGのXML名前空間を識別する
/users/123API内の特定リソースを識別する相対URI

このように、URIは使われる場面によって意味の強調点が変わります。Webページのように直接アクセスできるものもあれば、名前空間や書籍番号のように識別目的で使われるものもあります。

2. URLとは?

URLは、Web開発で最もよく使われる概念です。ブラウザのアドレスバーに入力するWebサイトのアドレス、画像ファイルのパス、APIエンドポイントなど、日常的に「URL」と呼んでいるものの多くがこれにあたります。URLはURIの一種であり、リソースの場所とアクセス方法を示します。

2.1 URLはリソースの場所とアクセス方法を示すURI

URLとは、Uniform Resource Locatorの略で、リソースがどこにあり、どの方法でアクセスできるかを示すURIです。日常的に「WebサイトのURL」と呼んでいるものは、ほとんどの場合このURLです。URLは、リソースを識別するだけでなく、取得するための場所や手段も含んでいます。

たとえば、次の文字列はURLです。

https://example.com/products

このURLは、httpsというプロトコルを使って、example.comというホスト上の/productsというパスにアクセスすることを示しています。つまり、単に「このリソースは何か」を示すだけでなく、「どこにあり、どうやってアクセスするか」まで示しています。

2.2 URLの構成要素

URLは、複数の要素から成り立っています。代表的なURLを分解すると、スキーム、ホスト名、パスなどに分けられます。より複雑なURLでは、ポート番号、クエリパラメータ、フラグメントなども含まれます。

https://example.com/products https        → スキームまたはプロトコル example.com  → ホスト名 /products    → パス

さらに、次のようなURLでは、追加の情報も含まれます。

https://example.com:443/products?id=10#detail

部分意味
httpsスキーム、アクセス方法
example.comホスト名
443ポート番号
/productsパス
?id=10クエリ文字列
#detailフラグメント

URLは、Web上のリソースにアクセスするための具体的な情報をまとめた文字列です。そのため、URLはURIの中でも「アクセス可能性」に強く関係する概念だと考えると分かりやすいです。

2.3 URLの具体例

URLはWebページだけでなく、画像、ファイル、FTPリソース、ローカルファイルなどにも使われます。重要なのは、URLが「アクセス方法」と「場所」を含んでいることです。

https://example.com https://example.com/images/logo.svg ftp://ftp.example.com/file.zip file:///home/user/report.pdf

これらはすべてURLです。httpsftpfileなどのスキームがあり、どの方法でどの場所にアクセスするかを示しているためです。

3. URNとは?

URNは、URLと比べると日常のWeb開発ではあまり頻繁に登場しません。しかし、リソースを永続的に識別するという考え方を理解するうえで重要です。URLが「どこにあるか」を示すのに対して、URNは「それが何であるか」を示します。

3.1 URNはリソースの名前を示すURI

URNとは、Uniform Resource Nameの略で、リソースを名前によって永続的に識別するためのURIです。URLが「どこにあるか」を示すのに対して、URNは「それが何であるか」を示します。つまり、URNは場所ではなく名前に注目した識別子です。

たとえば、次の文字列はURNです。

urn:isbn:9780131103627

これは、ISBNによって特定の書籍を識別しています。このURNは、その書籍がどのWebサイトに置かれているか、どのサーバーから取得できるかを示しているわけではありません。ただ、その書籍そのものを一意に識別しています。

3.2 URNは場所に依存しない

URNの重要な特徴は、場所に依存しないことです。URLは、リソースの置き場所が変わると変わる可能性があります。たとえば、あるPDFがhttps://old.example.com/file.pdfからhttps://new.example.com/file.pdfへ移動すれば、URLは変わります。

一方、URNはリソースの名前を表すため、リソースの保存場所が変わっても同じ識別子として使えます。たとえば、書籍のISBNは、その本がどの図書館にあるか、どのECサイトで売られているかに関係なく、その本を識別できます。このように、URNは永続的な識別子として使われることが多いです。

3.3 URNの具体例

URNは、書籍、雑誌、UUIDなど、場所ではなく名前や識別番号で対象を区別したい場面で使われます。URLのようにブラウザで直接開くことを目的とするのではなく、対象を一意に識別することが目的です。

urn:isbn:9780131103627

これは、ISBNによって特定の本を識別します。

urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6

これは、UUIDによって特定のオブジェクトやデータを識別します。

urn:issn:1535-3613

これは、ISSNによって特定の雑誌や継続刊行物を識別します。

URNの例識別するもの
urn:isbn:9780131103627書籍
urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6一意のオブジェクト
urn:issn:1535-3613雑誌・継続刊行物

URNは、場所よりも「対象そのものを一意に識別すること」が重要な場面で使われます。

4. URI・URL・URNの関係

URL、URI、URNの関係を理解するには、まず「URIが上位概念である」と押さえることが大切です。URLとURNは対立する完全別物ではなく、どちらもURIの一種です。違いは、何を使ってリソースを識別するかにあります。

4.1 URIが最も広い概念

URIは、リソースを識別するための文字列全般を指します。その中で、リソースの位置とアクセス方法を示すものがURLであり、リソースの名前を示すものがURNです。

用語正式名称役割
URIUniform Resource Identifierリソースを識別する総称
URLUniform Resource Locatorリソースの場所とアクセス方法を示す
URNUniform Resource Nameリソースの永続的な名前を示す

この表から分かるように、URLとURNはどちらもURIの一種です。ただし、URLは「場所」、URNは「名前」に重点を置いています。

4.2 すべてのURLはURIだが、すべてのURIがURLではない

よくある混乱は、「URIとURLは同じなのか」という点です。答えは、完全には同じではありません。すべてのURLはURIです。なぜなら、URLはリソースを識別しているからです。しかし、すべてのURIがURLであるとは限りません。URNのように、場所を示さず名前だけを示すURIも存在するからです。

たとえば、次の文字列はURIであり、URLでもあります。

https://example.com/page

一方、次の文字列はURIであり、URNですが、URLではありません。

urn:isbn:9780131103627

この違いを理解すれば、API設計や仕様書でURIという言葉が出てきても混乱しにくくなります。

4.3 関係を図で理解する

URI、URL、URNの関係は、集合で考えると分かりやすいです。URIという大きな集合の中にURLとURNが含まれています。

URI ├── URL │   └── https://example.com/page └── URN    └── urn:isbn:9780131103627

実務ではURLを使うことが多いですが、正確にはURLもURIに含まれます。仕様書でURIという言葉が使われるのは、URLだけでなく、より広い識別子を扱えるためです。

5. URLとURNの違い

URLとURNはどちらもURIの一種ですが、目的が大きく異なります。URLはリソースの場所やアクセス方法を示し、URNはリソースそのものの名前や識別番号を示します。ここを理解すると、3つの用語の違いがかなり明確になります。

5.1 URLは場所、URNは名前

URLとURNの最も分かりやすい違いは、URLが場所を示し、URNが名前を示すことです。URLは「どこにアクセスすればよいか」を示します。一方、URNは「そのリソースが何であるか」を示します。

たとえば、ある本を考えてみます。

urn:isbn:9780131103627

これは、その本を識別するURNです。どこで入手できるかは分かりませんが、どの本かは分かります。

一方、次のような文字列はURLです。

https://library.example.com/books/9780131103627

これは、その本の情報ページがどこにあるかを示しています。ブラウザでアクセスできる可能性があるため、URLとして扱えます。

5.2 URLとURNの比較表

比較項目URLURN
正式名称Uniform Resource LocatorUniform Resource Name
URIの一種かはいはい
主な目的リソースの場所を示すリソースの名前を示す
アクセス方法を示すか示す示さない
場所に依存するか依存しやすい依存しにくい
直接アクセスできるか多くの場合できる通常はできない
https://example.com/pageurn:isbn:9780131103627
覚え方住所身分証番号・ISBN

URLはWeb上で実際にアクセスするために使われることが多く、URNは永続的な識別に使われることが多いです。日常のWeb開発ではURLの方が圧倒的によく登場しますが、仕様書や識別子設計ではURNやURIの考え方も重要になります。

6. URI・URL・URNの総合比較

ここまでで、URI、URL、URNの意味と関係を見てきました。ここでは、3つの違いをまとめて比較します。用語だけを覚えるよりも、「何を識別するのか」「場所を示すのか」「名前を示すのか」「直接アクセスできるのか」という観点で整理すると理解しやすくなります。

6.1 3つの役割の違い

URI、URL、URNはすべてリソースの識別に関係していますが、役割が異なります。URIは最も広い概念で、リソースを識別するための文字列全般を指します。URLは、その中でもリソースの場所とアクセス方法を示すものです。URNは、リソースの名前や永続的な識別子を示すものです。

実務では、URLとURIがほぼ同じ意味で使われることもあります。特にWeb APIの文脈では、/users/123のようなパスをURIと呼ぶことがあります。しかし、厳密にはURL、URI、URNの役割を分けて理解しておくと、仕様書や技術文書を読みやすくなります。

6.2 総合比較表

比較項目URIURLURN
正式名称Uniform Resource IdentifierUniform Resource LocatorUniform Resource Name
役割リソースを識別する総称リソースの場所とアクセス方法を示すリソースの名前を示す
上位概念かはいいいえいいえ
URLを含むかはい自分自身いいえ
URNを含むかはいいいえ自分自身
場所を示すか場合によるはいいいえ
名前を示すか場合による場合によるはい
直接アクセスできるか場合による多くの場合できる通常はできない
https://example.comhttps://example.com/pageurn:isbn:9780131103627

URIは「識別できればよい」という広い概念です。URLは「どこにあるか、どうアクセスするか」を含むURIです。URNは「名前として何であるか」を示すURIです。この3つを階層関係で覚えると、混乱しにくくなります。

7. Web開発でURLという言葉がよく使われる理由

Web開発では、URIよりもURLという言葉がよく使われます。これは、実際のWeb開発で扱うリソースの多くが、HTTPやHTTPSでアクセスできるURLだからです。ブラウザで開くページ、APIの完全なエンドポイント、画像やCSS、JavaScriptファイルなどは、ほとんどの場合URLとして扱えます。

7.1 実務ではアクセスできる文字列が多いから

Web開発では、実際にアクセス可能なリソースを扱うことが多いため、URIよりもURLという言葉がよく使われます。ブラウザで開くWebページ、APIエンドポイント、画像ファイル、CSSファイル、JavaScriptファイル、PDFなどは、多くの場合URLで表されます。

たとえば、次のようなAPIエンドポイントはURLです。

https://api.example.com/users

この文字列は、HTTPSを使ってapi.example.com上の/usersというリソースにアクセスすることを示しています。実際にアクセス方法と場所を含んでいるため、URLと呼ぶのが自然です。

7.2 URIという言葉は仕様書でよく使われる

一方で、仕様書やAPI設計ではURIという言葉が使われることもあります。これは、必ずしも完全なURLだけを指すとは限らないためです。たとえば、API仕様書では次のように書かれることがあります。

URI: /users/123

この/users/123は、ドメイン名やスキームを含まない相対URIです。完全なURLではありませんが、リソースを識別するパスとして使われています。

ドメインを付けると、完全なURLになります。

https://api.example.com/users/123

このように、Web開発では文脈によってURIとURLが使い分けられます。厳密な仕様ではURI、日常的な会話ではURLと呼ばれることが多いです。

8. APIにおけるURIとURL

API設計では、URIという言葉が特によく使われます。これは、APIがリソースを中心に設計されることが多く、そのリソースを識別するためにパスやエンドポイントが使われるからです。完全なURLだけでなく、相対的なパスもリソース識別子として扱われます。

8.1 APIエンドポイントはURIとして説明されることがある

API開発では、/users/products/100のようなパスをURIと呼ぶことがあります。これは、そのパスがAPI上のリソースを識別しているからです。たとえば、次のようなHTTPリクエストを考えます。

GET /users/123 HTTP/1.1 Host: api.example.com

ここで/users/123は、ユーザーID 123のリソースを識別しています。この時点ではスキームやホスト名を含まないため、完全なURLではありません。しかし、リソースを識別しているためURIとして扱えます。

8.2 完全な形にするとURLになる

同じリソースにホスト名とスキームを付けると、完全なURLになります。

https://api.example.com/users/123

この場合、httpsというアクセス方法と、api.example.comというホスト名が含まれているため、URLとして扱えます。

API設計では、相対的なパスをURIと呼び、完全なアクセス先をURLと呼ぶことがあります。厳密な用語としては、URLもURIの一種なので、完全なURLをURIと呼んでも間違いではありません。ただし、説明の分かりやすさを重視するなら、場所とアクセス方法があるものをURL、リソース識別の概念としてURIと覚えるとよいです。

8.3 REST APIではURI設計が重要

REST APIでは、URIはリソースを表すために使われます。たとえば、ユーザー、商品、注文、記事などをURIで表現します。良いURI設計は、APIの分かりやすさや保守性に大きく影響します。

URI例意味
/usersユーザー一覧
/users/123ID 123のユーザー
/products商品一覧
/products/10ID 10の商品
/orders/500ID 500の注文

このように、APIではURIが「どのリソースを操作するか」を示します。HTTPメソッドと組み合わせることで、取得、作成、更新、削除などの操作を表現します。

9. HTMLにおけるURIとURL

HTMLでは、リンク、画像、スクリプト、スタイルシートなどを読み込むためにURIやURLが使われます。多くの場合、完全なURLだけでなく、相対パスも使われます。ここでは、HTMLの属性に指定する値がどのようにURIやURLとして扱われるかを整理します。

9.1 href属性の値はURIとして扱える

HTMLでは、<a>タグのhref属性にリンク先を指定します。

<a href="https://example.com">    Website </a>

このhrefの値は、リソースを識別する文字列なのでURIです。そして、https://example.comはアクセス方法と場所を含んでいるためURLでもあります。つまり、この例ではURIでありURLでもある文字列が使われています。

HTMLでは、絶対URLだけでなく相対パスも使えます。

<a href="/about">    About </a>

この/aboutは、完全なURLではありませんが、現在のサイト内のリソースを識別する相対URIとして扱えます。ブラウザは現在のドメインと組み合わせて完全なURLとして解決します。

9.2 imgタグやscriptタグでも使われる

画像を読み込む<img>タグでも、URIやURLが使われます。

<img src="https://example.com/images/logo.svg" alt="Logo">

この場合、src属性の値は画像ファイルのURLです。スキーム、ホスト名、パスが含まれているため、どこから画像を取得すればよいかが分かります。

一方、次のように相対パスを指定することもあります。

<img src="images/logo.svg" alt="Logo">

この場合、images/logo.svgは相対URIです。ブラウザは現在のページの場所を基準にして、実際のURLに変換して画像を読み込みます。

10. CSSにおけるURIとURL

CSSでも、背景画像、フォント、マスク画像などを読み込むときにURLやURIが使われます。CSSではurl()という関数名が使われるため、すべてをURLと呼びたくなりますが、実際には相対URIも指定できます。

10.1 CSSのurl()は名前がURLでもURIを受け取れる

CSSでは、背景画像やフォントファイルなどを読み込むときにurl()関数を使います。

background-image: url("images/logo.svg");

このurl()という名前を見ると、必ず完全なURLだけを指定するように思えるかもしれません。しかし、実際には相対パスも指定できます。この場合、images/logo.svgは相対URIとして扱われ、CSSファイルの場所を基準に解決されます。

完全なURLを指定することもできます。

background-image: url("https://example.com/images/logo.svg");

この場合は、明確にURLです。スキームとホスト名が含まれており、画像の取得先が分かります。

10.2 CSSでは実務上URLという言葉で十分なことが多い

CSSの実務では、url()に指定する値を細かくURIとURLに分けて呼ぶことは多くありません。多くの場合、「画像のURL」「フォントのURL」「背景画像のURL」と呼べば十分です。

ただし、技術的には、url()の中に書かれる値は絶対URLだけでなく相対URIも含みます。この点を知っておくと、CSS仕様やブラウザの挙動を理解しやすくなります。

11. XML NamespaceにおけるURI

XMLやSVGでは、名前空間を識別するためにURIが使われます。この場合のURIは、必ずしもブラウザで開くためのURLとは限りません。見た目はURLのように見えても、主な役割は「名前空間を識別すること」です。

11.1 名前空間URIは必ずしもアクセス先ではない

XMLやSVGでは、名前空間を識別するためにURIが使われます。たとえば、SVGでは次のような記述を見かけます。

xmlns:svg="http://www.w3.org/2000/svg"

この文字列はURIです。ただし、必ずしもブラウザでアクセスして何かのページを取得するためのURLとして使われるわけではありません。ここでは、SVGの名前空間を識別するための文字列として使われています。

初心者が混乱しやすいのは、http://www.w3.org/2000/svgのように見た目がURLに見える点です。確かに形式としてはURLに見えますが、XML Namespaceでは「この名前空間を識別するための名前」として使われる意味が強いです。

11.2 URIは場所ではなく識別子として使われる場合がある

この例から分かるように、URIは必ずしも「アクセスできる場所」を意味するわけではありません。URIはリソースを識別するための文字列なので、名前空間のような抽象的な概念を識別するためにも使われます。

そのため、技術文書でURIという言葉が出てきたときは、「これは必ずブラウザで開けるURLなのか」と考えるのではなく、「何かを識別するための文字列なのだ」と理解するとよいです。

12. 絶対URIと相対URI

URIには、絶対URIと相対URIがあります。URLやURIを正しく理解するには、この違いも重要です。絶対URIはスキームを含む完全な形式であり、相対URIは現在の場所を基準にして解決される形式です。

12.1 絶対URIとは

絶対URIとは、スキームを含む完全な形式のURIです。たとえば、次のような文字列です。

https://example.com/products

この文字列は、httpsというスキームを含んでおり、リソースの場所を完全に示しています。一般的にはURLとして扱われます。

絶対URIは、どの場所から見ても同じリソースを指すため、外部リンクやAPIの完全なエンドポイントを示す場合に使われます。たとえば、メールでリンクを送る場合や、外部サービスにコールバックURLを登録する場合は、絶対URLを使う必要があります。

12.2 相対URIとは

相対URIとは、現在の場所を基準にして解決されるURIです。たとえば、次のような文字列です。

/products images/logo.svg

これらは、スキームやホスト名を含んでいません。そのため、現在のWebサイトや現在のファイルの位置を基準にして、完全なURLへ解決されます。

HTMLやCSSでは、相対URIがよく使われます。サイト内リンクや画像パスでは、完全なURLを書くよりも相対パスを書く方が管理しやすいことがあります。

12.3 絶対URIと相対URIの比較

比較項目絶対URI相対URI
スキーム含む含まない
ホスト名多くの場合含む含まない
https://example.com/products/products
基準それ単体で解決できる現在の場所を基準に解決する
よく使う場面外部リンク、APIの完全URLサイト内リンク、画像パス

絶対URIと相対URIを理解しておくと、HTML、CSS、API設計でパスの指定を間違えにくくなります。

13. URL・URI・URNの覚え方

URL、URI、URNは名前が似ているため、文字だけで覚えようとすると混乱しやすいです。そこで、人を識別する情報にたとえると分かりやすくなります。URLは住所、URNは身分証番号、URIはその人を識別できる情報全般のようなものです。

13.1 人にたとえると分かりやすい

URL、URI、URNの違いは、人を識別する情報にたとえると理解しやすくなります。URIは、その人を識別できる情報全般です。URLは、その人が現在どこにいるかを示す住所です。URNは、その人そのものを識別する番号のようなものです。

たとえば、ある人を識別する方法として、名前、住所、身分証番号、社員番号などがあります。これらはすべて、その人を識別するための情報です。これがURIに近い考え方です。

13.2 URLは住所、URNは身分証番号

URLは住所に似ています。住所は、その人が今どこにいるかを示します。しかし、引っ越すと住所は変わります。同じように、URLもサーバー移転やパス変更によって変わる可能性があります。

URNは身分証番号やISBNに似ています。身分証番号は、その人がどこに住んでいるかとは関係なく、その人を識別します。ISBNも、その本がどの店にあるかとは関係なく、その本を識別します。これがURNの考え方です。

URIは、これらを含む広い識別情報です。住所も身分証番号も、その人を識別する情報なので、URIのようなものだと考えると分かりやすいです。

13.3 覚え方の比較表

用語たとえ意味
URI識別情報全般その人を識別できる情報
URL住所今どこにいるかを示す
URN身分証番号場所に関係なく本人を識別する

このたとえを使うと、URLとURNの違いが直感的に理解できます。URLは場所に依存し、URNは名前や番号に依存します。URIはその両方を含む広い識別子です。

14. よくある誤解

URL、URI、URNについては、実務でも誤解がよくあります。特に「URIとURLは同じもの」「URNはURLの古い言い方」「URIはブラウザで開けるものだけ」という理解は正確ではありません。ここでは、よくある誤解を整理します。

14.1 URIとURLは完全に同じではない

最もよくある誤解は、URIとURLを完全に同じものとして扱うことです。日常会話や実務ではほぼ同じように使われることがありますが、技術的にはURLはURIの一種です。つまり、URLはURIですが、URIが常にURLであるとは限りません。

この違いは、API設計や仕様書を読むときに重要になります。ドキュメントでURIと書かれている場合、それは必ずしも完全なURLを意味しているとは限りません。相対URIや名前空間URIなども含む可能性があります。

14.2 URNはWebであまり見かけないが重要な概念

URNは、日常のWeb開発ではURLほど頻繁には使われません。そのため、初心者はURNをあまり意識しないかもしれません。しかし、URNは永続的な識別子を考えるうえで重要な概念です。

ISBN、ISSN、UUIDなど、場所に依存しない識別子を扱う場面ではURNの考え方が役立ちます。Webアプリケーションでも、データやオブジェクトを一意に識別する設計を考えるときに、URN的な発想は重要です。

14.3 URIは必ずアクセスできるとは限らない

URIというと、ブラウザで開けるリンクを想像する人もいます。しかし、URIはあくまで識別子です。アクセスできる場合もありますが、アクセスできない場合もあります。

たとえば、XML NamespaceのURIやURNは、必ずしもブラウザで開くことを目的としていません。URIは「場所」ではなく「識別」を目的とする場合があることを覚えておくと、仕様書を読むときに混乱しにくくなります。

15. 実務ではどう使い分けるべきか

実務では、厳密な定義を常に口にする必要はありません。しかし、設計や仕様書では言葉を正しく使えると便利です。普段の会話ではURLで十分なことが多く、APIや仕様書ではURIを意識すると分かりやすくなります。

15.1 普段のWeb開発ではURLで問題ないことが多い

通常のWeb開発では、ブラウザで開くアドレスやAPIの完全なエンドポイントを指す場合、URLという言葉を使えば問題ないことが多いです。たとえば、ログインページのURL、画像URL、API URL、リダイレクトURLなどは、実務でも自然な表現です。

https://example.com/login https://api.example.com/users

これらは場所とアクセス方法を含んでいるため、URLと呼ぶのが分かりやすいです。

15.2 仕様や設計ではURIを意識する

一方で、API設計や仕様書ではURIという言葉を意識するとよいです。特に、/users/123のような相対パスや、XML Namespaceのような識別子を扱う場合は、URLよりURIという言葉の方が正確です。

また、リソース設計では、URIは「リソースをどう識別するか」という考え方に関わります。REST APIでは、ユーザー、商品、注文などのリソースをURIで表現します。たとえば、/users/123はユーザーID 123を識別するURIとして設計されます。

15.3 用語の使い分け目安

場面使いやすい用語理由
ブラウザで開くWebアドレスURL場所とアクセス方法がある
APIの完全なエンドポイントURLhttps://...を含むため
APIの相対パスURIリソース識別が目的
XML NamespaceURI名前空間の識別が目的
ISBNやUUIDの識別URN場所ではなく名前を示す

このように、日常会話ではURL、設計ではURI、永続識別子ではURNを使うと整理しやすくなります。

16. まとめ比較

ここまでの内容をまとめると、URIは最も広い識別子、URLは場所を示す識別子、URNは名前を示す識別子です。最後に、短く確認できるように、3つの違いを比較表で整理します。

16.1 3つを一言で説明する

URL、URI、URNを一言で説明すると、URIはリソースを識別するための総称、URLはリソースの場所とアクセス方法を示すもの、URNはリソースの名前を示すものです。この一文を覚えておくと、3つの違いをかなり整理しやすくなります。

用語一言で言うと
URIリソースを識別するものhttps://example.com
URLリソースの場所を示すものhttps://example.com/page
URNリソースの名前を示すものurn:isbn:9780131103627

URLは実際にアクセスするための情報を含むことが多く、URNは場所に依存しない識別子として使われます。URIはその両方を含む広い概念です。

16.2 判断基準

ある文字列がURLかURNかURIかを判断したい場合は、次のように考えると分かりやすいです。

質問答えが「はい」なら
リソースを識別しているかURI
場所やアクセス方法を示しているかURL
永続的な名前や番号を示しているかURN
ブラウザでアクセスできるか多くの場合URL
場所ではなく名前だけを示しているかURN

この判断基準を使えば、実務で出てくる多くの例を分類できます。たとえば、https://example.com/pageはURIでありURLです。urn:isbn:9780131103627はURIでありURNです。/users/123は相対URIとして扱えます。

17. FAQ

FAQでは、URL、URI、URNに関して特によくある疑問を整理します。初心者が混乱しやすいのは、URIとURLの関係、URNがURLなのかどうか、APIではどの言葉を使うべきかという点です。ここで短く確認しておくと、実務でも用語を使い分けやすくなります。

17.1 URIとURLは同じ意味ですか?

URIとURLは完全に同じ意味ではありません。URIはリソースを識別するための広い概念で、URLはその中でもリソースの場所とアクセス方法を示すものです。つまり、URLはURIの一種です。

ただし、Web開発の現場では、URIとURLがほぼ同じ意味で使われることもあります。厳密な仕様を読む場合は区別が必要ですが、日常会話ではURLと言っても通じることが多いです。

17.2 すべてのURLはURIですか?

はい、すべてのURLはURIです。URLはリソースを識別し、さらにその場所やアクセス方法も示すため、URIの条件を満たしています。

ただし、すべてのURIがURLであるわけではありません。URNのように、場所を示さず名前だけを示すURIもあります。

17.3 URNはURLですか?

URNはURLではありません。URNはURIの一種ですが、リソースの場所やアクセス方法を示すものではありません。URNは、リソースの名前や永続的な識別子を示すために使われます。

たとえば、urn:isbn:9780131103627は特定の本を識別しますが、その本がどのWebサイトにあるかは示していません。そのため、URLではなくURNです。

17.4 APIではURIとURLのどちらを使うべきですか?

API仕様では、相対パスを指す場合はURIという言葉が使われることがあります。たとえば、/users/123は完全なURLではありませんが、API上のリソースを識別するURIとして扱えます。

一方、https://api.example.com/users/123のようにスキームとホスト名を含む完全な形であればURLと呼べます。実務では、相対的なリソースパスをURI、完全なアクセス先をURLと考えると分かりやすいです。

17.5 HTMLのhrefに書く値はURLですか?

hrefに完全なアドレスを書く場合、それはURLです。たとえば、https://example.comはURLであり、URIでもあります。

一方、/aboutcontact.htmlのような相対パスを書く場合、それは相対URIとして扱えます。ブラウザは現在のページの場所を基準にして、それを完全なURLに解決します。

おわりに

URL、URI、URNの違いは、リソースをどのように識別するかという考え方の違いです。URIは最も広い概念で、リソースを識別するための文字列全般を指します。URLはURIの一種で、リソースの場所とアクセス方法を示します。URNもURIの一種で、リソースの名前や永続的な識別子を示します。

Web開発の日常では、URLという言葉を使う場面が圧倒的に多いです。ブラウザで開くWebページ、APIエンドポイント、画像ファイル、CSSやJavaScriptの読み込み先などは、多くの場合URLとして扱われます。そのため、普段の会話ではURLと言えば十分なことも多いです。

しかし、API仕様、Web標準、XML Namespace、REST設計などを正確に理解するには、URIという上位概念を知っておく必要があります。特に、/users/123のような相対URIや、urn:isbn:9780131103627のようなURNを理解できると、技術文書を読む力が上がります。

覚え方としては、URIは識別情報全体、URLは住所、URNは身分証番号のようなものです。URLは「どこにあるか」、URNは「何であるか」、URIは「それを識別するもの」と考えると、3つの違いを自然に理解できます。

LINE Chat