フレームワークとは?プログラムの土台を例え話でやさしく解説

メモリん

ねぇテツ、フレームワークって何なの?求人サイト見てたら「フレームワーク経験者歓迎」って書いてあって、最初の1行で止まったんだけど(・_・)?

ギガテツ

お、いいとこ見てんじゃん♪ アレな、ざっくり言うと「途中まで出来てるやつ」なわけ

メモリん

途中まで?作りかけを渡されるってこと?まじで?

ギガテツ

そーそー。しかも雑な作りかけじゃなくて、めっちゃ考えられた作りかけだし!

求人サイトの「フレームワーク経験者歓迎」を見て困るメモリんと、覗き込んで説明するギガテツ

フレームワークとは

フレームワークとは、アプリケーションを作るときの土台になる「骨組み」のことです。よく使う機能や、処理を進める流れがあらかじめ用意されていて、開発する人は決められた場所に自分の処理を書き加えることでアプリを完成させます。

なお、フレームワークという言葉はIT以外でも「考え方の枠組み」という意味で広く使われます。また、どこまでがライブラリでどこからがフレームワークかは、はっきり線を引けない製品もあります。この記事では、開発で使う「土台としてのフレームワーク」を扱います。

仕切りが最初から入っている弁当箱

ギガテツ

フレームワークってのはさぁ→仕切りが最初から入ってる弁当箱なわけ。ごはんはここ、おかずはここって、置き場所がもう決まってるっしょ?☆彡

メモリん

弁当箱て。パソコンの話してたよね?

ギガテツ

してるって。おまえが作るのはおかずだけ。箱と仕切りは最初から付いてくる。ってコトなわけ☆彡

仕切りつきのお弁当箱を指さして解説するギガテツと、不思議そうに見るメモリん

仕切りのないタッパーに詰めるとどうなるか

メモリん

それってつまり、仕切りのないタッパーに詰めたらどうなんの?

ギガテツ

やってみ?まず毎回「ごはんどこ置く?」から考えるハメになるわけ。んで持ち歩いてるうちに中身が片寄って、フタ開けたらおかず全部ごはんの上だし!

メモリん

あー…あれ地味に萎えるやつ

ギガテツ

仕切りアリなら、そこはもう悩まなくていいわけ。しかも弁当箱ってさ、フタにハシが付いてたり、ソース入れる小っさいカップが最初から入ってたりすんじゃん?よく使うもんは最初からセットになってる

ギガテツ

フレームワークもそこ同じでな。ログインの仕組みとか、データの保存とか、どのアプリでもだいたい要るやつが最初から入ってる。おまえはそれ使うだけ

メモリん

便利じゃん。じゃあ弁当箱に文句なしってこと?

ギガテツ

まあ一個だけあるわ。丸い仕切りに四角いコロッケは入んねーの。おかずのほうを仕切りの形に合わせて作ることになるっしょ?フレームワークも「こう書いてね」って作法があって、そこは合わせにいく側なわけ

メモリん

ふーん。ライブラリってのも見たんだけど、それも弁当箱?

ギガテツ

ライブラリは冷凍食品のほうな。入れるか入れないか、いつ使うかはおまえが決めるっしょ。でも弁当箱の仕切りは、詰める前から形が決まってる。そこが違うんだわ

メモリん

あ゛ー!つまり、仕切りのある弁当箱を先に用意してもらって、あたしは空いてるとこにおかずを詰めるだけってコトね!早いし崩れない。でも箱の形には逆らえないと(☆∀☆)

仕切りつきのお弁当箱におかずを詰めながら納得した表情のメモリんと、隣で腕を組むギガテツ
ギガテツ

そーゆーコトなわけ☆彡 だから求人票に書いてあんのは「うちはこの形の箱使ってます」って意味だし

この例えで当てはまらないところ

お弁当箱は詰めた中身をただ運ぶだけですが、フレームワークは中身を入れたあとに自分で動き、処理の順番を進めていきます。書いた部分が「自分から呼び出す側」ではなく「フレームワークから呼び出してもらう側」になる点が、ただの入れ物との大きな違いです。

まとめ

  • フレームワークは、アプリを作るときの土台になる骨組みです。ゼロから組み立てずに済むぶん、開発が速くなります。
  • よく使う機能があらかじめ用意されているかわりに、書き方の作法が決まっています。自由度より、速さと安定を取る仕組みです。
  • ライブラリは「使うかどうかを自分で決める部品」、フレームワークは「先に形が決まっている土台」という違いがあります。

あわせて読みたい用語