ライブラリ・フレームワークとは?どちらも再利用できるコードの集まり

公開: 更新: カテゴリ: テクノロジ系

30秒で結論

ライブラリ・フレームワークとは(全体像)

どちらも、他の人が作った便利なコードを借りて使うしくみ。同じことを毎回ゼロから書かずに済む。

両者の違いは「どちらが主導権を持つか(制御の向き)」だ。

このフレームワークの動きを「制御の反転(IoC)」、または「ハリウッドの原則(こちらから呼ばないで、こちらから呼びます)」と呼ぶ。


詳しく:制御の向きとパッケージマネージャだけ覚えれば戦える

ここが記事の心臓部。まず制御の向きの違いを見ましょう。

ライブラリとフレームワークの違い

ライブラリフレームワーク
主導権自分のプログラム枠組みのほう
動き使いたいときに呼ぶ呼ばれるのを待つ(制御の反転)
代表例NumPy・jQuery・requestsReact・Django・Spring

ここで一番のひっかけが「ライブラリとフレームワークは同じもの」という誤解。制御の向きが逆で、ライブラリは「呼ぶ」、フレームワークは「呼ばれる」。

次に、これらの部品を取り寄せて管理する道具がパッケージマネージャ。言語ごとに対応が決まっている。

代表的なパッケージマネージャ

言語・環境パッケージマネージャ
JavaScript/Node.jsnpm
Pythonpip
JavaMaven・Gradle
RustCargo

ここで2つめのひっかけが「npmはPython用」という誤解。npmはJavaScript/Node.js用で、Pythonはpip。エコシステムは別なので取り違えない。

わかりやすく言い換えると

要するに、道具のたとえでイメージするとラクです。

ライブラリ … 工具箱。必要なときに自分で取り出して使う(主導権は自分)

フレームワーク … 設備のそろったキッチン。配管やコンセントの位置が決まっていて、その決まりに従って料理する(主導権は台所側)

パッケージマネージャ … 部品の取り寄せ係。JavaScriptはnpm、Pythonはpip

つまり、「ライブラリは呼ぶ・フレームワークは呼ばれる」「npmはJS・pipはPython」、この2点が試験の急所です。


試験のツボ

🔴 一番出る:制御の向きの違い

①ライブラリ=自分のプログラムが使いたいときに呼ぶ

②フレームワーク=枠組みが主導権を持ち、自分のコードは呼ばれるのを待つ(制御の反転・IoC)

🔴 次に出る:代表例とパッケージマネージャ

①フレームワークの代表はReact・Django・Spring

②JavaScriptはnpm、Pythonはpip(エコシステムは別)

🟡 押さえると安定:制御の反転の呼び名

①フレームワークの動きを「制御の反転(IoC)」と呼ぶ

②別名「ハリウッドの原則」(こちらから呼ばないで、こちらから呼びます)


よくある間違い

「ライブラリとフレームワークはまったく同じものである」→ ✗  制御の向きが逆。ライブラリは「呼ぶ」、フレームワークは「呼ばれる」。

「npmはPython用のパッケージマネージャである」→ ✗  npmはJavaScript/Node.js用。Pythonはpip。

「フレームワークは自分の好きなタイミングで呼び出して使う」→ ✗  逆で、枠組みが主導権を持ち、自分のコードは呼ばれるのを待つ(制御の反転)。


試験での出題パターン

実際の問題でたしかめてみよう。

オリジナル問題1(制御の向きの違い)

📝 オリジナル問題 1 制御の向きの違い

ライブラリとフレームワークの違いに関する次の記述のうち、正しいものはどれか。

  1. ライブラリは自分が呼んで使い、フレームワークは枠組みが自分のコードを呼ぶという点が違う
  2. ライブラリもフレームワークもまったく同じもので、呼び名が2つあるだけだとされているものだ
  3. ライブラリは画面に絵を描く道具、フレームワークは音を鳴らす道具だとされているものである
  4. ライブラリは枠組みが主導権を持ち、フレームワークは自分が呼ぶ点が違うものだとされている
テクマスター
テクマスター 解答・解説

解答は 1 ですよ。

ライブラリは自分のプログラムが使いたいときに呼ぶもの、フレームワークは枠組みのほうが主導権を持ち、自分のコードを呼んでくれるものですね。制御の向きが逆、というのが核心です。

選択肢2の「同じもの」、選択肢3の「絵を描く・音を鳴らす道具」、選択肢4の「向きが逆の説明」はどれも誤りですよ。

選択肢判定理由
1ライブラリは呼ぶ・フレームワークは呼ばれる
2制御の向きが違う別もの
3絵や音の道具ではない
4主導権の説明が逆

オリジナル問題2(制御の反転)

📝 オリジナル問題 2 制御の反転(IoC)

制御の反転(IoC)に関する次の記述のうち、正しいものはどれか。

  1. 制御の反転は画面の色を反転させる機能のことで、プログラムの流れとは無関係だとされている
  2. 制御の反転はプログラムを必ず逆順に実行する決まりのことだとされているものである
  3. 制御の反転は処理速度を必ず半分にする設定のことだとされているものである
  4. 制御の反転は枠組みが主導権を持ち、自分のコードを適切なときに呼ぶフレームワークの特徴だ
テクマスター
テクマスター 解答・解説

解答は 4 ですよ。

制御の反転(IoC)は、枠組みが主導権を持ち、自分のコードを適切なタイミングで呼ぶというフレームワークの特徴ですね。「ハリウッドの原則(こちらから呼ばないで、こちらから呼びます)」とも呼ばれます。

選択肢1の「画面の色を反転」、選択肢2の「逆順に実行」、選択肢3の「速度を半分」はどれも誤りですよ。

選択肢判定理由
1画面の色の反転ではない
2逆順実行の決まりではない
3速度を半分にする設定ではない
4枠組みが呼ぶフレームワークの特徴

オリジナル問題3(パッケージマネージャ)

📝 オリジナル問題 3 パッケージマネージャの対応

パッケージマネージャに関する次の記述のうち、正しいものはどれか。

  1. npmはPython用で、pipはJavaScript用のパッケージマネージャだとされているものである
  2. JavaScript/Node.jsはnpm、Pythonはpipが代表のパッケージマネージャである
  3. パッケージマネージャはどの言語でも完全に共通で、言語による違いはないものだとされている
  4. パッケージマネージャは画面を掃除する道具のことで、部品の管理とは無関係だとされている
テクマスター
テクマスター 解答・解説

解答は 2 ですよ。

JavaScript/Node.jsはnpm、Pythonはpipが代表のパッケージマネージャですね。言語ごとにエコシステムが分かれていて、対応を取り違えないのがポイントです。

選択肢1の「npmとpipが逆」、選択肢3の「どの言語でも共通」、選択肢4の「画面を掃除する道具」はどれも誤りですよ。

選択肢判定理由
1npmはJS・pipはPythonで逆
2JSはnpm・Pythonはpip
3言語ごとに違う
4画面を掃除する道具ではない

まとめ

押さえどころ

次に学ぶ


執筆: SikakuQuest編集部

勉強は、クエストになった。

資格の勉強を、冒険に変えるRPG学習アプリ

App Storeで見る