ウェブアプリケーション

ウィキペディアから、無料の百科事典
ナビゲーションにジャンプ 検索にジャンプ
Horde グループウェアオープンソースのWebアプリケーションです。

Webアプリケーション(またはWebアプリケーション)であるアプリケーションソフトウェアで実行されていることを、Webサーバー上でローカルに実行されているとは異なり、コンピュータベースのソフトウェアプログラム、オペレーティングシステム、デバイスの(OS)。 Webアプリケーションには、アクティブなネットワーク接続を備えたWebブラウザを介してユーザーがアクセスします。これらのアプリケーションは、クライアントサーバーモデル構造を使用してプログラムされます。ユーザー(「クライアント」)は、サードパーティによってホストされているオフサイトサーバー介してサービス提供されます。一般的に使用されるWebアプリケーションの例にはWebメールオンライン小売販売オンラインバンキング、およびオンラインオークション

定義および類似の用語

あらゆる種類の動的Webページと「Webアプリ」の一般的な違いは明確ではありません。 「Webアプリケーション」と呼ばれる可能性が最も高いWebサイトは、デスクトップソフトウェアアプリケーションまたはモバイルアプリと同様の機能を備えたWebサイトですHTML5では、Webページとして読み込まれるアプリケーションを作成するための明示的な言語サポートが導入されましたが、データをローカルに保存し、オフラインでも機能し続けることができます。

シングルページアプリケーションは、異なるURLを持つ個別のページ間を移動するというより一般的なWebパラダイムを拒否するため、よりアプリケーションに似ていますこれは、Webページ全体を更新しなくても、個々のコンポーネントを交換または更新できるためです。単一ページのフレームワークは、帯域幅を節約できるため、モバイルプラットフォーム用のこのようなWebアプリの開発をスピードアップするために使用される可能性があります。また、外部ファイルのロードをなくすこともできます。

モバイルWebアプリケーション

Webアプリケーションを作成するときにモバイルデバイスをターゲットにする方法はいくつかあります。

  • レスポンシブWebデザインを使用して、Webアプリケーションを作成できます。従来のWebサイトでも、タッチスクリーンでうまく機能する小さな画面で表示できる単一ページのアプリケーションでもかまいません。
  • プログレッシブウェブアプリケーション(PWA)は、通常のウェブページやウェブサイトのように読み込まれるウェブアプリケーションですが、オフラインでの作業や、従来はネイティブモバイルアプリケーションでしか利用できなかったデバイスハードウェアアクセスなどのユーザー機能を提供できます。
  • ハイブリッドアプリは、おそらくハイブリッドフレームワークを使用して、ネイティブアプリ内にWebサイトを埋め込みます。これにより、ネイティブアプリの特定の利点(デバイスハードウェアへの直接アクセス、オフライン操作、アプリストアの可視性など)を維持しながら、Webテクノロジーを使用した開発(および場合によっては既存のモバイルWebサイトからコードを直接コピー)が可能になります。ハイブリッドアプリフレームワークには、Apache CordovaElectronFlutterHaxeReact NativeXamarinが含まれます。

歴史

クライアントサーバーのような初期のコンピューティングモデルでは、アプリケーションの処理負荷は、サーバー上のコードと各クライアントにローカルにインストールされたコードの間で共有されていました。つまり、アプリケーションには、ユーザーインターフェイスとして機能する独自のコンパイル済みクライアントプログラムがあり、各ユーザーのパーソナルコンピューターに個別にインストールする必要がありました。アプリケーションのサーバー側コードをアップグレードするには、通常、各ユーザーワークステーションにインストールされているクライアント側コードもアップグレードする必要があり、サポートコストが増加し、生産性が低下ます。また、アプリケーションのクライアントとサーバの両方のコンポーネントは、通常はしっかりと特定に結合されたコンピュータアーキテクチャオペレーティングシステムそれらを他のアプリケーションに移植することは、最大規模のアプリケーションを除くすべてのアプリケーションで非常に高額になることがよくありました(現在、モバイルデバイス用のネイティブアプリも前述の問題の一部またはすべてによって妨げられています)。

対照的に、Webアプリケーションは、さまざまなWebブラウザでサポートされているHTMLJavaScriptなどの標準形式で記述されたWebドキュメントを使用します。 Webアプリケーションは、HTTPなどの標準的な手順を使用して、関連するWebページにアクセスしたときにクライアントソフトウェアがクライアントマシンにダウンロードされる、クライアントサーバーソフトウェアの特定のバリアントと見なすことができます。クライアントのWebソフトウェアの更新は、Webページにアクセスするたびに発生する可能性があります。セッション中、Webブラウザーはページを解釈して表示し、任意のWebアプリケーションのユニバーサルクライアントとして機能します。

Webの初期には、個々のWebページは静的ドキュメントとしてクライアントに配信されていましたが、ユーザー入力はページマークアップに埋め込まれたWebフォーム要素を介して返されるため、ページのシーケンスはインタラクティブなエクスペリエンスを提供できました。ただし、Webページに大幅な変更を加えるたびに、ページ全体を更新するためにサーバーに戻る必要がありました。

