2012年1月14日土曜日

オブジェクト指向の利点

Clip to Evernote
オブジェクト指向の利点については、すでに統一された見解があると思います。

本エントリでは私なりにそれを考えてみたいと思います。
つまりは私が、システム開発のどのような点を重要だと考えているかを反映するものになるはずです。

もちろん私もオブジェクト指向についてそれほど理解しているつもりはありませんが、将来理解したときにこのエントリを見返すことができるのは、なかなかに価値がありそうだと思うのです。


一つめの利点



私が一番重要だと考えているのは、並行して開発を進められるようになることです。

システム作りの特徴からいって、開発は一人で行うのが最も理想的であるのは間違いありません。
このことを『人月の神話』では「コンセプトの統一」と呼んでいるわけですが、つまり、システムの大枠から細部に至るまでが統一された思想によって作成されるのが良いのです。

複数人で開発すれば、当然その思想にずれが生じます。
例を挙げれば、仕様にもモデルにも書かれていない部分をどのように実装するかは、それを行う人によって異なってくる、といったことです。

残念ながら、この小さなずれが後にシステム全体の欠陥を招くことになります。

ですので開発は一人で行うのが理想的となるわけですが、その場合、それにかかる期間がまったく現実的でなくなってしまいます。

ここからやむを得ず、複数人で開発することが一般的になりました。
ここでオブジェクト指向は、とても巨大で複雑なシステムを、それぞれの干渉が少なくなるように分割することを可能にします。

現状、システムの本質的な複雑さと大きさに対応する方法は他にありません。


二つめの利点



二つめは、モデルが書けるようになった点です。

やはりシステムは複雑であるため、すでにソースコードから書き始めることはありえなくなっています。

モデルを描く際にオブジェクト指向を念頭に置くと、
[現実] - [モデル] - [ソースコード]
のマッピングがやりやすくなります。
オブジェクト指向は、現実に則した物の見方をしているからです。


三つめの利点



三つめの利点は、GoFデザインパターンのTemplate Methodが利用可能になることです。

これだけは、オブジェクト指向以前には絶対に不可能でした。

簡単に説明すると、システムの大枠を考える人と詳細を実装する人が別にいて、詳細での記述がどうなっているか知らなくても、外から見た挙動さえわかれば問題ないというものです。
詳細に立ち入らなくてよくなった点で、システム開発を楽にしたのは間違いありません。


以上の利点



冒頭に「システム開発のどのような点を重要だと考えているかを反映するものになる」と書きました。

私は「システム開発は非常に複雑で大規模なものを相手にするため、本質的に困難である」ことを、何よりも考えています。

その視点で上に挙げた利点を見返してみると、かなり様子がわかりやすくなると思います。


終わりに



もちろん、銀の弾丸にはなりません。