ソフトウェアフレームワーク ソフトウェアフレームワークの概要

ソフトウェアフレームワーク

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/11/20 16:02 UTC 版)

ソフトウェアフレームワークは、明確に定義されたAPIを持ち、具体的な実装を再利用可能な形で隠蔽しているという点でライブラリとよく似ている。両者の間に明確な境界は無いし、分類のための明確な基準も無い。観点のひとつとしては、いわゆる「メインループ」あるいは「イベントループ」をアプリケーション側が持つか否か、という分類がある。メインループをアプリケーション側が持っていてそこから呼び出される形態のものがライブラリであり、一方フレームワークではメインループはフレームワーク側にあり、アプリケーションはそちら側から呼ばれるイベントハンドラによって駆動される(これについて「制御の反転」という語で説明されることがある[1])。

しかしこの分類は、両者を特徴づけるはっきりした分類というわけではない。アプリケーションのmain関数はランタイムライブラリ中のスタートアップルーチンから呼び出される。また、広く使われているようなフレームワークでは、たいていはメインループをアプリケーション側が持つことができるようなメカニズムが用意されている。

ソフトウェアフレームワークは、最終的にアプリケーションソフトウェアにリンクされるライブラリコードだけでなく、開発に必要となる各種プログラミングツールも含んでいることがある。また、統合開発環境 (IDE) に組み込まれたプロジェクトテンプレートやソースコードジェネレータを活用した自動プログラミングの仕組みが用意されていることもある。

背景と批判

ソフトウェアフレームワークは、システム構築に必須な標準的かつ下位レベルの詳細を設計者やプログラマが検討する時間を省き、上位レベルの要求仕様(ビジネスロジック)の実現に多くの時間を割けるようにし、ソフトウェア開発を容易にすることを目指している[2]。例えば、銀行のWebサイト構築にWebアプリケーションフレームワークを使っている開発チームは、要求処理や状態管理の機構を検討する時間を削減して、口座からの引き落としといった操作に注力できる。また、このような差分プログラミングの用途に適しているという理由で、フレームワークの実装にオブジェクト指向言語が選ばれることが多い。

批判としては、フレームワークは全体的なコードを肥大化させるという主張もある。これは複数のフレームワークで重複・競合する部分や補い合う部分があり、APIも複雑に絡み合っているためでもある。

フレームワークの使い方を学ぶ時間がかかるという主張もある。ただし一度フレームワークの使い方を学べば、同じフレームワークを利用する次のプロジェクトからはより素早く確実な応用が可能となる。また、多くのフレームワークは基本的な設計が似通っていることが多く、類推(アナロジー)により別のフレームワークにも考え方が応用できることが多い。

フレームワークは他のプラットフォーム製品(OSDBMSなど)と同様に、特定のフレームワーク・ベンダーや、特定のバージョンに依存(ロックイン)されるリスクがあるとの主張もある。このため機能内容や代替製品などの確認も必要である。フレームワークのバージョンアップによって動作仕様が変わったり、API/ABIの互換性がなくなってしまったりすることもある。

移植の手間を減らして様々なOSに展開しやすくするための、クロスプラットフォームなフレームワークの開発も盛んである。特にGUIアプリケーションは通例OS固有のウィンドウシステムを利用する必要があり、またウィンドウの表示や2D/3Dグラフィックスの表示に必要となる準備(初期化や後始末)に手間がかかり、定型コードの量も多くなるため、詳細を隠蔽して抽象化したクロスプラットフォームなフレームワークが威力を発揮する。

フレームワークのソースコードが公開されていないプロプライエタリな製品では、不具合が見つかったときに原因の特定と解消が遅れるリスクもある。一方、オープンソースのフレームワークや内製フレームワークであっても、ユーザー数や実績が少なく未成熟な場合は、相対的に多数のバグが残されている可能性が高い。

いずれにしても、適切なフレームワークの選定は特に重要である。開発途中で、選択したフレームワークが開発要件を満たさないと判明した場合や、そのフレームワークの開発・提供が打ち切られた場合などは、開発途中で別のフレームワークに移行して(場合によっては基本設計から)再開発する必要が発生するためである。

ユーザーアプリケーションを立ち上げるのを助けるため、ソフトウェアフレームワークには一般にかなりの雑多なコードやユーティリティコードが含まれているが、全体としては特定の問題領域に注目した機能を提供している。以下に例を挙げる。


  1. ^ Riehle, Dirk (2000), Framework Design: A Role Modeling Approach, Swiss Federal Institute of Technology, http://www.riehle.org/computer-science/research/dissertation/diss-a4.pdf 
  2. ^ Framework”. DocForge. 2008年12月15日閲覧。
  3. ^ Vlissides, J M; Linton, M A (1990), “Unidraw: a framework for building domain-specific graphical editors”, ACM Transactions of Information Systems 8 (3): 237-268 
  4. ^ Johnson, R E (1992), “Documenting frameworks using patterns”, Proceedings of The Conference on Object Oriented Programming Systems Languages and Applications (ACM Press): 63-76 
  5. ^ Johnson, R E; McConnell, C; Lake, M J (1992), Giegerich, R; Graham, S L, eds., “The RTL system: a framework for code optimization”, Proceedings of the International workshop on code generation (Springer-Verlag): 255-274 
  6. ^ Birrer, A; Eggenschwiler, T (1993), “Proceedings of the European conference on object-oriented programming”, Frameworks in the financial engineering domain: an experience report (Springer-Verlag): pp. 21-35 
  7. ^ Hill, C; DeLuca, C; Balaji, V; Suarez, M; da Silva, A (2004), “Architecture of the Earth System Modeling Framework (ESMF)”, Computing in Science and Engineering: 18-28 
  8. ^ Gachet, A (2003), “Software Frameworks for Developing Decision Support Systems - A New Component in the Classification of DSS Development Tools”, Journal of Decision Systems 12 (3): 271-281 
  9. ^ Pree, W (1994), “Meta Patterns-A Means For Capturing the Essentials of Reusable Object-Oriented Design”, Proceedings of the 8th European Conference on Object-Oriented Programming (Springer-Verlag): 150-162 
  10. ^ Javaなどではインタフェースの場合もあり、その場合は「インタフェースを実装した」となる
  11. ^ Buschmann, F (1996), Pattern-Oriented Software Architecture Volume 1: A System of Patterns. Chichester, Wiley, ISBN 0471958697 


「ソフトウェアフレームワーク」の続きの解説一覧




固有名詞の分類


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ソフトウェアフレームワーク」の関連用語

ソフトウェアフレームワークのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ソフトウェアフレームワークのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのソフトウェアフレームワーク (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2024 GRAS Group, Inc.RSS