プログラミング初心者にオススメ

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

どうも。みずかず(@mizukazu_1)です。

プログラミングを始めたばかりの頃はライブラリとフレームワークの違いが良くわかりませんでした。

どちらも汎用的なプログラムを集めたものでしょ?と。

ですが、今ではその違いが割とハッキリと分かるようになったので説明していこうと思います。

ライブラリとは

ライブラリ: library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える。ソースコードの場合と、オブジェクトコード、あるいは専用の形式を用いる場合とがある。たとえば、UNIXのライブラリはオブジェクトコードをarと呼ばれるアーカイブツール(アーカイバ)でひとまとめにして利用する。図書館(: library)と同様にプログラム(算譜)の書庫であるので、索引方法が重要である。

また、ソフトウェア以外の再利用可能なものの集合について使われることもある(音声データなど)。

Wikipediaから引用

https://ja.wikipedia.org/wiki/%E3%83%A9%E3%82%A4%E3%83%96%E3%83%A9%E3%83%AA

Wikipediaにこう書いてあります。

簡単に言うと、汎用的なプログラムを集めてまとめたものという事です。

そして、ライブラリ単体では動作しないものであり他のプログラムに機能を提供するものだそうです。

確かにJSのライブラリを見ても単体で使うというよりは読み込んで使うものが多い気がします。

フレームワークとは

一般的意味 frameworkとは、beliefs(フレームワーク内で正しいとして信じている事物)、ideas(概念。フレームワーク内の用語の定義)、rules (規則や法則。フレームワーク内で有効な手順やメソッド)のセットで、それを使えば、対象とする範囲で、問題解決や意思決定を行いやすくしたテンプレート[1]
ビジネスフレームワーク – 経営戦略業務改善問題解決などに役立つ分析ツールや思考の枠組み。MBAなどで教わることが多く、ビジネスに必要とされるロジカルシンキング発想法などを体系的にまとめたもの。SWOT分析ファイブフォース分析などが挙げられる。
開発・運用・意思決定を行う際に、その基礎となる規則・構造・アイデア・思想などの集合のこと。日本語では「枠組み」などと訳されることが多い。
ソフトウェアフレームワーク – コンピュータ・プログラミング用語。アプリケーションフレームワークなど。

Wikipediaより引用

https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AC%E3%83%BC%E3%83%A0%E3%83%AF%E3%83%BC%E3%82%AF

こちらもWikipediaから引用させてもらいました。

フレームワークは単語の通りで枠組みや骨組みといったものです。

プログラムで言えばフレームワークという枠組みがあって、そこには独自の設計思想やコーディングルールがあります。

また、ライブラリと違い他の場所から読み込んで使うといった事をしないので単体で成立します。

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

JSを例にしてみます。

恐らく違いが何となく分かると思います。

ライブラリ

  • jQuery
  • Swiper
  • Chart.js

フレームワーク

  • Angular
  • React
  • Vue

ざっとこんな感じでまとめてみました。

ライブラリは単体で使うのではなく読み込んで使いますが、フレームワークに関しては単体で成立していますよね。

何ならフレームワークの中にライブラリが組み込まれていてるという事もあります。

よくライブラリが図書館で例えられますが、フレームワークは学校みたいなものですかね。(例えが間違っているかもしれない・・・)

学校の中に図書室もあるけど他の教室や校庭等の施設もあるのでもっと色々な事が出来ます。

さらに学校独自の校則に従って生活をする点りもフレームワークと似ている気がします。

まとめ

ライブラリは単体で使用することはほとんど無いが、フレームワークは単体で使用するもの。

ライブラリは使い手が自由な使い方が出来ますがフレームワークに関してはフレームワーク側のルールに従うというところが一番の違いでしょうか。

この辺を理解しておけば違いが分からなくなるという事もないと思います。

過去の自分に教えてあげる気持ちで書きました

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です