フレームワークって何?
フレームワークって何?
フレームワークとライブラリって何が違うの?
ライブラリはあなたが呼ぶように書く
フレームワークは呼ばれるところに書く
↑「制御の反転」と呼ばれます。
フレームワークとは、直訳すれば「骨組み」。プログラムや業務などでは「手順」と言ってもいいでしょう。
フレームワークを利用して開発するとは、アプリケーション実行の手順に則ったところにコードを書くということです。手順外の記述は呼び出されないということです。
Webアプリの一般的な例では、「アクセス制御→入力チェック→処理実行→レスポンス送出」と、それぞれの段階でエラーが発生した場合の処理といった手順が考えられます。ほぼどのページ、どの機能でも同じでしょう。
phpで書くとこんな感じ。
//リクエストのURLに応じたモジュール(A)を呼び出す仕組みなどは省略 $a = new A(); try { //基本の流れ $a->アクセス制御(); $a->入力チェック(); $a->処理実行(); $a->レスポンス送出(); } catch (Exception $e) { //例外発生時の処理(エラー画面を表示するなど) }
フレームワークが上のとおりだと、モジュールAはこういった形で書くしかありません。
class A { function アクセス制御() {} function 入力チェック() {} function 処理実行() {} function レスポンス送出() {} }
Zend Framework、CakePHP、Symfonyなどのphpのフレームワークは、こういった手順を、より汎用的に、堅牢に、拡張しやすくしているだけです。
ソースを追うのが大変だと言う人が結構いますが、よくあるphpのフレームワーク(=フロントコントローラーパターンでWebアプリケーションをphpで作るためのフレームワーク)では、何をやろうとしているのかを考えれば、どこが幹でどこが葉っぱか、なんとなく分かると思います。
一般的には、Webアプリケーションによくある共通の要素(データベースとのやり取り、ロジック、画面の表示など)や、よくある便利機能も含めてフレームワークと呼ばれていると思います。使いこなすことができれば、生産性の向上に役立ちます。
最初は多少大変でも自分が作るアプリケーションのフレームワークを自作してみるのも理解の近道です。汎用性を捨てれば割とコンパクトに簡単に作れます。そして、自作フレームワークには何が足りないのかを考えて、改善したり、よそに乗り換えたりすればよいと思います。
今回は、フレームワークって何?というお題で、駄文を書いてみました。
コメント