今回の記事では、プログラマー間で見解が分かれるライブラリとフレームワークの違いを徹底解説する。我々プログラマーはアプリケーション等を開発する際にフレームワークやライブラリを駆使する。その中でも、「フレームワークとライブラリの違いがわからない」と考える人も少なくないだろう。中には混同して使う人がいるかもしれない。両者は厳密に言えば異なる意味を示す。
フレームワーク(framework)はアプリケーションを開発するのに必要な機能がデフォルトで揃っているものを示す。アプリケーションとして動く骨組みが用意されているので、別途プログラムを書かなくても最低限のアプリケーションとして動作する。フレームワークがあれば、我々プログラマーはゼロからアプリケーションを開発する必要はない。フレームワークには、タスクを実行するために書かれた再利用可能なコードやプログラムが含まれていて、別途追加したいオリジナルな機能があればプログラマー自身がプログラムを書くことがある。
フレームワークは画像ファイルや参考文献などのリソースを1つのパッケージに集約している。それゆえに、特定のプロジェクトの要件に応じてそのパッケージを変更できる。フレームワークを使えば、プログラマーはアプリケーションに新しい機能を統合して新しい機能を持たせられる。
要は、フレームワークはデフォルトでアプリケーション開発に必要な機能が揃っているものだ。そこに自分の実装したい内容をカスタムで追加していくことになる。
ソフトウェア開発は非常に複雑である。例えば、アプリケーション開発には要件定義、設計やテストなど様々な段階が含まれる。開発をする際に、一から認証やユーザ登録など必要な機能を実装するのは非常に困難である。そこで、開発を効率化するためにフレームワークが活躍する。
フレームワークを使う主なメリットは以下の通り。
一方で、ライブラリ(library)とは作業を簡略化するために使用できる予め書き込まれたプログラムの集まりである。ライブラリは簡単に言えば、繰り返して利用できるプログラムの集合体である。
基本的には、プログラマーが作業を簡略化し、開発プロセスを効率化するために利用される定義済みの関数やクラスの集まりだ。それゆえに、プログラマーはそれらの機能を実現するためのプログラムを一から書く必要がない。ライブラリにはそれらの機能を実現するためのプログラムがすでにあるからだ。標準ライブラリはほとんどのプログラミング言語で使える。更に、プログラマーは自作のライブラリを作成できる。(特にPythonやJavaScriptは自分で簡単なライブラリを作成できる)
ライブラリは便利な部品がきちんと分離されていて、そこから使いたいものを借りてくるようなイメージである。
ライブラリを使う最大の理由は、すでに書かれている機能のコードを書く手間を省くためである。ライブラリを活用することで、アプリケーション開発の効率が上がってコードを書く時間を大幅に短縮できる。
フレームワークとライブラリはアプリケーションを開発するのに必要なコードの量を減らすことで効率化できることは共通しているものの、両者は厳密に言えば意味がまったく異なる。前者はプログラマーがアプリケーションを開発するのに必要な土台である。一方で、後者はプログラマーの作業を簡略化し、開発のプロセスを効率化するために予め定義された関数やクラスの集合体である。
前者は予め定義された枠組みや開発フローがあって必要なことをプログラマーに伝達する。そのため、プログラマーは必要に応じてコードを追加しフレームワークを補完する。フレームワークには以下のようなものがある。
Hello World
という文字列を出力するアプリケーションを開発できる。一方で、後者はプログラマーが任意のタイミングで呼び出すことができ、かつアプリケーションの開発のプロセスを制御できる。ライブラリで実行される操作は正確かつ具体的に定義される。言い換えれば、アプリケーション開発でライブラリを使う際は、特定の機能を効率よく実装する時に使われることが多い。ライブラリの具体例としては以下のようなものがある。(ライブラリはすべてPythonで開発されている)
今回の記事では、フレームワークとライブラリの違いについて徹底解説した。両者とも開発を効率化するために作られた。フレームワークはアプリケーションを開発するために必要な機能がデフォルトで揃っているものを示す。アプリケーションで動く骨組みが用意されているので、追加でプログラムを書かなくても最低限のアプリケーションとして動く。一方で、ライブラリは開発の作業をできるだけ簡略化するために使用できる予め書き込まれたプログラムの集まりである。ライブラリの場合、プログラムや特定の処理で必要なときに呼び出して使う。
フレームワークは予め作られている骨組みで、ライブラリは使いたいものや実装したい機能に必要な部品のようなものだ。両者ともアプリケーションの開発を効率良く進める上では必須である。
https://www.interviewbit.com/blog/framework-vs-library/
https://www.freecodecamp.org/news/the-difference-between-a-framework-and-a-library-bd133054023f/
https://www.baeldung.com/cs/framework-vs-library
https://kruschecompany.com/framework-vs-library
https://stackoverflow.com/questions/148747/what-is-the-difference-between-a-framework-and-a-library
バッジを受け取った著者にはZennから現金やAmazonギフトカードが還元されます。