WEBアプリケーションとは、WEBの仕組みを利用したアプリケーションのことです。一般的なコーポレートサイトやブログサイトなどとは異なり、
高度な機能を持ったWEBサイトです。WEBアプリケーションを開発するにはHTMLだけではなくWEBプログラムを利用するためフレームワークを利用します。
他のWEBアプリケーション機能が共有されているものを利用するために「WEB API」を利用することもあります。
WEBアプリケーション、WEBサービス、WEBサイト、WEBシステムの違い
「WEBページ」とは、WEB上にある文書のことです。特定のドメイン配下にあるWEBページの集合体が「WEBサイト」です。
WEBサイトの表紙にあたるページはトップページと言います。「ホームページ」とはWEBブラウザを起動したときに最初に表示されるWEBページのことですが、
現在ではWEBサイトのことを指して使われることが多いです。WEBを介して利用するサービスを提供するのが「WEBアプリケーション」です。WEBアプリケーション開発の
プログラムで利用されるAPIなどが「WEBサービス」と言います。WEBサイトやWEBアプリケーション、WEBサービスを提供される仕組みが「WEBシステム」となります。
クラウドサービスでも同じ仕組みで提供されており「WEBシステム」は「IaaS」、「WEBサービス」は「PaaS」、
「WEBサイト」「WEBアプリケーション」は「SaaS」のように分類できます。
WEBアプリケーションの例
WEBアプリケーションはWEBサイトとは異なり多機能で、コメントやデータ加工や動画視聴、ECサイトのような商品購入、銀行のようなお金の振込みなどができるインタラクティブ(双方向)なサービスを受けることが出来るWEBサイトのことです。具体例としてはYoutube、twitter、各種ネットバンキング、各種ECサイト、各種飲食店の予約サイトなどがあげられます。例えばユーザはWEBアプリケーションを通じて次のような体験をすることが出来ます。
WEBアプリケーションを通じて商品購入
- Goolge検索で欲しい商品を探していたらYoutubeで商品開封レビューをしていたので動画視聴をしてチャンネル登録した。
- Amazonで販売しているのを発見しレビューやコメントが好評であるのを見たので購入をした。
- 購入した商品を利用している情報をtwitterで発見しアカウントをフォローした。>
- 購入後Amazonレビューにコメントしたらギフト券が当選した。
- その後twitterでフォローしたアカウントが関連商品をYotubeの動画で開封レビューを紹介しているツイートを発見したので視聴した。
- 動画視聴したYoutubeチャンネルが購入した商品を紹介しているチャンネルと同じだった。
- Amazonで販売されているのを発見すると関連商品に購入した商品が紹介されていた。
- Amazonで当選したギフト券を利用してAmazonで購入した。
インタラクティブはWEBアプリケーションを通じて、ユーザ間でデータを対話するような形式でやり取りや操作をすることで、情報を提供し合うような役割をします。また各種アカウントフォローすることやECサイトでお気に入り登録や購買をすることで、投稿主や事業者がユーザ自身の興味がある内容を提供する傾向があります。これは継続的にユーザ自身に属性・行動データ履歴といったデータを基に顧客ニーズを把握し、適切な商品・サービスなどを提供する手法(パーソナライズ)を重視していることで、近年のインターネットサービスで採用し流行していことも特徴です。
WEBアプリケーション開発
WEBアプリケーション開発には、PHPやRuby,Python、Javaなどのプログラミング言語が多く利用されています。WEBアプリケーションを動作せる方法としては、昔から使われている手法にCGI(Common Gateway Interface)があります。CGIはWEBサーバからプログラムを実行するためのインターフェイスで、静的なWEBサイトから動的なWEBアプリケーションを呼び出すことができます。ただし毎回プロセスを起動するため、少し時間がかかってしまいます。そこで、最近ではWEBサーバ内のプロセスでWEBアプリケーションを実行する方法が用いられていることが増えてきており、比較的高速な実行が可能で、サーバにかかる負荷も低くなります。
WEBアプリケーションの3層構造
WEBアプリケーションは基本的に3層構造(3層アーキテクチャ)と呼ばれる階層構造になっています。この3層構造はユーザインターフェイスとなる「プレゼンテーション層」、業務処理を行う「アプリケーション層」、データ処理や保管を行う「データ層」に分類されます
プレゼンテーション層
プレゼンテーション層のクライアントサイドは、WEBブラウザに表示させる役割をします。またクライアントサイドスクリプト(フロントエンド)ではHTMLやCSSや画像でUI(ユーザインターフェイス)を表示させるだけではなく、javascriptなどを用いて「振る舞い」を表現しユーザにUX(ユーザエクスペリエンス)を提供します。サーバサイドは「WEBサーバ」が「ユーザへの表示、ユーザへの表示受付」の役割をし、クライアントからのリクエストをレスポンスで返します。またWEBアプリケーションの改修の際、表示レイアウトのみ改修を実施するときはプレゼンテーション層のユーザに見える部分のフロントエンドやWEBサーバと通信をするサーバプログラムの修正で、他の層に影響を与えること無く作業を切り分けできる点でもメリットがあります。
アプリケーション層
アプリケーション層は「APサーバ」(小規模であれば「AP兼WEBサーバ」)で「ユーザからの命令実行、表示画面の作成」を担います。また「WEB API」では開発で利用する為のプログラムサーバとの通信で「プログラムのインターフェイス(窓口)」としての働きもします。「サーバサイドスクリプト(バックエンド)」のプログラムで、ユーザには直接見えない部分(バックエンド)の機能をを制御します。WEBアプリケーションのAPI実装・連携や公開するためのWEB API開発ではAPサーバを中心としたアプリケーション層でプログラム開発するためAPI機能によっては両サイドの層(プレゼンテーション層、データ層)にも影響は及びますが、作業の切り分けが明確にできるため開発コストを抑えることができることもメリットです。
データ層
データ層は「DBサーバ(小規模であればDB兼WEBサーバ)」で「データの抽出、データの更新、データの保管」を担います。データベースを制御するプログラム(SQL文など)を利用して、アプリケーション層であるバックエンドと連動します。データ層はアプリケーション3層構造の中で、ユーザ(クライアント)から見て一番奥に存在します。WEBアプリケーションのデータベース改修では、プレゼンテーション層やアプリケーション層に影響を与えること無く実施できるため、改修コストを抑えることが出来ることもメリットです。
WEBアプリケーションのシステム構成
WEBアプリケーションのシステム構成は「WEBサーバ」「アプリケーションサーバ」「データベース」のサーバが主役として稼働しています。ネットワーク機器であれば「ゲートウェイ」「ルータ」「スイッチ」「ブリッジ」「ロードバランサ」などネットワークを制御するためにサーバと接続をして通信をしています。以下は各サーバについて具体的に説明します。
WEBサーバー
WEBサーバの役割は、WEBクライアント(ユーザ)に対する窓口です。WEBアプリケーション層(3層構造)の一番手前に位置しアプリケーション層のサーバと連携しています。WEBアプリケーション、WEBサイトを稼働するには必ず必要なサーバでどのWEBサイトにも存在するサーバです。
アプリケーションサーバー
アプリケーションサーバ(APサーバ)はWEBアプリケーションの中核となる業務処理を行うプログラムを処理するサーバです。サーバサイドのプログラムを実行することで、データを加工したり、データベースのデータを検索・加工後WEBサーバに応答を返します。
データベース
WEBアプリケーションで稼働するデータベースは管理するために「データベース管理システム(DBMS)」が役割を担います。主にアプリケーションサーバからデータの検索や更新命令を受け、それに従ってデータの管理を実行します。DBMSを搭載したサーバ機器を一般的には「データベースサーバ(DBサーバ)」と呼びます。