なんだかよく分からないのでまとめました!
一言で言うと
■フレームワーク: 汎用的に必要なものをまとめている枠組み
(例:Ruby on Rails /AngularJS /Bootsrap)
■ライブラリ: 汎用性の高い便利なプログラムのまとまり
(例:Railsのkaminari /PythonのNumpy)
要は、フレームワーク>ライブラリ の包含関係にあるという ことになります。
家で例えると、建物自体がフレームワークで、テレビや洗濯機などの家電がライブラリみたいな感じです!
具体的には
フレームワーク:
アプリケーションフレームワーク (Application Framework) とは、プログラミングにおいて、特定のオペレーティングシステムのためのアプリケーションの標準構造を実装するのに使われるクラスやライブラリの集まり。
フレームワークの目的は、Web開発で用いられる共通した作業に伴う労力を軽減すること。たとえば、多数のフレームワークがデータベースへのアクセスのためのライブラリや、テンプレートエンジン(→Webテンプレート)、セッション管理を提供し、コードの再利用を促進させるものもある。(Wikipedita)
ライブラリ:
汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたもの。ライブラリと呼ぶ時は、それ単体ではプログラムとして作動させることはできない実行ファイルではない場合がある。
ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言うことができる。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。(Wikipedita)
注意点
フレームワーク:
・意味理解をしないとそのフレームワーク以外でシステムを作れなくなる。
・枠組みから外れたものを実装しようとすると大変。
・オリジナルで作った場合よりもパフォーマンスが劣る場合がある。
ライブラリ:
・メンテナンスが行き届いてないと思わぬセキュリティホールができる。
・物によっては関連情報が少ない。
共通して言えることは、**「便利だけど、根底に根付く技術を理解しないと、汎用性やセキュリティで失敗してしまうかも」**と言うことですね。
参考:
wiki (ライブラリ):
https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA
blog(今すぐ辞めてほしい「Ruby on Rails勉強してます」「CakePHP勉強してます)
http://blog.sumyapp.com/2013/07/no-recommend-rails/