はじめに#
プログラミングを学習しているとフレームワーク、ライブラリというものが出てくると思いますが、どちらも似たような意味で考えておられる初学者の方は多いと思います。
かくいう私もその一人で、一体これは何が違うんだ・・・とつまづいてしまいましたので、いろいろ調べて自分なりに解釈してみました。
誤り等がありましたらご指摘いただきますと幸いです。
フレームワークとは#
ソフトウェアフレームワーク(英: software framework)とは、プログラミングにおいて、アプリケーションソフトウェア等の実装に必要となる一般的な機能や定型コードを、ライブラリとしてあらかじめ用意したものである。
↑(Wikipediaより引用)
いまいちピンとこないし、説明文の中にすでにライブラリが入ってるじゃないか!
これは一旦置いておくとして、私の中では下記のような理解です。
フレームワークとは、英語で枠組み・骨組みといった意味でプログラミングにおいては、アプリケーションを開発する際の土台になります。
フレームワークというものには、アプリを開発するのに便利な機能がたくさん詰め込まれており、非常に簡単かつ分かりやすくアプリを開発することができます。
まだよく分からないと思いますので、フレームワークを使うことでどんなメリットがあるか見ていきましょう。
フレームワークにおいては、変数の名前の付け方やどのファイルにどんなことを書くのか、と言ったいわゆるお作法のようなものがキッチリ決められているので、他の人が見てもコードが読みやすく、メンテナンスや機能拡張がしやすいという大きなメリットがあります。
ただし反面、書き方に慣れる必要があるので、初めて触る方にとっては少し癖があってとっつきにくいかもしれません。
フレームワークにはいろいろな種類があり、
PHPのフレームワーク:laravel・cakePHP・FuelPHP
Rubyのフレームワーク:Rails・Sinatra・Padrino
JavaScriptのフレームワーク:AngularJS・Vue.js・React
などなど、もはやアプリケーション開発には必須の知識と言えるでしょう。
ライブラリとは#
ライブラリ(英: library)は、汎用性の高い複数のプログラムを再利用可能な形でひとまとまりにしたものである。ライブラリと呼ぶときは、それ単体ではプログラムとして動作させることはできない、つまり実行ファイルではない場合がある。ライブラリは他のプログラムに何らかの機能を提供するコードの集まりと言える。
↑(Wikipediaより引用)
案の定、いまいちピンときません。
こちらも少し噛み砕いていきますと、よく使われる機能をまとめたものになります。こういう機能が作りたい!というものは大抵揃ってます。
ライブラリを使うことで、開発効率を上げることが出来ます。さまざまな処理を実装するにあたり、先人たちが作り上げてきたプログラムを呼び出すことで簡単に実装することが出来るというのがライブラリの大きなメリットになります。
こちらも色々種類があり、たくさんありすぎるのでここでは紹介しません(笑)
フレームワークとライブラリの違い#
さて、本題のテーマであるフレームワークとライブラリの違いについて入っていきます。
一見、フレームワークにしろライブラリにしろ、便利な機能をまとめたものという意味では同じなので、何が違うの?と思われるかもしれません。
ざっくり言うと、フレームワークはシステム全体を構築するための土台で、ライブラリはある機能を実現するための部品、のようなイメージです。
分かりやすいように身近なものの例えで言うと、ライブラリは個々のある機能を実現するための家具(机やらエアコンやら洗濯機やら)で、自分で作るのは大変なのでIKEAやニトリに買いに行き、自分の好きなところで使うことが出来ます。
フレームワークはモデルハウスです。すでにあるモデルハウスを選択するだけで生活の基盤になるものは揃っています。あとは自分の住みやすいようにカスタムしていくだけです。
まとめ#
ライブラリとフレームワークはいずれも便利な機能をまとめたものですが、それぞれ個々の部品に過ぎないのか、全体の土台となるかと言う点で異なっています。
どちらもアプリ開発においては超重要なところなので、しっかり学習していきましょう!