【ゆーあーるあい】

URI とは?

最終更新:
💡 リソースの「統一識別子」、URLを包む上位概念

Webページや書籍などのリソースを識別する文字列。URLもURIの一種で、対象はインターネットで取得できるものに限らない。

📌 このページのポイント
URI:リソースを指す識別子 ネットで取得できるものに限らない URL 場所・アクセス方法 https://example.com/ URN 永続的な名前 urn:isbn:0451450523 どちらもURIの例。役割は単純な二分ではない
URLもURNもURIの一種。URIは場所・名前、または両方の役割を持つ場合があり、「URI=URL+URN」という分割式ではありません。
ひよこ ひよこ
URIってURLと何が違うの?
ペンギン先生 ペンギン先生
URIはリソースを識別する文字列だよ。URLはそのうち場所やアクセス方法も示すもの。httpsで始まるWebアドレスは、URLでもURIでもあるんだ。
ひよこ ひよこ
ネット上のページだけが対象なの?
ペンギン先生 ペンギン先生
書籍なども識別できるよ。例えば「urn:isbn:0451450523」はISBNで書籍を指すURNで、これもURIの一種。名前が付いていても、必ずネットで取得できるわけではないんだ。
ひよこ ひよこ
APIの「/users/1」もURIなの?
ペンギン先生 ペンギン先生
厳密には相対URI参照だよ。「https://example.com/」を基準にすると「https://example.com/users/1」になる。APIではこうしてユーザーなどを識別するんだ。
ひよこ ひよこ
URIにはどんなパーツがあるの?
ペンギン先生 ペンギン先生
「https://example.com/path?key=value#section」なら、httpsがスキーム、example.comがホスト、/pathがパスだよ。?以降はクエリ、#以降はフラグメント。すべてのURIがこの形になるわけではないんだ。
ひよこ ひよこ
日本語や空白を入れたいときは?
ペンギン先生 ペンギン先生
パスやクエリの値なら、文字のバイトを%XX形式で表すパーセントエンコードを使うよ。UTF-8の「東京」は「%E6%9D%B1%E4%BA%AC」になる。区切り記号までまとめて変換すると意味が変わるので、値と区切りを分けて考えよう。
もっと詳しく知りたい人へ

フラグメントは必ずページ内の見出しを指す?

Webページではページ内の位置を指す例がよくありますが、それだけではありません。フラグメントの意味は対象データの形式によって決まります。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「URI」って出てきたら「リソースを指す識別子、URLもその一種」と思えばだいたいOK!
📖 おまけ:英語の意味
「Uniform Resource Identifier」 = 統一リソース識別子
💬 Uniformは統一的、Resourceは識別する対象、Identifierは識別子という意味だよ。共通の構文はRFC 3986で定義されているんだ

参考資料

← 用語集にもどる