前回までの記事では、MySQLを単独で利用しながら、リレーショナルデータベースについて学んできました。ここからは、MySQLを使用したWebアプリケーションの開発方法について見ていきます。
検索エンジンや通販サイト、インターネットバンキングなどさまざまなWebアプリケーションがインターネット上に存在しますが、それらのWebアプリケーションを利用するとき、利用者が直接、SELECTやINSERTなどのSQLを実行することはありません。そもそもデータベースの存在を意識することすらないでしょう。しかし、Webアプリケーションにデータベースは欠かせない存在であり、ほぼ全てのWebアプリケーションで、データベースが使われています。
データベースはある意味、「裏方」であり、表で目立っているのがWebアプリケーションというわけです。
Webアプリケーションとは
そもそもWebアプリケーションとは何でしょう。その定義を一言で表すと、「インターネットなどのネットワークを介して使用するWebの技術を利用して開発されたアプリケーションソフトウェア」となります。
「Webの技術」とはつまり、Internet ExplorerやFire FoxなどのWebブラウザからURLを入力し、Webサーバーから文書や画像、音楽、動画などのコンテンツを取得し、閲覧するための一連の仕組みのことです。
例えば、Amazonなどの通販サイトで商品を検索するときに、検索ボックスに商品名を入力して、検索ボタンをクリックすると、その商品や関連商品の情報が一覧に表示されます。この仕組みの中身を少しのぞいて見ると、「検索ボックスに商品名が入力されると、サーバー側ではその商品名を検索するSQL文をデータベースに発行し、その結果を利用者に返す。」というような動きになるわけです。
アプリケーションサーバーとは
(Web)アプリケーションサーバーとは、Webアプリケーションを実行するための機能を提供しているソフトウェアのことです。
ユーザからのリクエストを受け付けて、業務プログラムの実行を制御したり、DBMS(データベース管理システム)などのリソースマネージャーとの接続機能など様々な機能を持っています。
Webアプリケーションを動かす上で必要となる様々な共通機能を提供してくれる便利な入れ物がアプリケーションサーバーであると考えれば、わかりやすいでしょうか。 以前の記事で、「データベースの操作についての細かい制御は専用の担当者に任せてしまおうという発想のもと生まれたものがDBMSである」と書きましたが、その考え方とまったく同じです。
もちろん、自身で1から全ての機能を実装すれば、アプリケーションサーバーなんて使わなくても良いわけですが、それは大変であり、Webアプリケーションを作成する度に毎回同じ機能を実装していては時間の無駄です。また、採用実績が多ければ多いほど品質が上がっていくのが道理なので、みんなが使っているアプリケーションサーバーの上で、Webアプリケーションを動かすことが、より高い品質、信頼性を得ることにつながるというわけです。
アプリケーションサーバーは、オープンソースなものから商用製品まで多数存在しており、開発するエンジニアやメーカー各社は、より高機能で高価値なアプリケーションサーバーの完成を目指してしのぎを削っています。
代表的なものを以下に記します。
| 製品名 | 開発元 |
|---|---|
| Internet Information Services (IIS) | マイクロソフト |
| Apache Tomcat | Apache Software Foundation |
| Red Had JBoss | レッドハット |
| GlassFish | オラクル(サン・マイクロシステムズ) |
| IBM WebSphere Application Server | IBM |
| Oracle WebLogic Server | オラクル |
| uCosminexus Application Server | 日立製作所 |
言い換えると、Webアプリケーションを実行するため機能さえあれば、それはアプリケーションサーバーであると言えるわけですが、その機能のためのフレームワークは多数存在しています。
例えば、マイクロソフト IISはASP.NET、
TomcatやJBoss、WebSphere、WebLogic、uCosminexusは、
サンマイクロシステムズ(現Ocale)の策定する仕様である
Java Platform Enterprise Edition(略称Java EE or J2EE)に
準拠したアプリケーションサーバーになります。
他にも、PHPやColdFusionなどのフレームワークもあり、例えば、IISでPHPを使うといったこともできます。
