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の概要を示します。