キンサクプログラマー

お金儲けと技術のメモ

ライブラリとフレームワークとプラットフォームの違い

背景

研究でも仕事でもC言語しかやった事が無い僕にとってはこの3つの用語の意味がイマイチ理解できなかった(ライブラリにしか触れてこなかったが正しいのかもしれない)。しかし、ここ最近web周りの勉強をする様になってからフレームワークやプラットフォームという用語が身近になってきたので、ちょっと調べてみる事にした。あくまで僕個人の認識なので間違っていたらごめんなさい。

ライブラリ

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

一番イメージがつきやすい。クラスや関数といったまとまりで提供されるソースコードの部品群のこと。
f:id:pikurusux:20150528122805p:plain

フレームワーク

ソフトウェアフレームワーク(英: software framework)とは、プログラミングにおいて、一般的な機能をもつ共通コードをユーザーが選択的に上書きしたり特化させたりすることで、ある特定の機能をもたせようとする抽象概念のことである。単にフレームワークとも呼ばれる。 wikipediaより

なるほど。 わからん。
もう少しわかりやすい説明。
開発/実行環境としてのフレームワークを学ぶ - Part1 ソフトウエアのフレームワークとはなにか:ITpro

もっとも難しいアプリケーション設計上の決断が,フレームワーク開発者によってすでになされており,プログラマは単にそのひな型に肉付けをしていくだけになります。 itproより

なるほど。骨組みが用意されているから適切な方法で肉付けしてね! ってのがフレームワークらしいです。部品だけじゃなくて骨組みまで用意してくれることでソフトの構造から流用する事ができる。
f:id:pikurusux:20150528122839p:plain

プラットフォーム

プラットフォーム(英: computing platform)とは、コンピュータにおいて、主に、オペレーティングシステム (OS) やハードウェアといった基礎部分を指す。 wikipediaより

こいつだけはちょっと毛色が違うが、要はあるソフトウェアが動作する動作環境。
javaが代表的な例で、javaプログラムはOS上で動作するjavaプラットフォームで動く。
f:id:pikurusux:20150528122900p:plain

node.js

サーバーサイドjavascriptと言われているがなんとなくピンとこない。ライブラリなの?フレームワークなの? 正解はライブラリ+プラットフォームっていうことらしい。つまり、node.jsはIFを公開しユーザ側はそれらを用いたjsコードをnodeプラットフォーム上で動作させる。

まとめ

ふわっとしていた用語の定義が少しだけわかった気になって貰えたらうれしい。