SOFTELメモ Developer's blog

会社概要 ブログ 調査依頼 採用情報 ...
技術者募集中

フレームワークって何?

フレームワークって何?
フレームワークとライブラリって何が違うの?

ライブラリはあなたが呼ぶように書く
フレームワークは呼ばれるところに書く

↑「制御の反転」と呼ばれます。

フレームワークとは、直訳すれば「骨組み」。プログラムや業務などでは「手順」と言ってもいいでしょう。
フレームワークを利用して開発するとは、アプリケーション実行の手順に則ったところにコードを書くということです。手順外の記述は呼び出されないということです。

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アプリケーションによくある共通の要素(データベースとのやり取り、ロジック、画面の表示など)や、よくある便利機能も含めてフレームワークと呼ばれていると思います。使いこなすことができれば、生産性の向上に役立ちます。

最初は多少大変でも自分が作るアプリケーションのフレームワークを自作してみるのも理解の近道です。汎用性を捨てれば割とコンパクトに簡単に作れます。そして、自作フレームワークには何が足りないのかを考えて、改善したり、よそに乗り換えたりすればよいと思います。

今回は、フレームワークって何?というお題で、駄文を書いてみました。

関連するメモ

コメント