前回、「サーバーがHTMLを返してくれる」と書きました。では、そのサーバーとは具体的に何をしている相手なのでしょうか。
「サーバー」と聞くと、データセンターに並んだ黒い機械の写真が浮かぶかもしれません。ですが、Web開発で言うサーバーの正体は、もっと素っ気ないものです。
1. サーバーは「頼まれたものを返してくれる人」
いちばん素朴なサーバーは、頼まれたファイルを渡してくれる人です。「このページください」と言われたら、対応するHTMLファイルをそのまま返す。それだけです。
受付に人が座っていて、「3番の書類をください」と言われたら棚から3番を出して渡す。違うのは、それを1秒間に何百回もやることと、24時間その席を離れないことだけです。
2. ただのパソコンと何が違うのか
実は、ハードウェアとしては特別なものではありません。あなたのパソコンも、その気になれば今日からサーバーになれます。違いは扱い方のほうです。
| 手元のパソコン | サーバー | |
|---|---|---|
| 電源 | 使うときだけ点ける | 基本的に落とさない |
| 画面 | 付いている | 付いていないことが多い |
| 操作 | マウスとキーボード | ネットワーク越しに文字で命令する |
| 住所 | 変わることがある | 固定の住所(IPアドレス)を持つ |
| 仕事 | あなたの作業 | 頼まれたものを返し続ける |
「サーバーを借りる」というのは、この条件を満たしたコンピュータの一区画を、月いくらで貸してもらうということです。ターミナルで文字を打って操作するのは、画面がない相手と会話する方法がそれしかないからです。
3. そのまま返すか、その場で作るか
サーバーの振る舞いは、大きく2種類に分かれます。ここが、この記事でいちばん大事なところです。
静的(そのまま返す)
あらかじめ用意したHTMLファイルを、そのまま返します。誰が来ても、いつ来ても同じものが返ります。
/about → about.html をそのまま返す
/articles/01 → 01.html をそのまま返す
動的(その場で作って返す)
リクエストを受け取ってから、中身を組み立てて返します。人によって、時間によって違うものが返ります。
/mypage → 「誰からのお願いか」を確認し、
その人のデータを取り出し、
HTMLを組み立ててから返す
ログイン後に自分の名前が出るページ、カートの中身、通知の数。こうしたものは全部、その場で作られています。あらかじめ全員分のHTMLを用意しておくことは不可能だからです。
4. その場で作るときに何をしているか
動的サーバーの仕事を、もう少し細かく開いてみます。おおよそ次の4つの組み合わせです。
- 本人確認 … このお願いは誰から来たのか(ログイン状態の確認)
- データの出し入れ … データベースから必要な情報を取り出す、書き込む
- 判断 … この人にこの情報を見せていいのかを決める
- 組み立て … 結果をHTMLやデータの形にして返す
「秘密を持てるのはサーバー側だけ」という話を前々回にしました。2番と3番が、まさに手元のブラウザーには任せられない仕事です。
5. 作ったページはどちらで公開できるか
ここまでの記事で作ってきたようなページは、静的で公開できます。中身が全員同じだからです。
そして静的な公開は、動的なものに比べて圧倒的に手軽です。無料で使える置き場所がいくつもあり、ファイルを置くだけで世界中から見られるようになります。次の記事で実際にやってみます。
一方、「その場で作って返す」側を自分で書くようになると、いよいよバックエンドの領域に入ります。そこではJavaScriptを含む言語でサーバーの振る舞いそのものを書くことになります。
まとめ
- サーバーは頼まれたものを返してくれる人。ハードウェアとして特別なわけではなく、落とさずに返し続けるのが仕事。
- そのまま返す静的サーバーと、その場で作って返す動的サーバーがある。
- ログイン後の画面のように人によって違うものは、動的でしか作れない。
- ここまでで作ったページは静的で公開できる。
- 前の記事:「作ったページが相手に届くまで」
- 次の記事:「実際にデプロイしてみる」
- 用語の整理:「エンジニアのわけのわからない横文字集」