前書き
開発中で、ほぼすべてのプロジェクトがライブラリとフレームワークを利用しています。
ライブラリとフレームワークが区別つかない、設計時に困るケースはあると思います。
それで、ライブラリはフレームはなんにか違うのかを調べました。
ライブラリは呼ばない限り何にも実行されない
ユーザの指示コードがなければ、ライブラリは処理を行わないです。
ライブラリ単体では処理が行わないこと。
たとえば、ログ記録、メール送信などのライブラリはユーザで初期化して、処理するメソッドを呼ばない限りは、処理は実行されません。
フレームワークは利用時に既に色々処理してくれて、後は詳細を埋めるだけ
フレームワークは逆の世界です。
初期化から実処理、終了までの流れを管理しています。
ユーザーは穴を埋めて行けば、予想通りの動作実現してくれます。
これはソフトウェア工学において、制御の反転(Inversion of Control、IoC)と呼ばれています。
たとえば、rails、playなどのMVCフレームワークでは、ユーザは必要なrouting、view、controller、modelを登録するだけで、動くアプリになります。
終わり
プロジェクト開発時には、大体プロジェクト専用のライブラリ群を自社開発必要があり、フレームワークと混乱せずに作りましょう!