「フレームワーク」をうまいこと例える

フレームワーク」ってなにさ

「若さ 若さってなんだ」という問には心に響く答えがあるのに大して、IT関係はどうもしっくりこない単語が多い。「フレームワーク」もそのひとつ。
とりあえずググッてみたところ、フレームワーク(FW)とは - IT用語辞典 e-Wordsには以下のように書いてありました。

ソフトウェアの世界では、アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。アプリケーションの雛型。開発にフレームワークを利用すると、独自に必要とされる部分だけを開発すれば済むため開発効率の向上が見込める。具体的なソフトウェアだけでなく、汎用的に適用できるプログラムの設計モデルや典型的な処理パターンなどを含めてフレームワークと呼ぶ場合もある。

要するに、

プログラムは自由に書いていいんだけど、何かしらの規則に従ったほうが書きやすいし、保守もしやすいよ。その「何かしらの規則」がフレームワークだよ。フレームワークは「こう書くべき!(キリッ」っていうただの決め事と、決め事に従えばあとは自動で勝手にいろいろやってくれるものの両方を指すよ。

ってことだと思う。順番は逆だけど。


プリンを作ることに例えるなら、フレームワークはレシピに相当する。1から独自のプリンを考えて作ってもいいけど、レシピっていうフレームワークに従えば簡単に作れる。材料揃えるのがめんどくさい場合は「これを買えばプリンの材料・レシピ・型も全部ついてくるよ」っていうのがあるかもしれない。それもフレームワークのひとつ。ただし、あまりにも厳格なフレームワークだと自由度が失われる可能性がある。プリン作りの先生が出てきて「牛乳の量は100ml以外認めません!」とか言い出したら、みんなでプリンを作っても全部同じプリンになる。私は卵が濃いのが好きなのに。

Railsはというと…

その点Railsってすげぇよな、最後まで規約たっぷりだけど、気に入らなかったら書き換えれるから細かくカスタマイズもできるもん。
ってところだろうか。Railsは規約で最初からガチガチな分、長い設定ファイルを用意しなくていい。嫌だったらちょこっと書き換えればいい。

親に敷かれたレールの上を生きるのも、案外悪くない。