1. ホーム
  2. frameworks

[解決済み] フレームワークとライブラリの違いは何ですか?

2022-03-22 15:12:27

質問

の違いは何ですか? フレームワーク ライブラリ ?

私は常々、ライブラリは特定の問題やアプリケーション開発の特定の領域(データベースアクセスなど)を解決することに焦点を当てたオブジェクトや関数のセットであり、一方フレームワークは特定の方法論(MVCなど)を中心としたライブラリのコレクションであり、アプリケーション開発のすべての領域をカバーしていると考えています。

解決するには?

実は、これらの用語は、使われる文脈によって、さまざまな意味を持ちます。

例えば、Mac OS Xでは、フレームワークは単なるライブラリであり、バンドルにまとめられています。バンドル内には、実際のダイナミック・ライブラリ(libWhatever.dylib)があります。素のライブラリとMac上のフレームワークの違いは、フレームワークは複数の異なるバージョンのライブラリを含むことができることです。また、追加のリソース(画像、ローカライズされた文字列、XML データファイル、UI オブジェクトなど)を含むことができ、フレームワークが公開されていない限り、通常、ライブラリを使用するために必要な .h ファイルが含まれています。

このように、アプリケーションでライブラリを使用するために必要なすべてのものを1つのパッケージ内に収めることができます(.hファイルのないC/C++/Objective-Cライブラリは、ライブラリのドキュメントに従って自分で書かない限り、かなり無駄です)、代わりに大量のファイルを移動させることができます(MacバンドルはUnixレベルでは単なるディレクトリですが、UIはそれを単一のファイルのように扱います、JavaのJARファイルとほとんど同じです。)

ウィキペディアでは、フレームワークをバズワードと呼んでいます。ソフトウェアフレームワークを次のように定義しています。

<ブロッククオート

ソフトウェアフレームワークとは、再利用可能な ソフトウェアシステム(または サブシステム)。ソフトウェアフレームワークは サポートプログラム、コード ライブラリ、スクリプト言語、または その他のソフトウェアは、開発および 異なるコンポーネントを接着する ソフトウェアプロジェクトの 様々な部分 フレームワークの をAPIで提供します。

つまり、ライブラリーはあくまでもライブラリーなのです。ライブラリはオブジェクト/関数/メソッド(言語によって異なる)の集合体であり、アプリケーションはライブラリにリンクすることでオブジェクト/関数/メソッドを使用することができるのです。基本的には、再利用可能なコードを含むファイルで、通常は複数のアプリケーション間で共有できます(同じコードを何度も書く必要はありません)。

フレームワークは、アプリケーション開発で使用するすべてのものになり得ます。ライブラリであったり、多くのライブラリの集合体であったり、スクリプトの集合体であったり、アプリケーションを作るために必要なあらゆるソフトウェアの断片であったりします。フレームワークは、非常に曖昧な言葉でしかありません。

このトピックに関するある人の記事を紹介します "。 ライブラリ vs. フレームワーク となります。個人的には、この記事は非常に議論の余地があると思います。しかし、彼はフレームワークの複数の定義の中から一つを選び出し、それを古典的なライブラリの定義と比較しているだけなのです。例えば、彼はサブクラス化のためにフレームワークが必要だと言っています。そうなんですか?私は、あるオブジェクトをライブラリで定義し、それに対してリンクし、自分のコードでそれをサブクラス化することができます。そのためにフレームワークが必要だとは思えません。ある意味、彼はフレームワークという用語が最近どのように使われているかを説明しています。先ほども言ったように、フレームワークという言葉は誇張されたものです。一部の企業は、(古典的なライブラリのあらゆる意味で)普通のライブラリをリリースして、それをquot;framework"と呼んでいます。