I-16-2. 開発フレームワークの特徴とメリット

開発フレームワークを利用した開発の特徴と、開発フレームワーク利用の効果、メリットについて解説する。また代表的な開発フレームワークを紹介し、それぞれの歴史や背景、特徴、利用上の注意点、開発フレームワークの選択方法、ライセンス形態などを説明する。

【学習の要点】

* Web MVCフレームワークを導入すれば、Controller部分を記述することなく、ModelとViewとを記述すれば済む。

* O/Rマッピングフレームワークを導入すれば、オブジェクトと関係データベースとのインピーダンスミスマッチを解消できる。

* DIコンテナを導入すれば、オブジェクト間の依存関係の管理をDIコンテナに移譲でき、オブジェクト間の依存性を疎に保つことができる。

図I-16-2. 代表的なフレームワーク

【解説】

1) 開発フレームワークの種類と特徴

Webアプリケーション開発でよく用いられている開発フレームワークには、Web MVCフレームワーク、O/Rマッピングフレームワーク、DIコンテナがある。

* Web MVCフレームワーク

Web MVCフレームワークは、MVCモデルを適用したWebアプリケーション用の開発フレームワークである。一般的なWeb MVCフレームワークでは、Controllerをフローズンスポットとしてフレームワーク側で提供し、残りのModelとViewをホットスポットとしてアプリケーションごとに開発する。Web MVCフレームワークの代表的なものとしてStrutsがあり、Strutsが普及して以来、PHPのZend FrameworkやRubyのRuby on Railsなど、他の言語でもWeb MVCフレームワークが開発され、普及していった。

* O/R(オブジェクト/関係)マッピングフレームワーク

O/Rマッピングフレームワークは、オブジェクト指向言語におけるオブジェクトと関係データベースのデータ構造の差異を吸収し、自動変換を行う機能を有した開発フレームワークである。オブジェクト指向言語で関係データベースを扱う場合、データモデルの設計思想の違いから、オブジェクトとデータベースデータとのマッピングのために、毎回煩雑な処理を行わなければならない。このデータモデルの設計思想の違いをインピーダンスミスマッチというが、O/Rマッピングフレームワークでは、このマッピングにおける定型処理をフローズンスポットとして提供し、インピーダンスミスマッチを解消する手助けをする。Javaでは元々、インピーダンスミスマッチを解消するための仕組みとして、EJB(Enterprise Java Beans)におけるEntity Beanがあった。しかしこのEJBは、分散オブジェクトとしての性質も併せ持つなど、単なるオブジェクトとリレーショナルデータのマッピングツールとしては複雑過ぎ、中小規模の開発を主とする多くの開発者には受け入れられなかった。このような中、もっと簡単にO/Rマッピングを実現したいという要望から、Apache Torqueをはじめ、現在よく使われているHibernateやiBATISなどのO/Rマッピングフレームワークが開発され、次いで他の言語でもActiveRecordなど同様のものが開発されていった。なお、現在のEJB最新仕様であるEJB3では、以上の教訓から、HibernateなどのO/Rマッピングフレームワークの影響を大きく受けており、従来に比べ大幅に利用しやすくなっている。

* DI(Dependency Injection)コンテナ

DIコンテナは、オブジェクト間の依存関係を設定ファイルに記述することで、依存関係の管理をDIコンテナに移譲することができる仕組みを持つ開発フレームワークである。IoC(Inversion of Control)コンテナ、軽量コンテナ、DIフレームワークなどとも呼ばれる。他のオブジェクトを呼び出す際には抽象的な名前とインタフェースのみを利用し、どの具象クラスを用いてどのような初期化を行ったオブジェクトを用いるかは、全てDIコンテナが外部から注入してくるのに任せる。このような仕組みを利用して開発することで、他の具象クラスに依存したコードを排除し、オブジェクト間の依存性を疎に保つことができる。JavaにおけるEJBも、同様の機能を有するが、O/Rマッピングフレームワークの項でも述べた通り、EJBは汎用的な反面、非常に複雑で扱いづらい仕様であった。DIコンテナの代表的な実装としてSpringがあるが、Springはこの複雑すぎるEJBの代替として、個人により開発が開始され、以降オープンソースプロジェクトとして急速に成長し、普及していった。日本でも、オープンソースのプロジェクトで開発が進められているDIコンテナとして、Seasar2がある。

OSS Course Naviのコンテンツは IPA OSS モデルカリキュラムを基としています。