URIとは?URLとの違いや構成について解説!
インターネットを利用しているなかで、アドレスバーと呼ばれる部分をクリックし、「http:」や「https:」から始まる文字列を見たことがあると思います。これらのことを「URL」だと知っている方でも、似た言葉である「URI」についてご存知の方はあまりいらっしゃらないのではないでしょうか。この記事では、URIについて、URLやURNとの違いなども含めて解説しています。
-
Contents
URIとは
URIとはUniform Resource Identifier(ユニフォーム リソース アイデンティファイア|統一資源識別子)の略称です。【Identifier】は識別子という意味を持つ英単語となっており、聞き馴染みのある【ID】という言葉は、IdentifierのIDをとった略称となっています。また、識別子とは複数の対象から特定の一つを区別するために利用する名前や数字などのことで、ファイル名やドライブ名、プログラミング言語では変数名や関数名なども識別子に含まれます。
以上を踏まえたうえで、URIとはインターネット上にあるファイルを区別するための識別子で、URLとURNを総称し、それぞれを内包している言葉となっています。
出典:Do URIs which are neither URLs nor URNs exist?
概要としては、URIとURL、URNの関係は上記の画像のような形になっています。しかしながら、ここまででは説明が不十分かと思いますので、次の項でURLとURNについて説明をしながら、それぞれとの違いをお伝えします。
-
URLとの違い
URLとはUniform Resource Locator(ユニフォーム リソース ロケーター|統一資源位置指定子)の略称です。【Locator】は位置を示すための装置という意味の英単語で、URLはインターネット上の住所に該当します。
GoogleやYahoo!JAPANなどのブラウザで検索をかけWebサイトに入ると、アドレスバーに「http:」あるいは「https:」から始まる文字列が表示されると思います。例えば弊社R-Stoneのホームページは【https://www.rstone-jp.com】となり、こちらのURLがインターネット上の弊社ホームページの住所ということになります。
インターネット上にはたくさんのデータが存在しているため、人間の住所と同じように、インターネット上のデータの場所を特定しないとWebページを表示することができません。Webページを見る際は、見ようとしているWebページを構成するファイルをサーバーから取り寄せる必要があり、そのファイルデータがどこにあるのかを示したものがURLです。また、URLにはスキーム、ホスト、パスといった書き方のルールも決まっており、イメージとしては日本の住所規格である都道府県、市区町村、番、号に近しいものがあります。
URIとの違いについては少し分かりにくい説明となってしまいますが、URIはURLとURNを内包する言葉となっているため、URLだけのことを指してURIと説明することもできます。また、URLとURNを総括した意味でURIについて話をしていると思っていても、厳密にはURLあるいはURNどちらか一方の話をしていた、などの状況も考えられます。
-
URNとの違い
URNとはUniform Resource Name(ユニフォーム リソース ネーム |統一資源名)の略称です。URLはWebページの住所を特定するものでしたが、URNはWebページの名前を特定するものとなります。URLと同じように、URNの書き方にもルールがあり、【urn:abcd:12345】のように表されます。ここでいう【abcd】のことを「名前空間の識別子」といい、名前空間とは名前の適用範囲の衝突を避けるために利用する区切りのことです。
例えば、各都道府県の市区町村では中央区、南区、北区などの行政区分が複数ありますが、〇〇県××市中央区などと表記をすれば中央区、南区、北区などの表記を用いても、それぞれの場所を特定することができます。ここでいう〇〇県や××市などが名前空間にあたり、名前空間で区切りをつけることによって中央区や南区などの言葉の衝突を避けることができる、といった具合です。【12345】は「名前空間に固有の文字列」のことで、固有の文字列は名前空間ごとに定められています。
また、Webページ閲覧時にURLはアドレスバーなどで視認できますが、URNは表示されず、あくまでインターネット上での識別子となっています。加えて、URLはサーバー移行などでURLが変更されますが、URNは永続的な利用を前提としており、基本的に変更されません。
URIとの違いについては、URLで説明したものと同様となり、URNを指してURIと説明することもできます。
-
URIを構成するパーツ
URIを構成するパーツを8つお伝えします。
-
スキーム
スキーム(scheme)とは、インターネット上の資源の種類やアクセス方法を表しているもので、上述した「http:」や「https:」などの通信プロトコル(通信をするうえでの規約や約束事)を指します。また、上記以外にもファイル送受信で利用する「ftp:」やメールの送信先を指定する「mailto:」などたくさんの種類があります。
-
オーソリティ
オーソリティ(authority)とは、「http://」の「//」以降からはじまる部分のことで、ユーザー情報、ホスト、ポートから構成されています。ここでは架空のURIとして
【http://rtarou:abcd@www.rstone-jp.com:12345/column/index.htm?jouhou=python+backend#table01】を例に説明をします。
-
ユーザー情報
ユーザー情報(userinfo)とは、Webページを利用するユーザー名とパスワードのことです。架空のURIでは【rtarou:abcd】に該当します。
-
ホスト
ホスト(host)とは、利用するWebページの情報が格納されているサーバー名のことです。架空のURIでは【www.rstone-jp.com】に該当します。
-
ポート
ポート(port)とは、利用するWebページのサーバーにあるポート番号のことです。ポート番号とは、通信プロトコルの一種である「TCP/IP」での通信先を決めるための番号です。架空のURIでは【:12345】に該当します。
-
パス
パス(path)とは、オーソリティ内のさらに細かい利用先のことです。架空のURIでは【column/index.htm】に該当します。
-
クエリ
クエリ(query)とは、パス内のさらに細かい利用先のことです。架空のURIでは【?jouhou=python+backend】に該当します。
-
フラグメント
フラグメント(fragment)とは、「http:」ではWebページ内の特定の情報を指定するためのものです。架空のURIでは【#table01】に該当し、URIの末尾に「#」をつけて指定をします。ブラウザ側で処理が実行され、サーバー側にデータが送信されないという特徴があります。
-
URIを理解するとエンジニアと意思疎通がとりやすい!
URIとURL、URNの意味を明確に理解することで、エンジニア間での認識のずれ防止や技術的な話ができるようになります。また、構成パーツの名称と役割を覚えることはスムーズなやり取りにもつながるので、こちらも理解するようにしていきましょう。
-
まとめ
今回の記事のポイントとしては、
①URIはURLとURNを総称した言葉である。
②URLとURNを指して、URIということに問題はない。(両者はURIに内包されるため正しい)
③URIはパーツごとに名前と意味を持っている。
以上の3点をまずはご認識いただければと思います。URIについて理解をすると、非エンジニアの方もWebページのURLについての見方が変わるかと思います。もしよろしければこのWebページのアドレスバーをクリックしていただき、構成内容を確認してみてください。