たとえるなら
カレーを作るときのカレールーです。スパイスの調合(誰が作っても必要な下準備)はルーに任せて、あなたは具材選びや辛さの調整(そのサービスならではの部分)に集中できます。ゼロから調合するより速く、味も安定します。
もう少しくわしく
フレームワーク(framework)は「骨組み」という意味で、アプリ開発でいつも必要になる土台部分を、あらかじめ組み立てておいてくれる開発キットです。ログイン処理、データベースとのやりとり、画面表示の仕組みなど、どんなサービスでも必要になる部分は世界共通です。それを毎回ゼロから書くのは無駄なので、先人たちが土台としてまとめてくれました。
フレームワークを使うと、開発者はそのサービスならではの部分に集中できます。さらに、大勢が使って鍛えられた土台なので、セキュリティ上の穴が生まれにくく、書き方も統一されるためチーム開発がしやすくなるという利点もあります。Webの画面側で有名なReactやVue.js、サーバー側で有名なRuby on RailsやLaravelなどが代表例です。
求人票に「React経験者歓迎」のように書かれるほど、どのフレームワークを使えるかはエンジニアのスキルの目安になっています。ただし土台の考え方は共通点が多いため、ひとつを深く使えるようになれば、別のフレームワークにも応用が利きます。
現場での使われ方
「このサイト、フレームワークは何を使ってるんですか?」
開発の土台に何を採用しているかという質問。答えによって、開発のしやすさや必要な人材が変わってきます。
「フレームワークのお作法に従って書いてください」
フレームワークごとに推奨される書き方(ルール)があるので、自己流ではなくそれに合わせて、という指示です。
よくある質問
フレームワークとライブラリの違いは何ですか?
ライブラリは「必要なときに呼び出して使う部品」、フレームワークは「その上に乗って開発する土台」です。部品は自分が主導で使いますが、土台の上では枠組みのルールに従って書く、という主導権の違いでよく説明されます。
フレームワークを使わない開発もありますか?
あります。ごく小さなプログラムや、特殊な性能要件がある場合はあえて使わないこともあります。ただし業務でのWeb開発では、何らかのフレームワークを使うのが一般的です。