1995年、NetscapeJavaScriptと呼ばれるクライアント側のスクリプト言語を導入しました。これにより、プログラマーはクライアント側で実行されるユーザーインターフェイスにいくつかの動的要素追加できます。したがって、Webページ全体を生成するためにサーバーにデータを送信する代わりに、ダウンロードされたページの埋め込みスクリプトは、入力の検証やページの一部の表示/非表示などのさまざまなタスクを実行できます。

1996年には、Macromediaが導入されたフラッシュベクトルアニメーションとしてブラウザに追加することができプレーヤープラグインのWebページ上の埋め込みアニメーションにします。これにより、スクリプト言語を使用して、サーバーと通信する必要なしに、クライアント側で対話をプログラムすることができました。

1999年に、「Webアプリケーション」の概念がサーブレット仕様バージョン2.2のJava言語で導入されました。[2.1?]。[1] [2]当時、JavaScriptとXMLの両方がすでに開発されていましたが、Ajaxはまだ造られておらず、XMLHttpRequestオブジェクトは最近Internet Explorer5にActiveXオブジェクトとして導入されました

2005年に、Ajaxという用語が造られ、Gmailなどのアプリケーションがクライアント側をますますインタラクティブにし始めました。Webページスクリプトは、Webページ全体をダウンロードせずに、サーバーに接続してデータを保存/取得できます。

2007年、Steve Jobsは、AJAXアーキテクチャを使用してHTML5で開発されたWebアプリiPhoneアプリの標準形式になると発表しました。いいえソフトウェア開発キット(SDK)が必要とされなかった、とのアプリは完全に介してデバイスに統合されるだろうサファリのブラウザエンジン。このモデルは、後で切り替えたのApp Store防止の手段として、jailbreakersをして欲求不満の開発者を融和します。

2014年に、クライアント側のプラグインを必要とせずにグラフィックおよびマルチメディア機能を提供するHTML5が完成しました。 HTML5は、ドキュメントのセマンティックコンテンツも充実させました。 APIとドキュメントオブジェクトモデル(DOM)はもはや後付けではありませんが、HTML5仕様の基本的な部分です。WebGL APIは、HTML5キャンバスとJavaScript言語に基づく高度な3Dグラフィックスへの道を開きました。これらは、真にプラットフォームとブラウザに依存しないリッチWebアプリケーションを作成する上で非常に重要です

2016年には、年間の間にグーグルIOの会議、エリックBidelman(シニアスタッフ開発プログラム・エンジニア)が導入されたプログレッシブWebアプリケーションのWeb開発における新しい標準として(のPWA)を。MicrosoftのプリンシパルプログラムマネージャーであるJeffBurtoft氏は、「Googleはプログレッシブウェブアプリで先導し、長いプロセスの結果、完全にサポートする必要があると判断しました」と述べています。そのため、MicrosoftとGoogleはどちらもPWA標準をサポートしていました。

インターフェース

JavaJavaScriptCSSFlashSilverlightなどのテクノロジーを通じて、画面への描画、オーディオの再生、キーボードとマウスへのアクセスなど、アプリケーション固有の方法がすべて可能です。多くのサービスは、これらすべてを組み合わせて、オペレーティングシステムの外観を採用するより使い慣れたインターフェイスにするように取り組んできました。ドラッグアンドドロップなどの汎用テクニックこれらのテクノロジーによってもサポートされています。Web開発者は、クライアント側のスクリプトを使用して機能を追加することがよくあります。特に、ページの再読み込みを必要としないインタラクティブなエクスペリエンスを作成するために使用します。最近、クライアント側のスクリプトをASP.NETJ2EEPerl / PlackPHPなどのサーバー側のテクノロジと調整するテクノロジが開発されました

さまざまなテクノロジーを組み合わせて使用​​するWeb開発手法であるAjaxは、よりインタラクティブなエクスペリエンスを作成するテクノロジーの一例です。

構造

アプリケーションは通常、「層」と呼ばれる論理チャンクに分割され、すべての層に役割が割り当てられます。[3]従来のアプリケーションは、クライアントマシン上に存在する1層のみで構成されていますが、Webアプリケーションは本質的にn層アプローチに適しています。[3]多くのバリエーションが可能ですが、最も一般的な構造は3層アプリケーションです。[3]最も一般的な形式では、3つの層は、プレゼンテーションアプリケーションストレージの順に呼ばれます。 Webブラウザーは、第1層(プレゼンテーション)であり、動的なWebコンテンツテクノロジー(ASPCGIなど)を使用するエンジンです。ColdFusionDartJSP / JavaNode.jsPHPPython、またはRuby on Rails)は中間層(アプリケーションロジック)であり、データベースは第3層(ストレージ)です。[3] Webブラウザーは中間層に要求を送信し、中間層はデータベースに対してクエリと更新を行うことで要求を処理し、ユーザーインターフェイスを生成します。

