フレームワーク
フレームワークとは
フレームワークとは、一言で言うと「未完成なアプリケーション」です。フレームワーク自身は、どのようなアプリケーションでも使用される機能を実装していますが、アプリケーション独自の機能は実装していません。そこで、アプリケーション独自の機能を、予め提供されているクラスのサブクラスを実装することで実現し、アプリケーションを完成させます。
以下にフレームワークを用いる利点をまとめます。これらの利点のため、アプリケーション開発(特にWebアプリケーション開発など)にはフレームワークを利用するのが一般的となっています。
-
生産性の向上
- 高度な知識を必要とするアプリケーションの土台部分をフレームワークに任せることで、設計や分析にかかる人間の意識を、土台部分には割り当てずに済み、アプリケーションの本質的な部分により多くの力を注ぐことができ、生産性が向上します。それは、結果として、コード量の減少という形にも表れます。 均質な開発
- フレームワークにはそれに合った開発手法があるため、それに乗っ取った開発を行うことで、一定の品質を保ったアプリケーションの開発を行うことができます。 テスト工程の短縮
- 洗練されたフレームワークならば、フレームワーク部のユニットテストは不要となります。 保守性の向上
- フレームワークを用いることで、アプリケーションの全体像の把握が容易になり、それに伴い保守性の向上も見込まれます。
しかし、便利なばかりに見えるフレームワークにも、以下のような欠点が存在します。
-
高い理解コスト
- フレームワークの全体像を把握するのは困難です。フレームワークを用いた開発方法が明確に示されていない場合や、フレームワークを変更したい場合には、どのように動作するのか理解する必要があります。しかし、フレームワークの構造や処理の流れを理解することは、フレームワークが多くの機能を備え、規模が大きくなればなるほど難しくなっていきます。 良いフレームワークを作るのは至難
- フレームワークは多くのアプリケーションの開発に用いられるため、共通して用いられる機能を備えている必要があります。しかし、どのアプリケーションにも共通して用いられる機能とはどういった機能なのかを判断することは難しく、さらに、どのアプリケーションでも利用しやすい形でその機能を持つことは、さらに難しいと言えます。 予期せぬ大きな変更は困難
- アプリケーション独自の機能は、予め提供されているクラスのサブクラスを実装することで実現することができます。しかし、すでにフレームワークによって実現されている機能を変更したい場合には、フレームワーク自体を変更する必要があります。フレームワークの開発時に、想定していた変更ならば簡単な作業で済みますが、想定されていなかった変更は困難な作業になります。それは、前述の理解コストが高いということに依ります。また、この変更を的確に予期しなければならないということが、良いフレームワークを作ることが至難であることにつながります。
フレームワーク班ではこれらの問題点を解決すべく、研究を行っています。最近では、特にWebアプリケーションフレームワークについての研究を行っています。