歴史から紐解く Web の基本
概要
Web エンジニアとして仕事を始めてから、Web の歴史を学ぶ機会がありました。全体の仕組みや歴史を知ることで理解が圧倒的に違ったので、もっと早く学んでおけば良かったなと思った記憶があります。
Web のはじまり
日頃、僕たちは当たり前のようにインターネットに接続して生活していますが、インターネットが作られた当初は一体どんなものだったのでしょうか。
それは、 ハイパーテキスト
と言われる文章をインターネット上で公開でき、 ハイパーリンク
というもの(今は単にリンクと呼ぶことが多い)でそれぞれを行き来できるようにした非常にシンプルな仕組みでした。
つまり、Web の初期は以下のことしかできなかったのです。
- インターネット上に文章を公開すること
- それらを互いに参照し合うこと
それだけだと誰もが好き勝手に文章を公開できてしまうので、インターネット上での文章の書き方の決まりとして HTML ( Hyper Text Markup Language )
が同時期に誕生しました。HTML の誕生により記述方法やタグに意味合いを持たせ、共通の書き方を決めて公開できるようになりました。
# Web
[ Web ]
【 Web 】
このように決まりがないといろいろな書き方をする人がいるので書き方を統一する必要がありました。
<title>Web</title>
<h1>Web</h1>
<p>Web</p>
サーバとクライアント
Web の初期に何ができたかは分かりましたが、どうやって文章を公開・閲覧していたのか考えていきます。重要な概念として サーバ
と クライアント
というものが登場します。分かりやすく下記のように定義します。
- サーバ
- インターネット上のハイパーテキストを蓄積しておく場所
- クライアント
- ハイパーテキストを閲覧する側 = ブラウザ
仕組みとしては、クライアントがブラウザに要求をするところからスタートします( リクエスト
)。そして、サーバがリクエストを受け取り、HTML を返してあげます( レスポンス
)。このようにインターネット上のコンテンツのやりとりがサーバ・クライアント間で行われています。
URL
しかし、上記のようにコンテンツのやり取りをするためには、クライアントが要求する時に「何が欲しい」というのを明確に示してあげる必要があります。なぜなら 1 つのサーバには、不特定多数のコンテンツが管理されているので、クライアントがどのコンテンツを欲しいのか分からないからです。
なのでそこで誕生した概念が URI( URL )
です。URI は Uniform Resource Identifier の略で直訳しても分かる通り、サーバの中のコンテンツを識別するために降られた識別子のようなものです。
よく聞き慣れた単語である URL は Location なので、そのコンテンツの場所を示します。一般的には URI と URL は区別されず使われることが多いです。どちらもサーバ上のコンテンツの場所を示す、一意に定義されたものと言う理解で良いでしょう。
HTTP
では、サーバとクライアント間のコンテンツのやり取りの仕組みは理解できが、実際にどうやって通信されているのでしょうか。それを取り決めたものが 通信プロトコル
と言われます。サーバやクライアントが誕生した時期に、HTML や画像をやり取りするための通信方式として HTTP( Hyper Text Transfer Protocol )
が誕生しました。
つまり、前述したリクエストやレスポンスなどの通信にはこの HTTP通信
という通信方式で行われいます。
まとめ
最後に Web で行われる通信の流れについておさらいします。
- クライアント(ブラウザ)に URL を入力する。
- リクエストが HTTP 通信でサーバに送られる。
- サーバは URL でコンテンツの場所を把握し、その場所にある HTML などのコンテンツをレスポンスとしてクライアントに送信する。
Web の歴史を遡って、仕組みを理解することに焦点を当ててみました。
その古い時代から CGI や Web アプリケーションがどんどんと進化していく流れになりますが、本質的なところを理解することが重要です。本質的な仕組みを掴んでおくと今後新たな技術へと発展したとしても理解に苦しむことが減るのではないでしょうか。
参考
Discussion