このページの内容は前回「Bashを使ってみよう」を試した前提で進めます。
Webサーバーの役割
Webサーバーとは、以前解説したサーバーのうち、 私たちが普段使用している情報端末(コンピュータ、スマートフォンなど)上のWebブラウザ(Webクライアント)に対して、 Webページのデータを提供する役割を持つコンピュータ(または、その機能を持ったソフトウェア)です。
広く使われているWebサイトは、大雑把には下記のような仕組みで実現されています。
- ユーザーが、情報端末のWebブラウザ上でWebページを開く
- Webブラウザが、ユーザーに依頼されたWebページを提供しているWebサーバーを探索
- Webブラウザが、該当するWebサーバーに対して、Webページのデータを要求
- Webサーバーが、Webブラウザから要求されたWebページのデータをWebサーバー内で探索
- Webサーバーが、Webブラウザへ見つかったデータを送り返す
- Webブラウザが、Webサーバーから送り返されてきたデータを組み立ててユーザーに提示する
ここで、3.と5.における、WebサーバーとWebブラウザ間のやり取りは、HTTP (HyperText Transfer Protocol)という全世界共通なお約束に従って行われます。
また、5.で送り返されるデータも同様に、HTML (HyperText Markup Language)という全世界共通な言語で記述されています。
そのため、どんなメーカーのスマートフォンでも同じようにWebページを閲覧することができるのです。
Webアプリケーションとは?
ここで、ひとつの疑問にぶつかります。 Webサーバーとは、”Webブラウザから要求されたデータを探しだして送り返す”役割を持っていると説明しました。
しかし、西暦201x年を生きる私達が普段利用しているインターネットは、そんなに単純なものでしょうか。
少し考えるだけで、私達が享受している21世紀のインターネットは、 もっと便利で複雑な機能を持っているということがわかります。
- AmazonなどのECサイトで商品をカートに投入して購入をすると、商品が手元に配送されます
- GmailのようなWebメールサービスを開くと、PCやスマホのメールアプリと同様にメールの送受信を行うことができます
- わざわざWebサーバーにログインして黒い画面を弄らなくても、いまの気持ちをTwitterに投稿できます
などなど、これら21世紀の素敵なインターネットは、(例によって大雑把な説明ですが)下図のようなアーキテクチャで実装された Webアプリケーションによって実現しています。
前述のWebサーバーに加えて、下記の要素が増えました。
- WebAPサーバー(Webアプリケーションサーバー)
- DBサーバー(データベースサーバー)
これら2つのサーバーは連携して動作し、下記のような処理を行います。
- Webサーバーを介してWebブラウザからのリクエストを受けとり、リクエストに応じた処理を実行する
- ECサイトの場合:お客さんの注文を受け付けて、DBに受注情報を格納
- メールフォームの場合:ユーザがWebメール画面でメールを送信ボタンを押したら、サーバー側でメール送信処理を実行
- Twitterの場合:ユーザから投稿されたツイートをDBに格納
- 処理結果をWebサーバーを返して、Webブラウザに送ってもらう
- ECサイトの場合:ユーザに購入完了画面を表示
- メールフォームの場合:メール送信完了通知を表示
- Twitterの場合:ツイート完了したことを画面上に表示、タイムラインに投稿したツイートをのせる
このようなアーキテクチャを3層クライアントサーバシステムなどと呼んだりします。
Webサイト・Webサービスによっては、仕組みが多少異なっていたり、 もっと複雑怪奇な構成をとっていたりしていて一概示すことはできないのですが、 基本的にこのような3層構造をとっているケースは多いです。
WebサーバーとWebアプリケーションの基礎を何となくでも把握できたら、次は実際にサーバーを構築してみましょう。