2010年5月5日水曜日

死語の世界:オブジェクト指向

30年以上前の発行ですが,「人月の神話」という題の本があります.
この本にプログラム開発に狼男を倒す銀の弾丸はないという話がありました.
いまだ,この話は正鵠を射ていると思います.

で最近,「オブジェクト指向で開発する」という案件を聞きました.
これからはオブジェクト指向だそうで,優秀なオブジェクト指向技術者を集めて,
新しい製品を作るらしいです.

オブジェクト指向が流行りだしたのは1980-90年代だと思います.
オブジェクト指向で開発すると「素晴らしいなにか」があるらしいです.
今年は2010年ですが,まだそんなことをいう人がいるものだと.

 Java,C++,RubyやPythonといったオブジェクト指向言語は多数あり,
 今の若手開発者はオブジェクト指向言語で開発しています.

でも生産性とか効率は,昔のCとかで作っていたころと大差ないのが現状です.
で,オブジェクト指向を知らないマネージャーや営業は,
「オブジェクト指向がしっかりできていないから生産性が上がらない」
と思っているようです.
UMLとRUPとかXPとかなんらかの技術力が足らないという意見らしいです.

技術者でもたまに,「現実をオブジェクトとしてモデリングする」みたいなことを真顔でいう人もいます.(初期のオブジェクト指向方法論の教科書が今も流通しているのでしょうか?)

やれやれだぜ.

ここからは私見になるかもしれませんが,私の考える「オブジェクト指向」のメリットはなにかを書きたいと思います.

オブジェクト指向の最大且つ唯一のメリットはフレームワークを作れること.

と考えています.

古くはMacApp,ET++,MFC,新しくはRuby On Railsといったアプリケーションフレームワークが
オブジェクト指向の成果として上げられます.

私は,「フレームワークによる再利用性の向上こそがオブジェクト指向の最大の利点」と認識しています.

しかし,現実には,1度作ったプログラムをうまく再利用するのは,技術以前の問題があります.
たとえば,A社向けに作ったシステムを他のB社,C社に展開する
といったことができれば,再利用性の向上は有効です.

しかし,日本のソフトウェア開発は自社製品開発より,作業請負で行うことが多く,
A社向けの作業成果は,簡単にB社,C社に持っていくわけにはいかなかったりします.
(著作権を発注者が持つ場合もあれば,A社担当者と,B社,C社の担当者が異なる場合もあります)

そもそも作業請負で,迂闊に作業効率を向上させると,売り上げが落ちるという問題があります.

結論:日本終わったな.