この記事は何?
「Webを支える技術 -HTTP、URI、HTML、そしてREST」を読んだので、知識を定着させるために自分がアウトプットをすることが本記事の目的です。
もちろん、この本の内容が気になっている方や、URIが気になっていた!という方でも少しはタメになるように記事を書いたので、しばしお付き合いください。
誤植や誤りに対する指摘は大歓迎です!
もし気になる点があればコメントでお知らせいただけると幸いです!
※本記事の内容は、本著の「第2部 URI」に該当します。
「Webを支える技術」ってどんな本?
先述の通り今回は
"Webを支える技術 -HTTP、URI、HTML、そしてREST" 著者:山本 陽平
を読みました。
いわゆる名著だと思います。初学者でもわかるようにWebの仕組みを丁寧に解説されています。
- Webがどうやって動いているのか知りたい
- ITエンジニアになったから最低限のWebの知識を身に付けたい
という方には特におすすめの本になります。
URIとは
URIは Uniform Resource Identifier
の略で「Web上のリソース(テキスト、画像、Webサイトなど)を統一的に識別するID」のことです。
一見するとあまりよくわかりませんが、私の理解を以下に書きます。
インターネット上に存在するあらゆるデータには、ID(URI、リンク等)が割り振られています。そのIDを通じて私たちはデータにアクセスすることができるようになっており、このようなシステムを「ハイパーメディア」と呼んだりもします。
実態は下記のようなものです。
↓いわゆる「URL、リンク」と言ったりしますね。
https://service.ourly.jp/
(参考として、弊社のLPを載せておきます)
URI?URLじゃないの!?
という言葉が聞こえてきそうですが、ちゃんと違いを理解しているでしょうか?
普段私たちが日常生活で使っているURLとURIはちょっと意味が違います。またURLやURIの仲間であるURNというのも存在します。ざっくりまとめると以下になります。
名前 | 解説 |
---|---|
URI (Uniform Resource Identifier ) |
リソースを識別するID |
URL (Uniform Resource Locator ) |
リソースの場所を特定するID |
URN (Uniform Resource Name ) |
リソースに他と重複しない名前をつけたID |
URIは、URLやURN両者を包含する意味があると言えますが、実際普段使う分にはURIとURLはほぼ同じと考えて良いでしょう。
興味ある方は個別で調べてみてください!
構造がわかるとURIが読めるようになる!
https://service.ourly.jp/feature
さて、上記のようなURIはパーツごとに分解することができるので、それぞれのパーツごとに見ていきましょう。
パーツ | 名前 | 特徴 |
---|---|---|
https | URIスキーム | URIが使用するプロトコル(今回はHTTPメソッド) |
service.ourly.jp | ホスト名 | DNSによって識別されるホストの名前 |
feature | パス | ホスト内に存在するリソースを示す(「ourlyの特徴」のページ) |
他にも様々な種類のパーツが存在しますが、今回は上記のようにURIがパーツごとに意味を持っていることが分かればいいとします。
リンク切れを防げ!
以前ブックマークしたサイトに久しぶりにアクセスすると、上記のような"404 not found"という表示が出た、という経験は多くの人があるのではないでしょうか。
変わらないURIこそ最上である
当然、上記のようにアクセスできないリンクが生じてしまうことはよくないユーザー体験につながってしまう可能性があります。
ではどのようにして変わらないURIを実現することができるのでしょうか?
様々な工夫がありますが、今回は
「セッションIDやアクション名はURIに含めない」
という方法を紹介します。
ざっくり言うと、セッションIDとは"ログインするたびに変わるID"のことです。同じユーザーであっても、ログアウトすると異なるIDに変わるので、URIとしてセッションIDを持つことは好ましくありません。
また下記のように、実際にアプリ内で定義したアクション名をURIに持たせることも変わりやすいURIを作る可能性があります。
リファクタリングや機能の変更でアクション名が変更・削除されるケースは十分考えられるので、URIには含めない方が賢明でしょう。
https://hoge/fuga/getInfo
まとめ
- URIとはWeb上のリソースを識別するIDのこと
- URIはURL,URN2つを包含する意味を持っている
- URIは各パーツに分解することができ、それぞれで役割が分かれている
- URIは変わらないことが大事である。どうやったら変わりづらくなるかを設計時に考えた方がいい
少し内容が多かった気がするので、5分じゃ読み切らないかもしれません。
次回はもう少し量を減らして書こうと思います!