
ウェブアプリケーション(またはウェブアプリ)は、ウェブ技術を使用して作成され、ウェブブラウザを介して実行されるアプリケーションソフトウェアです。[ 1 ] [ 2 ]ウェブアプリケーションは1990年代後半に登場し、静的なウェブページとは対照的に、サーバーが要求に対する応答を動的に構築することを可能にした。[ 3 ]
Webアプリケーションは通常、 Webサーバーを介して配布されます。Webアプリケーションは、Webブラウザ、クライアントインターフェース、サーバーデータ間の通信に複数の異なる階層システムを使用します。各システムは機能が異なるため、それぞれ独自の用途があります。しかし、開発者は開発中に多くのセキュリティリスクを認識しておく必要があり、ユーザーデータを保護するための適切な対策が不可欠です。
ウェブアプリケーションは、多くの場合、ウェブアプリケーションフレームワークを用いて構築されます。シングルページアプリケーション(SPA)とプログレッシブウェブアプリ(PWA)は、スムーズなナビゲーション、オフラインサポート、高速なインタラクションなどの機能を備え、 ネイティブアプリと同様のユーザーエクスペリエンスを提供するウェブアプリケーションを作成するための2つのアーキテクチャアプローチです。
ウェブアプリケーションは多くの場合、リモートクラウド サービス上で完全にホストされ、それらのサービスへの常時接続を必要とすることがあり、Microsoft Windowsなどのオペレーティング システム用の従来のデスクトップ アプリケーションを置き換えることができるため、開発者がリモート サービスの使用に基づいて課金を厳密に制御できる権限と、データをリモートでホストすることによるベンダー ロックインを付与することで、サービスとしてのソフトウェアの運用が容易になります。 Chrome などの最新のブラウザは、すべてのブラウザ タブにサンドボックス機能を提供しており、セキュリティが向上し、ローカル リソースへのアクセスが制限されます。 アプリはブラウザ内で実行されるため、ソフトウェアのインストールは不要であり、ソフトウェア インストールの管理の必要性が軽減されます。 リモート クラウド サービスを使用すると、開発者とクラウド サービスに任せられるため、顧客はサーバーの管理を行う必要がなくなり、シンクライアントなどの比較的低電力で低リソースの PC でもソフトウェアを使用できます。レスポンシブ ウェブ デザインを使用すると、アプリケーションのソース コードは、Web 標準に準拠したウェブブラウザと互換性があればよいため、ユーザーのオペレーティング システムやデバイス間で同じままにすることができます。そのため、コードの移植性が高く、開発時間を節約できます。多数のJavaScript フレームワークとCSS フレームワークが開発を容易にします。
歴史
「ウェブアプリケーション」の概念は、1999年にリリースされたサーブレット仕様バージョン2.2でJava言語に初めて導入されました。当時、JavaScriptとXMLはすでに開発されていましたが、XMLHttpRequestオブジェクトはInternet Explorer 5でActiveXオブジェクトとして導入されたばかりでした。2000年代初頭頃から、「 Myspace(2003年)、Gmail(2004年)、Digg(2004年)、Googleマップ(2005年)」などのアプリケーションは、クライアント側をよりインタラクティブなものにし始めました。ウェブページのスクリプトは、ウェブページ全体をダウンロードすることなく、サーバーに接続してデータを保存/取得することができます。この手法は2005年にAjaxとして知られるようになりました。最終的に、これはJSONを使用したウェブAPIに置き換えられ、クライアント側で JavaScriptを介して非同期にアクセスされました
クライアント サーバーなどの以前のコンピューティング モデルでは、アプリケーションの処理負荷は、サーバー上のコードと各クライアントにローカルにインストールされたコードの間で共有されていました。言い換えると、アプリケーションには、ユーザー インターフェイスとして機能する独自のコンパイル済みクライアント プログラムがあり、各ユーザーのパーソナル コンピュータに個別にインストールする必要がありました。アプリケーションのサーバー側コードをアップグレードすると、通常、各ユーザーのワークステーションにインストールされているクライアント側コードもアップグレードする必要があり、サポートコストが増加し、生産性が低下しました。さらに、アプリケーションのクライアント コンポーネントとサーバー コンポーネントはどちらも特定のコンピュータ アーキテクチャとオペレーティング システムに密接に結び付けられていたため、大規模なアプリケーションを除き、他のシステムに移植するには法外なコストがかかりました。
その後、1995年にNetscapeはJavaScriptと呼ばれるクライアントサイドスクリプト言語を導入しました。これにより、プログラマーはクライアント側で実行されるユーザーインターフェースに動的な要素を追加できるようになりました。基本的に、Webページ全体を生成するためにサーバーにデータを送信するのではなく、ダウンロードされたページに埋め込まれたスクリプトで、入力検証やページの一部を表示/非表示にするなど、さまざまなタスクを実行できます。
「プログレッシブ ウェブ アプリ」は、2015 年にデザイナーのフランシス ベリマン氏とGoogle Chromeエンジニアのアレックス ラッセル氏によって造られた用語で、最新のブラウザーでサポートされている新機能を活用したアプリを指します。これらのアプリは、最初は Web ブラウザーのタブ内で実行されますが、後に完全にオフラインで実行できるようになり、ブラウザーにアプリの URL を入力しなくても起動できるようになります。
構造
従来の PC アプリケーションは通常、単層で、クライアント マシン上にのみ存在します。これに対して、Web アプリケーションは本質的に多層アーキテクチャを促進します。多くのバリエーションが可能ですが、最も一般的な構造は3 層アプリケーションです。最も一般的な形式では、3 層は、プレゼンテーション、アプリケーション、およびストレージと呼ばれます。最初の層であるプレゼンテーションは、Web ブラウザー自体を指します。2 番目の層は、動的 Web コンテンツ テクノロジを使用するエンジン ( ASP、CGI、ColdFusion、Dart、JSP/Java、Node.js、PHP、Python 、 Ruby on Railsなど) を指します。3 番目の層は、データを保存し、ユーザー インターフェイスの構造を決定するデータベースを指します。基本的に、3 層システムを使用する場合、Web ブラウザーはエンジンにリクエストを送信し、エンジンはデータベースに対してクエリと更新を実行してリクエストを処理し、ユーザー インターフェイスを生成します。
3層ソリューションは、より複雑なアプリケーションを扱う際には不十分となる可能性があり、n層アプローチに置き換える必要があるかもしれません。n層アプローチの最大の利点は、ビジネスロジック(アプリケーション層に存在)をより細分化されたモデルに分割できることです。[ 4 ]もう1つの利点は、データ層を分離し、データにアクセスするための使いやすいインターフェースを提供する統合層を追加することです。[ 4 ]例えば、クライアントデータにアクセスするには、データベース上のクライアントテーブルに対して直接SQLクエリを実行するのではなく、「list_clients()」関数を呼び出す必要があります。これにより、他の層に変更を加えることなく、基盤となるデータベースを置き換えることができます。[ 4 ]
ウェブアプリケーションを2層アーキテクチャと捉える人もいます。これは、すべての処理を実行し「ダム」サーバーにクエリを実行する「スマート」クライアント、または「スマート」サーバーに依存する「ダム」クライアントのいずれかです。[ 4 ]クライアントはプレゼンテーション層を担当し、サーバーはデータベース(ストレージ層)を持ち、ビジネスロジック(アプリケーション層)はどちらか一方、または両方に配置されます。[ 4 ]これによりアプリケーションのスケーラビリティが向上し、ディスプレイとデータベースが分離されますが、それでもレイヤーの真の特化は実現されないため、ほとんどのアプリケーションはこのモデルでは対応しきれなくなります。[ 4 ]
安全
このようなアプリケーションにおけるセキュリティ侵害は、企業情報と顧客の個人情報の両方が影響を受ける可能性があるため、大きな懸念事項です。これらの資産の保護はあらゆるWebアプリケーションにとって重要な部分であり、開発プロセスに組み込むべき重要な運用領域がいくつかあります。[ 5 ]これには、認証、認可、資産管理、入力、ログ記録と監査のプロセスが含まれます。アプリケーションに最初からセキュリティを組み込む方が、長期的にはより効果的で、混乱が少ない場合があります。
開発
ウェブアプリケーションフレームワークを使用することで、ウェブアプリケーションの作成が簡素化されます。これらのフレームワークにより、開発チームはユーザー管理などの一般的な開発上の問題を解決する必要がなく、アプリケーションの目標に固有の部分に集中できるため、迅速なアプリケーション開発が可能になります。[ 6 ]
さらに、インターネット オペレーティング システム上でアプリケーションを開発できる可能性もありますが、現時点ではこのモデルに適合する実行可能なプラットフォームは多くありません。
参照
参考文献
- ^ 「ウェブアプリ|定義、歴史、開発、例、用途、および事実|ブリタニカ」 www.britannica.comブリタニカ百科事典2024年11月4日閲覧
- ^ 「Webアプリとは? - Webアプリケーションの説明 - AWS」 Amazon Web Services, Inc. 2024年11月4日閲覧。
- ^ 「Webアプリケーション」 . DocForge . 2015年4月19日時点のオリジナルよりアーカイブ。2024年11月9日閲覧。
- ^ a b c d e f Petersen, Jeremy (2008年9月4日). 「Webアプリケーションにn層アプローチを使用する利点」 . 2017年12月1日時点のオリジナルよりアーカイブ。2017年11月24日閲覧。
- ^ 「安全なアプリ開発のためのヒント」 Dell.com。2012年5月22日時点のオリジナルよりアーカイブ。2012年6月22日閲覧。
- ^複数 (wiki). 「Webアプリケーションフレームワーク」 . Docforge . 2020年6月20日時点のオリジナルよりアーカイブ。2010年3月6日閲覧。
外部リンク
- HTML5ドラフト勧告、Webベースのアプリケーションの作成を容易にするためのHTMLおよび関連APIの変更
- ワールドワイドウェブコンソーシアム(W3C)のWebアプリケーションワーキンググループ
- Google Developersによる Web.dev の PWA。