【10月4週目】Webを支える技術を読んで【2/2】
の続きです。 前回をざっくりまとめると、「私たちが普段インターネットで明日の天気や、Youtubeで動画を見たりできるのはインターネットという世界中に張り巡らされている情報網がWebによってやり取りされているからですよ〜」といったそもそもWebとはというところから、Webを支える技術は3つあってそのうちの1つHTTPについて取り上げました。今回は残りの2つであるURIとHTMLについて書いていきます。
REST
URIを説明する上で必要となってくるのがRESTの概念であります。URIに入る前にサクッとRESTとは何かを見ていきます。
RESTというのはWebのシステム設計原則のことで REpresentational State Transfer の略でレストと読まれます。Web上のリソース(テキストや画像やWebページなど)にアクセスする際の基本的な考え方で、特定の情報源(URI)に対してHTTPを使って情報をやり取りすることなどが定められています。
URI
URIはUniform Resource Identifer の略で直訳すると「統一リソース識別子」です。わかりやすくいうとそれぞれのリソースの所在地が決められている場所のことをいいます。
https://5smile-ryo.hatenablog.com/entry/2021/10/18/092457
例えば前回の記事を見たい場合は上のアドレスにアクセスします。これは前回のブログ記事というリソースの所在地にHTTPリクエストを送り返ってきたレスポンスを記事として表示しています。
まとめると
・リソースとは、Web上の情報である
・世界中のリソースはそれぞれURIで所在地が存在している
・URIという所在地にHTTPで情報をやり取りしている
ということになります。
URIの構文
URIがどんなものかわかったところで、URIを構成する要素を見ていきます。
https://5smile-ryo.hatenablog.com/entry/2021/10/18/092457
こちらのURIは次のような3つの要素で構成されています。
5smile-ryo.hatenablog.com : ホスト名
/entry/2021/10/18/092457 : パス
URIの先頭にはURIスキームというもので始まります。URIスキームというのはそのURIが利用するプロトコルを表します。この例の場合はhttpsでアクセスできることを表しています。
次にホスト名が来ます。ホスト名は〇〇.comや〇〇.jpのようなDNSを使った名前、もしくはIPアドレスで示されます。
最後に階層を表すパスがきます。パスはそのホストの中でリソースがどこにあるかを表しています。ちなみにリソースは必ず他の情報と被ることのない一意である特徴を持っています。
このようにURIはホストとパスを組み合わせることで世界中の他のリソースと重複しないようにできています。なので全く同じのドメイン名は存在しないということになります。そして先ほどのRESTは一意のリソースを指定してHTTPで情報をやり取りしているわけです。
HTML
プログラミング者がまず初めに学習するのがこのHTMLで、私も最初はHTMLから学習を始めました。そんなエンジニア人生で一番付き合いの長いHTMLですが、今回はあえて復習したかったので取り上げました。
HTMLは Hypertext Markup Language の略で構造化された文書を表現するコンピュータ言語です。構造化された文書というのは、文章の中に見出しがあったり、そのページのタイトルを表したりする要素が枝分かれ形式で構成されている文書になります。例えば以下のコードのようにインデントで階層的になっているのが特徴です。拡張子は.htmlです。
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Ryo blog</title> </head> <body> <h1>見出し<h1> </body> </html>
そして<h1>見出し<h1>
のように文字を囲んでいるのがタグになります。HTMLではさまざまなタグを使い分けることによってそのページの骨組みを表すことができます。例えば<a>
タグはリンクを表していて、<img>
タグは画像を表します。他にも多くのタグが存在するのでこちらなどで見てみるのも良いでしょう。
まとめ
Web業界では新しい技術が次々に生まれていますが、基本的にはHTTP、URI、HTMLといった技術の上に成り立っているものなのでWeb業界で働く上では必ず身につけておきたい知識です。ベースの知識があることで、新しい技術にもキャッチアップしやすくなると思います。新しい技術を学ぶことも大事ですが、こういったベースの知識の学習を怠らずにしていきたいです。