前回、「サーバーが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つの組み合わせです。

  1. 本人確認 … このお願いは誰から来たのか(ログイン状態の確認)
  2. データの出し入れ … データベースから必要な情報を取り出す、書き込む
  3. 判断 … この人にこの情報を見せていいのかを決める
  4. 組み立て … 結果をHTMLやデータの形にして返す

「秘密を持てるのはサーバー側だけ」という話を前々回にしました。2番と3番が、まさに手元のブラウザーには任せられない仕事です。

5. 作ったページはどちらで公開できるか

ここまでの記事で作ってきたようなページは、静的で公開できます。中身が全員同じだからです。

そして静的な公開は、動的なものに比べて圧倒的に手軽です。無料で使える置き場所がいくつもあり、ファイルを置くだけで世界中から見られるようになります。次の記事で実際にやってみます。

一方、「その場で作って返す」側を自分で書くようになると、いよいよバックエンドの領域に入ります。そこではJavaScriptを含む言語でサーバーの振る舞いそのものを書くことになります。

まとめ

  • サーバーは頼まれたものを返してくれる人。ハードウェアとして特別なわけではなく、落とさずに返し続けるのが仕事。
  • そのまま返す静的サーバーと、その場で作って返す動的サーバーがある。
  • ログイン後の画面のように人によって違うものは、動的でしか作れない。
  • ここまでで作ったページは静的で公開できる。