
ウェブアプリケーション(またはウェブアプリ)は、ウェブ技術で作成され、ウェブブラウザを介して実行されるアプリケーションソフトウェアです。[ 1 ] [ 2 ]ウェブアプリケーションは1990年代後半に登場し、静的なウェブページとは対照的に、サーバーがリクエストに対して動的に応答を構築できるようにしました。[ 3 ]
ウェブアプリケーションは一般的にウェブサーバーを介して配信されます。ウェブアプリケーションは、ウェブブラウザ、クライアントインターフェース、サーバーデータ間の通信に、いくつかの異なる階層システムを使用します。各システムはそれぞれ異なる方法で機能するため、独自の用途があります。しかし、開発者は開発中に多くのセキュリティリスクを認識しておく必要があります。ユーザーデータを保護するための適切な対策は不可欠です。
ウェブアプリケーションは、多くの場合、ウェブアプリケーションフレームワークを使用して構築されます。シングルページアプリケーション(SPA)とプログレッシブウェブアプリ(PWA)は、スムーズなナビゲーション、オフラインサポート、高速な操作性など、ネイティブアプリと同様のユーザーエクスペリエンスを提供するウェブアプリケーションを作成するための2つのアーキテクチャアプローチです。
Webアプリケーションは多くの場合、リモートのクラウドサービス上で完全にホストされ、クラウドサービスへの常時接続が必要となる場合があり、Microsoft Windowsなどのオペレーティングシステムの従来のデスクトップアプリケーションを置き換えることができます。これにより、開発者はリモートサービスの使用に基づいて課金を厳密に制御できるだけでなく、データをリモートでホストすることでベンダーロックインを回避できるため、サービスとしてのソフトウェアの運用が容易になります。Chromeなどの最新のブラウザは、ブラウザタブごとにサンドボックス機能を提供し、セキュリティを向上させ、ローカルリソースへのアクセスを制限します。アプリはブラウザ内で実行されるため、ソフトウェアのインストールは不要で、ソフトウェアのインストール管理の必要性が軽減されます。リモートのクラウドサービスを利用することで、顧客はサーバーを管理する必要がなく、サーバー管理は開発者とクラウドサービスに任せることができ、シンクライアントなどの比較的低電力でリソースの少ないPCでソフトウェアを使用できます。レスポンシブWebデザインを使用することで、アプリケーションのソースコードは、Web標準に準拠したWebブラウザと互換性があるだけでよいため、ユーザーのオペレーティングシステムやデバイス間で同じままにでき、コードの移植性が高く、開発時間を節約できます。数多くのJavaScriptフレームワークとCSSフレームワークが開発を容易にする。
歴史
「Webアプリケーション」の概念は、1999年にリリースされたJava言語のサーブレット仕様バージョン2.2で初めて導入されました。当時、JavaScriptとXMLは既に開発されていましたが、XMLHttpRequestオブジェクトはInternet Explorer 5でActiveXオブジェクトとして導入されたばかりでした。 2000年代初頭頃から、「 Myspace(2003年)、Gmail(2004年)、Digg(2004年)、Google Maps(2005年)」などのアプリケーションが、クライアント側をますますインタラクティブにし始めました。Webページのスクリプトは、Webページ全体をダウンロードすることなく、サーバーに接続してデータを保存/取得できます。この手法は2005年にAjaxとして知られるようになりました。最終的に、これはJSONを使用したWeb APIに置き換えられ、クライアント側でJavaScriptを介して非同期的にアクセスされるようになりました。
クライアント/サーバー型などの初期のコンピューティングモデルでは、アプリケーションの処理負荷はサーバー上のコードと各クライアントにローカルにインストールされたコードの間で分担されていました。つまり、アプリケーションには独自のプリコンパイル済みクライアントプログラムがあり、これがユーザーインターフェースとして機能し、各ユーザーのパーソナルコンピュータに個別にインストールする必要がありました。アプリケーションのサーバー側コードをアップグレードすると、通常、各ユーザーのワークステーションにインストールされているクライアント側コードもアップグレードする必要があり、サポートコストが増加し、生産性が低下しました。さらに、アプリケーションのクライアントコンポーネントとサーバーコンポーネントの両方が特定のコンピュータアーキテクチャとオペレーティングシステムに密接に結びついていたため、大規模なアプリケーションを除いて、他のシステムに移植するには莫大な費用がかかりました。
その後、1995年にNetscapeはJavaScriptと呼ばれるクライアントサイドスクリプト言語を導入しました。これにより、プログラマーはクライアント側で実行されるユーザーインターフェースに動的な要素を追加できるようになりました。基本的に、ウェブページ全体を生成するためにデータをサーバーに送信する代わりに、ダウンロードされたページに埋め込まれたスクリプトが、入力値の検証やページの一部を表示/非表示にするなど、さまざまなタスクを実行できます。
「プログレッシブウェブアプリ」とは、2015年にデザイナーのフランシス・ベリマンとGoogle Chromeのエンジニアであるアレックス・ラッセルによって考案された用語で、最新のブラウザがサポートする新機能を活用したアプリを指します。これらのアプリは最初はウェブブラウザのタブ内で実行されますが、その後は完全にオフラインで実行できるようになり、ブラウザにアプリの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 ]これには、認証、認可、資産管理、入力、ログ記録、監査のプロセスが含まれます。アプリケーションに最初からセキュリティを組み込むことは、長期的にはより効果的で、混乱も少なくなる場合があります。
発達
Webアプリケーションフレームワークを使用すると、Webアプリケーションの作成が簡素化されます。これらのフレームワークは、開発チームがユーザー管理などの一般的な開発上の問題を解決することなく、目標に固有のアプリケーション部分に集中できるようにすることで、迅速なアプリケーション開発を促進します。 [ 6 ]
さらに、インターネットオペレーティングシステム上でアプリケーションを開発する可能性もあるが、現状ではこのモデルに適合する実用的なプラットフォームは多くない。
関連項目
参考文献
- ↑ 「Webアプリ|定義、歴史、開発、例、用途、事実|ブリタニカ」。www.britannica.com。ブリタニカ百科事典。 2024年11月4日取得。
- ↑ 「Webアプリとは? - Webアプリケーションの説明 - AWS」。Amazon Web Services, Inc. 2024年11月4日取得。
- ↑ 「Webアプリケーション」 . DocForge . 2015年4月19日のオリジナルからアーカイブ済み。2024年11月9日取得。
- 1 2 3 4 5 6 Petersen, Jeremy (2008年9月4日). 「Webアプリケーションにn層アプローチを使用する利点」 . 2017年12月1日にオリジナルからアーカイブ済み。2017年11月24日に取得。
- ↑ 「安全なアプリ開発のためのヒント」。Dell.com。2012年5月22日にオリジナルからアーカイブ済み。2012年6月22日に取得。
- ↑ Multiple (wiki). "Webアプリケーションフレームワーク" . Docforge . 2020年6月20日のオリジナルからアーカイブ済み . 2010年3月6日取得.
外部リンク
- HTML5の勧告案。ウェブベースアプリケーションの作成を容易にするためのHTMLおよび関連APIの変更点。
- ワールドワイドウェブコンソーシアム(W3C)のウェブアプリケーションワーキンググループ
- Google DevelopersによるWeb.dev 上の PWA。
- ソフトウェアアーキテクチャ
- Webアプリケーション
- ウェブ開発
- ユーザーインターフェース技術
