Piece Frameworkによるブログアプリケーションの作成

第1回フレームワークとは

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つの再利用のレベルを指摘しています。

  1. クラス
  2. デザインパターン
  3. フレームワーク

クラスは最も小さな再利用のレベルです。単一のクラスやいくつかのクラスの組み合わせ、そしてクラスライブラリがそれにあたります。

デザインパターンは、クラスよりも大きな再利用のレベルです。設計のアイデアやコンセプトがそれにあたります。

フレームワークは最も大きな再利用のレベルです。このレベルでは、特定のアプリケーション領域の抽象概念そのものが再利用されます。

Webアプリケーションフレームワークとは?

では、Piece Frameworkが提供するようなWebアプリケーションフレームワークとは何でしょうか?

これまでの説明に従うと、Webアプリケーションフレームワークとは、何らかのWebアプリケーションを構成するコードから、他のWebアプリケーションを作成するにあたって再利用可能な抽象概念を抽出し、それらに関係を定義したものといえるでしょう。

フレームワーク使用のメリット

フレームワークを使用するメリットは、最も大きなレベルの再利用によって、先人の知見を最大限に活用できることにあります。

しかし、新規にフレームワークを構築することは、リスクが大きく多大な投資となります。既存のフレームワークを使うと、フレームワーク構築リスクを取らず、構築するよりも少ない投資でフレームワークのメリットを享受できます。

フレームワーク使用のデメリット

フレームワークを使用するデメリットは、フレームワークを使うアプリケーションの安定性が、フレームワークの安定性に左右されやすいことです。

また、フレームワーク利用者が「フレームワーク病(frameworkitis⁠⁠」にかかってしまいがちである、ということも挙げられます。

フレームワーク病とは?

フレームワークを使用したアプリケーションの拡張は、フレームワークが提供する拡張の仕組みに従った形で行う必要があります。その拡張の仕組みが複雑であればあるほど、アプリケーションの拡張にかかるコストが大きくなってしまいます。拡張の仕組みが複雑なフレームワークでは、ほんの少しの拡張であったとしても、拡張コードそのものを書く時間よりも、その仕組みに従った形にすることに、より多くの時間が掛かってしまうことになりかねません。これが「フレームワーク病」の症状なのです。

コンテンツ管理システム(CMS)といわれるものがあります。これは、多くの場合フレームワークを内包し、フレームワークよりもさらに大きな再利用の仕組みを提供するはずのものです。しかし、多くのCMSがこれまで成功を収めていないという事実は、フレームワーク病の存在を示唆しているといえるでしょう。

フレームワーク病の予防

単一の大きなフレームワークを使うよりも、より小さく焦点の合った多くのフレームワークを使うことが、フレームワーク病の予防につながります。

大きなフレームワークは概して拡張の仕組みが複雑であり、学習曲線も大きくなります。このことはアプリケーションの保守をより難しくします。小さなフレームワークを使うことで、これらの問題を未然に防ぐことができるのです。

おわりに

以上で、フレームワークの本質と、フレームワークを使用するメリットとデメリットを示しました。Piece Frameworkは、特定の領域に焦点を合わせた独立した小さなフレームワークを提供することで、開発者に対するフレームワーク使用のデメリットを最小にし、フレームワーク使用のメリットを最大にすることを目標に開発されています。

次回は、Piece Frameworkの概要を示します。

参考文献
  • オブジェクト指向における再利用のためのデザインパターン ISBN978-4797311129
  • Leading-Edge Java Erich Gamma on Flexibility and Reuse A Conversation with Erich Gamma, Part II by Bill Venners May 30, 2005
    http://www.artima.com/lejava/articles/reuse.html

おすすめ記事

記事・ニュース一覧