ここまでの記事で作ったWebページは、自分のパソコンの中にあるファイルでした。ダブルクリックすれば開きますが、それを友人に見せようと思ってもURLを送ることはできません。
では、遠くにいる相手のブラウザーにページが表示されるまで、何が起きているのでしょうか。前回引いた「フロント/サーバー」の地図の上に、この流れを重ねていきます。
1. URLを入れてから画面が出るまで
ブラウザーにURLを入れてから画面が出るまでを、一本の線で追ってみます。
- ドメイン …
example.comのような住所を打ちます。 - DNS … その住所を、サーバーの実際の番号(IPアドレス)に変換します。
- リクエスト … その番号の相手に「このページをください」とお願いします。
- レスポンス … サーバーがHTMLを返してくれます。
- 組み立て … 返ってきたHTMLをブラウザーが読み、CSSで見た目を作り、JavaScriptで動かします。
体感では一瞬ですが、この5段階は毎回きちんと踏まれています。以下、順に見ていきます。
2. ドメインとDNS ― 名前を番号に変える電話帳
shigenoki.com のような文字列をドメインと呼びます。これは人間が覚えるための名前で、コンピュータ同士は実際には次のようなIPアドレスという番号でやりとりしています。
shigenoki.com → 104.21.32.1
名前から番号を調べる仕組みが DNS(Domain Name System) です。役割としては電話帳とまったく同じで、「名前は知っているが番号は知らない」という状態を埋めてくれます。
ブラウザーはURLを受け取ると、まずDNSに問い合わせて番号を手に入れます。ドメインを新しく取得したときにすぐ繋がらないことがあるのは、この電話帳に情報が行き渡るまで時間がかかるためです。
3. リクエストとレスポンス ― 「ください」「どうぞ」
番号が分かったら、ブラウザーはその相手にリクエストを送ります。中身はおおよそ「このパスのものをください」という短いお願いです。
GET /articles/how-your-page-reaches-users
Host: shigenoki.com
サーバーはそれを受け取り、レスポンスとしてHTMLを返します。
200 OK
Content-Type: text/html
<!DOCTYPE html>
<html lang="ja">
...
先頭の 200 は「うまくいった」という合図です。有名な 404 は「そんなページはない」、500 は「サーバー側で問題が起きた」を意味します。ページが真っ白になったとき、この番号を見るとフロントの問題かサーバーの問題かの見当がつきます。
4. ブラウザーが組み立てる
HTMLが返ってきた時点では、まだ文字が並んだテキストにすぎません。ここからはブラウザーの仕事です。
- HTMLを読んで、どこが見出しでどこが段落かという構造を組み立てます。
<link>や<img>を見つけるたびに、CSSや画像を追加で取りに行きます。- CSSを当てて見た目を決め、JavaScriptを実行して動きを与えます。
最初のHTML1枚で終わりではなく、必要なファイルを何度も取りに行っている、というのがポイントです。読み込みが遅いページというのは、たいていこの往復が多すぎるページです。
5. ローカルのファイルとの違い
自分のパソコンのindex.htmlと、インターネット上のページの違いは、実はこれだけです。
| ローカルのファイル | インターネット上のページ | |
|---|---|---|
| 開き方 | ダブルクリック | URLを入力 |
| アドレス | file:///Users/... から始まる |
https:// から始まる |
| 見られる人 | 自分だけ | 住所を知っている人なら誰でも |
| 置き場所 | 自分のパソコン | サーバー |
file:// と https:// の違いは、単に「どこから持ってきたファイルか」を表しています。この「サーバーに置く」という一手間が、のちの「実際にデプロイしてみる」の主題です。
6. 地図に対応づける
前回の「フロント/バック」の地図に、この一本道を重ねるとこうなります。
- DNSで住所を引き、サーバーに届き、HTMLが返るまで … インターネットの仕組みとサーバー(バック)側
- 返ってきたHTML・CSS・JavaScriptが動く … 利用者のブラウザー(フロント)側
「どこまでがサーバーの仕事で、どこからが自分のブラウザーの仕事か」を、この線の上で指させるようになれば十分です。表示が崩れているならブラウザー側、そもそもページが出てこないならサーバー側、と当たりを付けられるようになります。
まとめ
- URL → DNS → リクエスト → HTMLが返る → ブラウザーが組み立てる、という一本道。
- DNSは名前を番号に変える電話帳。
200/404/500は結果の合図。 - ローカルのファイルとの違いは「サーバーに置いてあるかどうか」だけ。
- 前の記事:「フロントエンドとバックエンドは何が違うのか」
- 次の記事:「サーバってなにをしている人か」
- HTMLについての詳しい説明:「HTMLの書き方」