Piece Frameworkは、本質的な開発の実践のためのアプリケーションフレームワークです。Piece Frameworkは単一のフレームワークではなく、ステートフルでセキュアなWebアプリケーションフレームワークPiece_Unity、オブジェクトリレーショナルマッピングフレームワークPiece_ORM、バリデーションフレームワークPiece_Right、Webフローエンジンと継続サーバ Piece_Flow、といった特定の領域に焦点を合わせた独立した小さなフレームワークで構成されています。Piece Frameworkは、現在のところPHP4及びPHP5をサポートしています。
連載第1回目となる今回は、フレームワークの本質を知り、フレームワークを使用するメリットとデメリットを理解して頂こうと思います。
フレームワークの定義
frameworkという単語は「骨組み、枠組み」(ランダムハウス英語辞典)といった意味を持ちます。
「オブジェクト指向における再利用のためのデザインパターン」の著者で、JUnit, Eclipseの開発者としても知られているErich Gamma氏は2005年のインタビュー「Erich Gamma on Flexibility and Reuse」で、フレームワークを下記のように定義しています。
- フレームワークは設計の蒸留に取り組む。
- フレームワークは問題解決のための重要な抽象概念を特定する。
- フレームワークはクラスによって抽象概念を表現し、抽象概念間に関係を定義する。
- フレームワークはハリウッドの法則と呼ばれるものを使う。
上記の定義はいずれもフレームワークの本質を端的に示しているといえます。フレームワークを使うことそれ自体が、先人の設計の再利用を行っているといえるのです。
3つの再利用のレベルとフレームワーク
Erich Gamma氏は、先述のインタビューで3つの再利用のレベルを指摘しています。
- クラス
- デザインパターン
- フレームワーク
クラスは最も小さな再利用のレベルです。単一のクラスやいくつかのクラスの組み合わせ、そしてクラスライブラリがそれにあたります。
デザインパターンは、クラスよりも大きな再利用のレベルです。設計のアイデアやコンセプトがそれにあたります。
フレームワークは最も大きな再利用のレベルです。このレベルでは、特定のアプリケーション領域の抽象概念そのものが再利用されます。
Webアプリケーションフレームワークとは?
では、Piece Frameworkが提供するようなWebアプリケーションフレームワークとは何でしょうか?
これまでの説明に従うと、Webアプリケーションフレームワークとは、何らかのWebアプリケーションを構成するコードから、他のWebアプリケーションを作成するにあたって再利用可能な抽象概念を抽出し、それらに関係を定義したものといえるでしょう。
フレームワーク使用のメリット
フレームワークを使用するメリットは、最も大きなレベルの再利用によって、先人の知見を最大限に活用できることにあります。
しかし、新規にフレームワークを構築することは、リスクが大きく多大な投資となります。既存のフレームワークを使うと、フレームワーク構築リスクを取らず、構築するよりも少ない投資でフレームワークのメリットを享受できます。
フレームワーク使用のデメリット
フレームワークを使用するデメリットは、フレームワークを使うアプリケーションの安定性が、フレームワークの安定性に左右されやすいことです。
また、フレームワーク利用者が「フレームワーク病(frameworkitis)」にかかってしまいがちである、ということも挙げられます。
フレームワーク病とは?
フレームワークを使用したアプリケーションの拡張は、フレームワークが提供する拡張の仕組みに従った形で行う必要があります。その拡張の仕組みが複雑であればあるほど、アプリケーションの拡張にかかるコストが大きくなってしまいます。拡張の仕組みが複雑なフレームワークでは、ほんの少しの拡張であったとしても、拡張コードそのものを書く時間よりも、その仕組みに従った形にすることに、より多くの時間が掛かってしまうことになりかねません。これが「フレームワーク病」の症状なのです。
コンテンツ管理システム(CMS)といわれるものがあります。これは、多くの場合フレームワークを内包し、フレームワークよりもさらに大きな再利用の仕組みを提供するはずのものです。しかし、多くのCMSがこれまで成功を収めていないという事実は、フレームワーク病の存在を示唆しているといえるでしょう。
フレームワーク病の予防
単一の大きなフレームワークを使うよりも、より小さく焦点の合った多くのフレームワークを使うことが、フレームワーク病の予防につながります。
大きなフレームワークは概して拡張の仕組みが複雑であり、学習曲線も大きくなります。このことはアプリケーションの保守をより難しくします。小さなフレームワークを使うことで、これらの問題を未然に防ぐことができるのです。
おわりに
以上で、フレームワークの本質と、フレームワークを使用するメリットとデメリットを示しました。Piece Frameworkは、特定の領域に焦点を合わせた独立した小さなフレームワークを提供することで、開発者に対するフレームワーク使用のデメリットを最小にし、フレームワーク使用のメリットを最大にすることを目標に開発されています。
次回は、Piece Frameworkの概要を示します。