Webアプリケーションフレームワーク
[Wikipedia|▼Menu]
.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%;font-size:90%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}html.client-js body.skin-minerva .mw-parser-output .mbox-text-span{margin-left:23px!important}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}

この記事は検証可能参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方
出典検索?: "Webアプリケーションフレームワーク" ? ニュース ・ 書籍 ・ スカラー ・ CiNii ・ J-STAGE ・ NDL ・ dlib.jp ・ ジャパンサーチ ・ TWL(2021年6月)

Web アプリケーションフレームワーク(: Web Application Framework)は、動的なWebサイトWebアプリケーションWebサービス開発をサポートするために設計されたフレームワークである。

Webアプリケーションフレームワークの目的は、Web開発で用いられる共通した作業に伴う労力の軽減である。たとえば、多数のフレームワークがデータベースへのアクセスのためのライブラリやテンプレートエンジンWebテンプレートも参照)、セッション管理を提供し、コードの再利用を促進させるものもある。
Webアプリケーションフレームワークの発展の歴史
Common Gateway Interface (CGI)

World Wide Webの設計は元々ダイナミックなものではなく、初期のハイパーテキストWebサーバ上で公開されたハードコードHTMLでできていた。

公開されたページについての変更はページの作者が行う必要があった。ユーザーからの入力を反映したコンテンツを提供するため、Webサーバが外部のアプリケーションとやり取りするためのCommon Gateway Interface (CGI) 標準が導入された。[1]CGIでは各リクエストが別々のプロセスを開始しなければならないため、サーバの負荷に悪い影響を与えることがある。
密結合

高いトラフィックに対応したWebアプリケーションを実現するため、プログラマはWebサーバとの密な結合を望んだ。Apache HTTP Serverは、例えば、Webサーバが任意のコードを実行したり(mod pythonなど)、特定のリクエストを動的なコンテンツを扱えるWebサーバに転送するような(mod_jk(英語版)など)モジュールをサポートしている。Javaなどの言語で書かれた動的なコンテンツをWebサーバで扱うことができるよう設計されたものもある(Apache Tomcatなど) 。
Web言語

同じころWeb用途に特化してPHPActive Server Pagesなどの新しい言語が開発された。
Webライブラリ

Webページの動的な生成に用いられる大半のプログラミング言語が、共通した作業を行うためのライブラリを持っているが、WebアプリケーションHTMLの生成(たとえば JavaServer Faces)などWebアプリケーションで有用なライブラリを必要とすることが多い。
フルスタック

成熟した「フルスタック」フレームワークが登場した。これは、複数のWeb開発に有用なライブラリを一つに結合したWeb開発者向けの ソフトウェアスタックとして集約したものである。例として、Jakarta EE、OpenACS、Ruby on Railsなどがある。
ポートレット

従来のフレームワークは基本的に横型に分割されているため、ユーザ機能を追加 / 変更 / 削除する場合は、アプリケーションを入れ替える必要があった。ポータルフレームワークはユーザ機能を縦型に分割し、ユーザ機能毎にホット・デプロイ / アンデプロイできる。デプロイされたポートレットをドラッグ・アンド・ドロップ操作でWebページに配置することができるのが特徴である。

なお、ポートレット毎にエンティティインターフェース(モデル)、表示(ビュー)、業務ロジックが含まれているため、ポートレット毎に異なるスタック技術を利用することもできる。例えばJSFで作成したポートレットとSpring Frameworkで作成したポートレットを1つのWebページに配置することができる。また、異なった言語でポートレットを記述することもできる。例えばJava、Ruby、PHPで記述したポートレットを一つのWebページに配置できる。

ユーザ機能を随時に追加/置き換え/削除することができるため、ポートレットフレームワークはアジャイル開発のように継続的に開発を行う場合に適している。例えばScrumの各ユーザストリーをプラグインにすることができる。

ポートレットフレームワークを利用したWebシステムの例として、liferayAlfrescoなどがある。その中でliferayは開発者向けのツールが揃っている。
アーキテクチャ
Model view controller

多数のフレームワークが、データモデルビジネスロジックユーザーインターフェイスを分割するためにMVCモデルに従っている。
プッシュ型とプル型の比較

ほとんどのMVCフレームワークは、プッシュ型のアーキテクチャにしたがっている。このようなフレームワークは、処理を要求するアクションを実行し、次に結果を出力するためにデータを表示のレイヤにプッシュする。[2] StrutsDjangoRuby on RailsSpring Frameworkの一部であるSpring MVCなどがこのアーキテクチャの良い例である。

これに対するものとしてプル型のアーキテクチャがあり、「コンポーネント型」とも呼ばれている。こうしたフレームワークは表示レイヤから処理を開始し、必要に応じて複数のコントローラからの処理の結果を「プル」する。このアーキテクチャでは、複数のコントローラーが一つのビューに関連付けられる。TapestryVelocity などがプル型アーキテクチャの一例である。
コンテンツ管理システム

自己記述的なコンテンツ管理システムが、高位のレイヤーのWebアプリケーションフレームワークに進出し始めている。例えば、Drupalの構造は Webアプリケーションフレームワークに関連した機能を提供するモジュールにより機能を拡張できる最小限のコアを提供している。WordPressJoomlaPloneも同様な機能を持っている。Liferay(オープンソース)のような高度な汎用コンテンツ管理システムでは、更にコンテンツのバージョン管理、公開開始日/終了日、公開する前の承認ワークフロー、プレビュー機能、マルチメディアコンテンツの対応など従来ではWebSphereMicrosoft SharePointなどでしか提供されていない機能にも対応している。伝統的にこれらは コンテンツ管理システムとも呼ばれる。 しかし、コンテンツの管理がこれらのシステムの上で最重要の機能であるかについては議論の余地がある。Liferayのようなフレームワークは関数API、機能のフレームワークやコーディング標準、伝統的にWebアプリケーションフレームワークに関連する機能も提供している。
機能
セキュリティ

Webアプリケーションフレームワークにはアクセス制御機能(ユーザ認証アクセス認可)を備えたものもある。Djangoはその一例で、ロールに基づいてページに対するアクセスを管理する機能と、ユーザーの作成やロールの割り当てのためのWebベースのインターフェイスを提供する。
データベースへのアクセスおよびマッピング

多数のWebアプリケーションフレームワークはバックエンドのデータベースに対する統一されたAPIを提供し、コードの変更なく多数のデータベースとやりとりすることを可能にし、プログラマーがより高位の概念を扱うことができるようにしている。また高いパフォーマンスを得るため、AOLserverが行うようにデータベースのコネクションがプールされていなければならない。

さらに、オブジェクト指向フレームワークはオブジェクト関係モデルとの対応づけを行うオブジェクト関係マッピングの機能を提供するマッピングツールを備えている。


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:33 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef