OO開発の効能
生島さんのコラムは、毎回歯切れがよくて、楽しく拝見させていただいていますが、現場でシステム構築をする人々にとって、関心の強い内容を多く含んでいることもあって、賛否両論意見交換が盛んです。
ここでの議論の1つのテーマは、オブジェクト指向開発の生産性というかメリットについてということだと思います。
日頃、オブジェクト指向とは少なからず関係する私としても少しコメントしたくなりました。
まずは、玉虫色のコメントを。
VB6擁護派および.NET派の主張双方とも一理ありだと思いました。
私見ですが、オブジェクト指向導入(この導入にも度合いという程度を考慮しないといけませんが)の効果度合いは、その対象とするソフトウェアの規模、ライフサイクルの長さと変更頻度によると思います。
つまり、一般的な日本での構築スタイルであるSIベンダーが顧客企業向けのあるシステム構築を請け負ってプロジェクトとして開発するというスタイルで行う場合、その効果はなかなか発揮しずらいのではないかと思います。(プロジェクト契約には当然その保守も含まれると思いますが、それも通常はハードの償却期間程度までしかふくまれず、それ以上の継続性がないのが普通ではないでしょうか)
一方、OOが効果を発揮する典型例は、ソフトウェアパッケージです。
これは、各顧客向けにカスタム品として提供するのではなく、ある程度汎用製品として提供しますので、機能の抽象度を高める必要がありますし、様々な顧客ニーズを取り込むには、変更に強くなければならない、これは顧客基盤が大きくなればなるほど差がでてきます。そして一度作ったパッケージはそんなに簡単にやめるわけにはいきませんのでライフサイクルは長くなります。
(最大の効果を得るためには、全顧客に同じバージョンを使っていただくのが一番ですが、実際は、これはまたなかなか難しいところです)
結局は、長いレンジでのトータルコストで見ないと効果は計れないと思います。
どなたかが計測が重要とおっしゃっていましたが、これはまさしくそのとおりですが、現実そんな長いレンジでの計測が可能かどうか、難しいところではないかと思います。