APサーバ(アプリケーションサーバ)の役割とは、いったい何なのでしょうか?
実は、Webエンジニアのなかにも「APサーバ」を知らない方はたくさんいます。
特に、PHPしか触ったことがないエンジニアに非常に多いです。
PHPで作ったアプリケーションは「APサーバ」を必要としないので、知らなくて当然といえば当然。理由はのちほど。
そんな、言語によっては使わないAPサーバですが、エンジニアなら絶対に知っておくべきだと思うので紹介しておきます。
もくじ
APサーバの役割とは
APサーバ(アプリケーションサーバ)とは、アプリケーションを実行するためのサーバです。
「アプリケーション」というのは、プログラマーが作ったプログラムのことですね。
つまり、プログラミングして作ったアプリケーションを動かすには、APサーバが必要ってことなんです。
下の図を見てもらえるとわかりますが、APサーバは「Webサーバ」と「DBサーバ」の間に位置しています。
- 「Webサーバ」からのリクエスト(要求)を「APサーバ」が受け取る
- 受け取ったリクエストに応じて、アプリケーションを実行
- アプリケーションからDBサーバを操作し、その結果を処理に組み込む
- 実行結果をWebサーバに渡す
APサーバは、Webサーバとセットで使うことがほとんどです。
必要であれば、DBサーバからデータを操作し、データの取得や検索、削除、更新などをおこないます。
ちなみに、上のようなシステムを「Web三層構造システム」っていいますよ。

APサーバとWebサーバの違い
WebサーバとAPサーバの違いで大きいのは、サーバを単体で使うことができるかどうかというところ。
動的コンテンツのない、静的コンテンツだけのサイトを公開するのであれば、APサーバを使わずともWebサーバ単体で実現することができます。
ですが、APサーバはアプリケーションを実行する機能しか持たないため、APサーバを単体で使うケースはほとんどありません。
- 動的コンテンツ…RubyやPHPなどのプログラム
- 静的コンテンツ…HTML、画像など
ただし、Webサーバ機能を備えているAPサーバ(PumaやTomcatなど)も存在します。
これは開発をスムーズにおこなえるよう、簡易的なWebサーバ機能が「おまけ」で付いているからです。
ただし、あくまでおまけ。多くの人が利用するような本番環境では、大量のアクセスに耐えられないので実用的ではありません。
APサーバにあるWebサーバ機能は、開発の補助的なものと理解しておきましょう。

APサーバの種類
APサーバにも、いくつかの種類があります。
- Puma(プーマ)
- Unicorn(ユニコーン)
- Apache Tomcat(アパッチ トムキャット)
ほかにもたくさんありますが、扱う言語によっても変わってきます。
Rubyであれば、「Puma」や「Unicorn」、Javaであれば「Tomcat」を使います。
ちなみに、PHPの場合はAPサーバを使う必要がありません。
なぜなら、Apache(Webサーバ)のモジュール(機能)を使うことで、簡単にAPサーバのような仕組みを導入できるからです。
つまり、APサーバの知識がなくても、Webサーバの知識さえあればサイトを公開できちゃうのが「PHP」なんです。
そして、僕がRubyをおすすめする理由の1つがここにあります。
Webエンジニアを名乗るのであれば、APサーバの仕組みをしっかり理解し、使いこなしてほしいんですよね。
多くの業務をこなしていくにつれ、色々な案件を担当することになり、採用された言語によっては「APサーバの知識」が必要になることもあります。
最初からRubyを触って慣れておけば、実際の現場で慌てなくて済みますよね。

APサーバの環境構築
APサーバもWebサーバ同様、Windowsではなく「Linux(リナックス)」に環境を構築することをおすすめします。
Web業界ではLinuxに環境を構築するのが一般的なので、勉強するときもLinuxに構築するほうが実用的なスキルを身につけられます。
Windowsのなかに「Vagrant」「VirtualBox」という仮想環境ツールを入れることで、簡単にLinuxを使えるようになりますよ。
ちなみに、Rubyから始める人は、「Ruby on Rails」というフレームワークに「Puma」というAPサーバが付属しているので、より簡単に試すことができます。

まとめ
- APサーバは、アプリケーションを実行するためのサーバ
- APサーバは、WebサーバとDBサーバの中間に位置する
- APサーバは、単体で使わない
- 簡易的な「Webサーバ機能」を備えているAPサーバもある
- どのAPサーバを選ぶかは、言語によって異なる
- APサーバを使いたいなら、Linuxに構築する
APサーバは、ほかのサーバと比べてあまり目立たないのですが、Webアプリを開発するうえで必要になることがほとんどです。
APサーバに対して、何か難しい対応をするといったことはないので、なんとなく概念だけでも掴んでもらえればOKだと思います。
次は「DBサーバの仕組み」を読んで、DBサーバについても学んでおきましょう!
またね、キツネ(@kitaaaa_kitsune)でした!
