フレームワークを使った開発をしていて、なぜか気分が重い。開発は楽になっているはずなのに、心が晴れない。その理由を、今から明確に説明します。
説明を円滑に進めるために、まず、ここでいうフレームワークを以下のように定義しておきます。
ソースコードの品質を保つため、一定のルールを強制する枠組み。未熟なプログラマでも、ルールに従うことで、一定レベル以上のプログラムを作成できるようにするもの。ライブラリとフレームワークは、明確に区別する。
よく、ライブラリとフレームワークは混同されますが、ここでは、明確に区別します。必ず使う必要があるものがフレームワークで、使うかどうかの選択権が開発者にあるものが、ライブラリとします。
Strutsは、ほぼ純粋なフレームワークと見ていいでしょう。Jakarta Commonsのプロジェクト郡は、ライブラリです。
ここから、本題です。
まず、勘違いしないで頂きたいのが、特定の人にとっては、フレームワークを使った開発はとても楽しいということです。内部設計ができず、独力ではアプリケーション全体を開発できない人が、それに当たります。
フレームワークを使った開発を、つまらなく感じる人は、その逆です。内部設計ができて、標準APIだけで、アプリケーション全体が作成できる人が、それに当たります。
それでは、なぜ、後者の方たちの多くは、フレームワークを使った開発が、楽しくないのでしょうか?開発工数は、減っているにも関わらず・・・。
理由は、2つあります。
1つ目は、自己価値の喪失です。プログラム開発というのは、本来、一定レベル以上のスキルが要求され、誰にでも出来るものではありません。今まで、開発者は、プログラムを、自分の力で開発することで、自分の価値を見出すことが出来ました。しかし、フレームワークを使用した開発では、一定のルールさえ覚えてしまえば、スキルの低いプログラマでも開発できてしまいます。せっかくスキルを高めても、フレームワークを使う以上、それは特に必要とされません。「私が死んでも、代わりはいるもの」では、自分の生きている意味を見出せなくなってしまいます。
2つ目は、自己実現の阻害です。プログラミングは、とてもクリエイティブな仕事であると言えます。工夫次第で、生産性は何倍にもなるので、自然と成長を図りたいと思うようになります。その作業は、非常に創造的です。しかし、フレームワークを使用した開発では、「創造性=悪」になります。そこでは、プログラマの創造性は発揮されず、アプリケーションは、フレームワーク開発者の知識の中に収まったものになります。
フレームワークを使用する場合は、まずプロジェクト人員のスキルを、見極めることが重要です。スキルの低い人員が多い場合、個人的には、人員への教育で乗り越えるべきだと思いますが、一定の品質を確保するため、フレームワークを適用するという選択もアリでしょう。
ただ、スキルのある人員に対して使用してしまうと、それは、プログラマの成長を止め、創造性を奪う結果になることは、覚えておかなくてはなりません。