ウェブアプリケーション(Web Application)とは
ウェブアプリケーション(Web application、以下Webアプリ)は、
World Wide Web(WWW)の技術を基盤とした
アプリケーションソフトウェアです。Webブラウザを通じて利用する点が特徴で、私たちの生活に欠かせない存在となっています。
Webアプリの仕組み
Webアプリの基本的な動作は以下の通りです。
1. WebブラウザがHTTPプロトコルを用いて
Web[[サーバ]]ーからHTMLファイルを取得し、表示します。
2.
JavaScriptがDOM(Document Object Model)を操作して、Webページの内容を動的に変化させます。
3. 必要に応じて
Web[[サーバ]]ーと通信を行い、データの更新や処理を行います。
この仕組みはあくまで一例であり、様々な技術を組み合わせてWebアプリを開発できます。Webアプリの明確な定義は存在せず、動的な
ウェブページとの差異は不明瞭な部分もあります。
Webアプリの例
Webアプリは、私たちの身近な場所にたくさん存在します。
ウィキやブログ
電子掲示板
インターネットバンキング
オンライントレード
オンラインショッピングサイト
これらのサービスはすべて、Webブラウザを通して利用できるWebアプリです。
Webアプリと他のアプリケーションの違い
Webアプリに対して、ローカル環境で動作するアプリケーションは、デスクトップアプリケーションやスタンドアロンアプリケーションと呼ばれます。スマートフォンで動作するアプリケーションは、ネイティブアプリと呼ばれます。
Webアプリはクライアント-サーバモデルを基本とし、WWWを基盤とする分散コンピューティングの一形態と捉えることもできます。
Webアプリの特徴
メリット
更新が容易: Web[[サーバ]]ー上のファイルを更新するだけで、クライアント側は常に最新のWebアプリを利用できます。
インストール不要: Webブラウザがあれば、Webアプリをインストールする必要はありません。
環境に依存しない: Webブラウザがあれば、異なるOSやデバイスでもWebアプリを利用できます。
デメリット
Webアプリの発展に伴い、新たな課題も生まれています。
メディア再生の課題: 以前はWeb標準機能でメディア再生が困難でしたが、HTML5の登場により解決されました。
オフラインでの利用: Web[[サーバ]]障害時や通信途絶時には利用できませんでしたが、PWA(Progressive Web App)技術によりオフラインでの動作も可能になりつつあります。
実行速度: ネイティブアプリと比較して、実行速度が遅い傾向にありましたが、WebAssembly技術により改善されつつあります。
Webアプリの歴史
1990年のWWW登場後、Webアプリは長年にわたり技術開発が進められてきました。
当初は静的なWebサイトが中心でしたが、CGIの登場により動的なコンテンツ生成が可能になり、Webアプリが登場しました。その後、Java Servlet、PHP、ASPなどの技術が登場し、Ajax、Flash、HTML5などの技術革新を経て、現在に至ります。
近年では、PWAのようなネイティブアプリに近い体験を提供できる技術が開発されています。また、クラウドコンピューティングの発展により、フルマネージドクラウドサービスを利用したWebアプリ開発も一部で可能になっています。
Webアプリの技術要素
Webアプリでは、伝統的にHTTPが通信プロトコルとして利用されています。HTTPはステートレスなプロトコルであるため、セッション管理にはCookieなどが用いられます。近年ではセキュリティの観点から、HTTPSが推奨されています。また、リアルタイム通信にはWebSocketやWebRTCが利用されます。
プログラミング言語
Webアプリは特定の言語に縛られず、開発者が自由に言語を選択できます。フロントエンドではJavaScriptが主流ですが、TypeScriptやWebAssemblyなども利用可能です。
HTML
Webアプリの規模拡大に伴い、HTMLのモジュール化が必要になり、Web Components技術によってHTMLの分割が可能になりました。
また、DOMを介した手続き型プログラミングだけでなく、宣言型プログラミングやtemplatingによる記述も行われるようになっています。
DOM
WebブラウザはDOMを介してドキュメントへのアクセスを可能にします。DOMの更新速度が問題になることもあり、仮想DOMやDOM templatingなどの技術が登場しています。
キャッシュ・同期
Webアプリでは、クライアント側やサーバー側でキャッシュが用いられます。キャッシュは高速な動作やオフライン動作に有効ですが、同期の問題も抱えています。差分同期(delta sync)などの技術を利用することで、リソースを節約しながら最新状態を維持できます。
従来のID・パスワードによる認証に加え、トークンベースの手法やクラウドサービスを利用した認証・認可が一般的になってきています。
データバインディング
データ更新に伴うUIの更新や、UI操作によるデータ更新を自動化するデータバインディングは、Reactなどのフレームワークによって実現されています。
データアクセス
Webアプリでは、データベースなどの外部データにアクセスすることが一般的です。fetch APIを基礎として、RESTやGraphQLなどのデータアクセス方式が利用されています。
Webアプリのアーキテクチャ
Webアプリは、機能の複雑化に対応するため、様々なアーキテクチャが利用されています。分散コンピューティングとしての側面を持つため、サービス指向アーキテクチャ、マイクロサービス、マイクロフロントエンドなどが用いられます。
これらのアーキテクチャは、機能を独立したサービスとして扱い、連携によって大きな機能を実現します。これにより、機能の変更が容易になり、複雑性を低減できます。
機能による分類
メディア: Web標準で、動画や音声の再生・制御が可能です。
オフライン: Webアプリをオフラインでも動作させるためには、ローカルにプログラムを保存したり、ネットワークリクエストの失敗に対応したり、オンライン復帰時に同期したりする必要があります。オフラインファーストの思想も重要です。
まとめ
Webアプリは、インターネットを通じて利用できる便利なソフトウェアです。常に進化しており、私たちの生活に欠かせない存在となっています。
関連項目
サーバ・クライアント
ウェブブラウザ
Web[[サーバ]]
クラウドコンピューティング
HTML
HTTP
Webアプリケーションフレームワーク
リッチインターネットアプリケーション
Ajax
マッシュアップ
HTML5
シングルページアプリケーション(SPA)
アプリケーションサービスプロバイダ(ASP)