Help us understand the problem. What is going on with this article?

備忘録:ライブラリとフレームークの違い

プログラミングをしていく中で、

ライブラリ?フレームワーク?使ってはいるけど何が違うの???

と思っていたことがあったため、軽くまとめました。

ライブラリとは

ライブラリとは以下のように定義されています↓(Wikipediaより引用)

汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルではない場合がある。

もう少し噛み砕いて言うと「よく使われるプログラム(処理)をまとめたもの」と言うことになります。これはあくまで部品であり、ライブラリ単体では何かをすることはできないことがほとんどです。

開発していて、「うわ、こんな処理をさせたいけど実装が面倒臭そう...」と思った時に、処理内容なんかで検索かけると大体そう言った内容のライブラリがヒットします。

つまり、開発していてこんな処理したいけど実装がなぁ...と思ったときに使うのがライブラリなんです。
(あまりにも有名すぎるライブラリとかはそのフローさえ無視して利用されていたりしますが)

もう少し詳しく

フレームワークとは

フレームワークとは以下のように定義されています↓(Wikipediaより)

プログラミングにおいて、アプリケーションソフトウェアの標準構造を実装するのに使われるライブラリ(サブルーチンやクラスなど)の集まりである。

そう、もうまんま。ライブラリの集まりなんですよね(サブルーチンやクラスとかは今は無視してください)。でもただのライブラリの集まりではなくて、フレームワーク(枠組み)なんです。一通りの開発に必要なものはほぼ全て用意してくれて、「こういう処理はここでしてね」とか親切に教えてくれますし、公式ドキュメント見ながらコードを書くだけで何を意識するでもなく、一つのアプリケーションができてしまいます。

こちらに至っては、開発を始める前に導入することがほとんどです。というかフレームワークに沿って開発をするのが通常です。
(逆にひねくれたことを言えば、枠組みが決まっているので自由度は比較的低いです。とは言え、少しひねったくらいのアプリケーションなら全然問題はないので、気にしたこともありませんが...)

もう少し詳しく

違いは?

まとめると、役割できること が違います。
ライブラリ「こんな処理したい」が簡単に実装できる
フレームワーク「こんなアプリケーションを作りたい」が簡単に作れる

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away