より複雑なアプリケーションの場合、3層ソリューションでは不十分な場合があり、n層アプローチを使用すると有益な場合があります。最大の利点は、アプリケーション層にあるビジネスロジックをよりきめ細かいものに分割することです。モデル。[3]別の利点は、データにアクセスするための使いやすいインターフェースを提供することにより、データ層を他の層から分離する統合層を追加することです。[3]たとえば、クライアントデータには、データベース上のクライアントテーブルに対して直接SQLクエリを実行する代わりに、「list_clients()」関数を呼び出すことによってアクセスされます。これにより、他の層に変更を加えることなく、基盤となるデータベースを置き換えることができます。[3]

Webアプリケーションを2層アーキテクチャと見なす人もいます。これは、すべての作業を実行して「ダム」サーバーにクエリを実行する「スマート」クライアント、または「スマート」サーバーに依存する「ダム」クライアントの場合があります。[3]クライアントはプレゼンテーション層を処理し、サーバーはデータベース(ストレージ層)を持ち、ビジネスロジック(アプリケーション層)はそれらの一方または両方にあります。[3]これにより、アプリケーションのスケーラビリティが向上し、ディスプレイとデータベースが分離されますが、それでもレイヤーを真に特殊化することはできないため、ほとんどのアプリケーションはこのモデルよりも大きくなります。[3]

業務用

アプリケーションソフトウェア企業の新たな戦略は、以前はローカルアプリケーションとして配布されていたソフトウェアへのWebアクセスを提供することです。アプリケーションの種類によっては、まったく異なるブラウザベースのインターフェイスの開発が必要になる場合や、既存のアプリケーションを異なるプレゼンテーションテクノロジを使用するように適合させる必要がある場合があります。これらのプログラムを使用すると、ユーザーは、ローカルハードドライブにインストールしなくても、ソフトウェアアプリケーションの使用に対して月額または年額の料金を支払うことができます。この戦略に従う会社はアプリケーションサービスプロバイダー(ASP)として知られており、ASPは現在ソフトウェア業界で大きな注目を集めています。

これらの種類のアプリケーションのセキュリティ侵害は、企業情報と個人の顧客データの両方に関係する可能性があるため、大きな懸念事項です。これらの資産を保護することは、Webアプリケーションの重要な部分であり、開発プロセスに含める必要のある重要な運用領域がいくつかあります。[4]これには、認証、承認、資産処理、入力、およびロギングと監査のプロセスが含まれます。最初からアプリケーションにセキュリティを組み込むことで、長期的にはより効果的で混乱を少なくすることができます。

クラウドコンピューティングモデルのWebアプリケーションは、サービスとしてのソフトウェア(SaaS)です。固定料金または使用量に応じた料金で、企業向けのSaaSとして提供されるビジネスアプリケーションがあります。他のWebアプリケーションは無料で提供され、多くの場合、Webアプリケーションインターフェイスに表示される広告から収入を生み出します。

開発

Webアプリケーションの作成は、多くの場合、Webアプリケーションフレームワークを使用することで簡素化されます。これらのフレームワークは、開発チームがユーザー管理などの一般的な開発問題を解決することなく、目標に固有のアプリケーションの部分に集中できるようにすることで、迅速なアプリケーション開発を促進します。[5]使用されているフレームワークの多くはオープンソースソフトウェアです。

Webアプリケーションフレームワークを使用すると、コードを単純化することと、あるチームがフレームワークに集中し、別のチームが特定のユースケースに集中できるようにすることで、プログラム内のエラーの数を減らすことができます。インターネット上で絶えずハッキングの試みにさらされているアプリケーションではセキュリティ関連の問題はプログラムのエラーによって引き起こされる可能性があります。フレームワーク、POST後のGETなどのベストプラクティス[6]の使用を促進することもできます。

さらに、インターネットオペレーティングシステム上でアプリケーションを開発する可能性がありますが、現在、このモデルに適合する実行可能なプラットフォームは多くありません。

アプリケーション

ブラウザアプリケーションの例としては、単純なオフィスソフトウェア(ワードプロセッサオンラインスプレッドシートプレゼンテーションツール)がありますが、プロジェクト管理、コンピュータ支援設計ビデオ編集POSなどのより高度なアプリケーションを含めることもできます

も参照してください

参考文献

  1. ^ Alex Chaffee(2000-08-17)。「Webアプリケーション(または「webapp」)とは何ですか?」2008年7月27日取得
  2. ^ デビッドソン、ジェームズダンカン; 臆病者、ダニー(1999-12-17)。Javaサーブレット仕様(「仕様」)バージョン:2.2最終リリースサンマイクロシステムズpp。43–46 2008年7月27日取得
  3. ^ a b c d e f g h i j Petersen、Jeremy。「Webアプリケーションにn層アプローチを使用する利点」
  4. ^ 「安全なアプリ開発のためのトップのヒント」Dell.com。アーカイブされたオリジナルの2012年5月22日に2012年6月22日取得
  5. ^ 複数(wiki)。「Webアプリケーションフレームワーク」Docforge 取得した2010年3月6日に
  6. ^ 複数(wiki)。「フレームワーク」Docforge 取得した2010年3月6日に[リンク切れ]

外部リンク