そもそもフレームワークって何よ?

よくWebの製作周りの会話をしていると、フレームワークがどうのこうのという会話を耳にするでしょう、
調べてみると
アプリケーションソフトを開発する際に頻繁に必要とされる汎用的な機能をまとめて提供し、アプリケーションの土台として機能するソフトウェアのこと。

ちょっと難しいですね、ざっくりと噛み砕いて言うと、
「プログラムを作る上でのルールを取りまとめたもの」です。

家造りに例えると、
「玄関はここに1つだけにしまっしょう」とか「水回りは同じメーカーで統一しましょう」とか言うおおまかな取り決めだったり、「ノコギリはここに置いておくのでみんなで使ってね」とかです。
わかりにくいですかね・・・

Webのアプリケーション開発でいうと、
・リクエストは全てここで受けましょう
・ファイル名・フォルダ名はこういうルールで命名しましょう
・よく使う処理はここに書いてあるから、それを使いましょう
などなど、実際はもっと細かいでが、ざっくりとです。

そして、多くのWebアプリケーションフレームワークが、
1.データ取得などの重よな処理はココ!(Model)
2.デザインや表示周りはココ!(View)
3.1と2をコントロールする処理はココ!(Controller)
という作業別に処理を分業させる作り方を採用しています、
これを、MVCモデリングといいいます。

これらフレームワークを用いることで、
統一されたソースコードになり、運用が楽になります。
また、作業員が増えた場合でも、フレームワークの規約にそっていれば、
スムーズに作業には入れたり、容易にキャッチアップできたりするのがメリットです。

そんなフレームワークも最近では新しいのがどんどん出てきて、
Zend Framework、CakePHP、FuelPHP、CodeIgniter、Symfony、、、などなど、最近ではlaravelなど、
また、マイクロフレームワークと呼ばれる小規模な開発をターゲティングした、
Slimや、Silexなどと言ったフレームワークも生まれてきています。

これらはフレームワークは、
みんなで使ってみんなで改良していきましょという思想(オープンソース)のもと生まれたので、
基本的に無料(タダ)です♪

よく新規でWebサービスを作りたいというお客さとの会話で、
フレームワークってどれがいいんですか?と聞かれますが、
正直、みんなが使ってそうなやつならどれでもいいんです、大差ないです。
と言うと、不親切なので、僕の使い慣れた、CakePHPやFuelPHPがいいですよッて感じで答えてますね。