Webエンジニアになるとプログラミングだけでなく、「Webサーバ(ウェブサーバ)」を触る機会も多くなります。
というか、メチャクチャ触ります。
それなのに「Webサーバって何?」だと、このさきちょっと不安ですよね。
そんなに難しいものではないので、サクッとWebサーバの仕組みを理解しちゃいましょう。
もくじ
Webサーバとは何か?
Webサーバとは、静的コンテンツ(HTMLファイルや画像など)や、動的コンテンツ(アプリケーション)を提供するサーバ(常駐プログラム)のことです。
そう、Webサイトを公開するために必要なソフトウェア(ミドルウェア)が、「Webサーバ」なんです。
どんなに頑張ってアプリケーションを作ったって、このWebサーバがなければシステムを公開することは絶対にできません。

Webサーバの仕組み
Webサーバの仕組みを理解するには、以下をしっかり覚えておく必要があります。
- サイトを公開するために「Webサーバ」が必要
- サイトを閲覧するために「Webクライアント」が必要
「Webクライアント」が出てきましたが、これはWebサーバにアクセスするために必要なソフトウェアのことです。
実はこのWebクライアント、みなさん毎日のように使っています。
そう、「ブラウザ」のことです。
- IE
- Edge
- Chrome
- Firefox
- Safari
これらすべて「Webクライアント」なんです。
ブラウザとは、Webサーバにアクセスするために作られたソフトウェアだったんですね。
では、この「Webクライアント」と「Webサーバ」の仕組み、流れを確認してみましょう。
- Webクライアント(ブラウザ)を使ってWebサイトにアクセスする
- Webクライアント(ブラウザ)からの要求(リクエスト)をWebサーバが受け取る
- Webサーバは、要求に対応した「HTML」や「画像」などのデータを探す
- Webサーバは、データをWebクライアント(ブラウザ)に渡す(レスポンス)
簡単にいうと、「ブラウザ」と「Webサーバ」間で、データのやりとりをしているだけです。
Web通信の仕組みをもっと詳しく知りたい方は、こちらの記事をどうぞ。

WebサーバとAPサーバの違い
Webサーバのほかに、「APサーバ(アプリケーションサーバ)」というものがあります。
これら2つのサーバは少し役割が似ているので、違いがわからないという方も多いと思います。
WebサーバとAPサーバの違いを簡単にまとめると
- 「Webサーバ」…「ブラウザ」からの要求に対して、「ブラウザ」にコンテンツを返す
- 「APサーバ」…「Webサーバ」からの要求に対して、「Webサーバ」にアプリケーションの実行結果を返す
サイトを公開する際に、必ずしもAPサーバが必要というわけではありません。
静的コンテンツ(HTMLや画像)なら、Webサーバだけでも公開できるからです。
ですが、アプリケーション(動的コンテンツ)を公開したい場合は、APサーバと連携しなくてはいけません。
APサーバについては、こちらの記事に詳しくまとめています。

Webサーバの種類
Webサーバにも色々と種類がありますが、とりあえず代表的な2つを覚えておけば問題ありません。
- Apache(アパッチ)
- Nginx(エンジンエックス)
この2つは、Webエンジニアなら必ず使うことであろう有名なWebサーバです。
どちらを使うかは案件によっても違いますが、仕組みはどちらも同じ。
僕の感覚としては、PHPならApache、RubyならNginxが多いですね。

Webサーバの環境構築はWindowsで作らない
さきほど紹介した「Apache」や「Nginx」などのWebサーバは、無料で使うことができます。
もし、勉強用にWebサーバを構築しようと考えているのであれば、必ずLinuxで環境構築するようにしてください。
というのも、Web業界では主にLinuxを使っていて、WindowsなどのほかのOSでの環境構築はあまり一般的ではないからです。
「Linuxなんて持ってないよ!」という方も安心してください。
「Vagrant(VirtualBox)」というツールを使えば、WindowsのなかにLinux環境を簡単に構築することができます。

まとめ
- Webサーバとは、Webクライアントからのリクエストを受け取り、結果を返すサーバ
- ブラウザは「Webクライアント」である
- WebサーバとAPサーバはまったく違う
- Webサーバの種類は、ApacheとNginxを覚えておけば安心
- Webサーバの環境構築は、Linuxで作ったほうが実用的
Webサーバについては、このくらい理解できていれば大丈夫。
あとは実際に使ったときに、調べながら覚えていけばいいと思います。
次は「APサーバの役割」ついて、もう少し詳しく見ていきましょう!
またね、キツネ(@kitaaaa_kitsune)でした!
