フレームワークの活用

フレームワークを活用すれば、システム開発を効率よく進めることが出来ます。ソフトウェアの開発効率を向上させる有効な手段です。

フレームワークとは何か

フレームワークとは、アプリケーションの標準的な構造をまとめた仕組みの総称です。ライブラリよりも広義な意味で使われます。たとえばStruts(ストラッツ)というフレームワークは、WEBアプリケーションを開発するためのJava言語で作られたクラス群である。ASP.NETであれば、.Net Frameworkがあります。現在のソフトウェア開発では、フレームワークを利用することで高品質・高生産性を実現させることが圧倒的に多いです。ただのJavaによってゼロからソフトウェアを作っていくことはもちろん可能です。しかし、例えばWEBブラウザとWEBサーバとのデータ通信を実装するために、フレームワークが提供するクラス・ライブラリを利用することで、短時間で高品質なソフトウェアを作ることができます。

なお、フレームワークは開発方式や開発手順を表す言葉ではありません。ソフトウェア開発のための枠組みという表現もありますが、それはフレームワークが提供するクラス・ライブラリによって、プログラミングの方法が制限される、という意味での枠組みです。

Strutsというフレームワークは、前述の通りJava言語によって作られたクラスの集合体です。Java言語はオブジェクト指向開発に向いている言語であり、StrutsもObject指向に沿った使い方をします。例えば、HttpServletクラスにはinit()メソッドやdoGet()メソッドが定義されてあります。そのHttpServletクラスを継承し、 独自にSampleHttpServletクラスを定義し、init()やdoGet()をオーバーライドすることで、HttpServletによる恩恵を受けることができます。HttpServletクラスはGenericServletクラスを 実装しているため、Httpリクエストの種類によってSampleHttpServletクラスに定義したinit()メソッドやdoGet()が呼び出されます。


ライブラリ、フレームワーク、パッケージの違い

ライブラリとは、あるソフトウェアを構成するアプリケーションから呼び出されるAPIの総称です。DB接続や切断など、汎用的な処理を APIとして切り出したものをライブラリと呼びます。フレームワークは前述したとおり、アプリケーションの標準的な構造をまとめた仕組みの総称です。つまり、ライブラリはAPIを意味するのに対し、 フレームワークはAPIとその使い方、構造を意味します。パッケージはある特定のサービスを提供するためのソフトウェア群の総称です。SAP/R3に代表されるように、パッケージはそれ自身でサービスを提供することができます。フレームワークはフレームワークの構造に従ってシステムやソフトウェアを開発するために拡張しなければなりません。ライブラリ、フレームワーク、パッケージという言葉は混同されがちであるが、それぞれの概念が異なるのです。どれがどれを内包したり、大小の関係性を持つことはありません。

フレームワークの弊害

フレームワークを利用してソフトウェア開発を行う場合、ゼロからアプリケーションを作る必要がなくなります。フレームワークを大いに利用し、 システムを作るための時間やコスト、あるいは品質を有利にすることができます。しかしながら、フレームワーク自身にバグがあったり、機能性が低い場合は 開発効率が著しく低下してしまいます。大規模なシステム開発を行う場合、オープンソースのフレームワークや、有償で使うことができるフレームワークを システムに合わせて拡張するのが一般的です。この拡張に失敗することがあり、それは開発全体に大きな悪影響を及ぼします。フレームワークを利用する開発者にとっては、 フレームワークによって提供されたAPIの動作が保証されていることが前提であるから、ここに致命的なバグがあってはなりません。また、フレームワークを利用するための方法や、使い方を示したドキュメントが充実していることも、フレームワークによる恩恵を最大限に引き出すために必要なことです。