3 つめの理由はオブジェクト指向というコンセプトが抽象的なことです。

 1 つめの理由で述べたように、オブジェクト指向プログラミングの仕組みはかなり複雑な一方で、「モノ中心」あるいは「モノ指向」というコンセプトはとてもシンプルなため、簡単に理解できます。そして、このコンセプトは応用範囲が広いため、現実世界の人や組織、物事や出来事、コンピュータシステムの機能、システムが管理する情報、プログラムの構成要素など、さまざまなものに当てはめることができます(図1.4)。

 このため、このコンセプトをソフトウエアの設計やプログラミングだけにとどめず、要件定義や業務分析・企画などの上流工程にも適用しようとする考え方が登場しました。これは、ソフトウエア開発全体をオブジェクト指向の考え方で一貫して進める開発手法で、オブジェクト指向が普及し始めた1990 年代には、数多くのオブジェクト指向分析・設計方法論が提唱されました*1。またOOP の仕組みが現実世界の様子とよく似ていることから、オブジェクト指向で現実世界の様子を整理して、それをそのままプログラミングすればうまくいくはずだとする考え方も生まれました。

 しかし、こうした考え方にはまぎらわしい落とし穴がありました。それは、OOP の仕組みと現実世界の様子にはよく似ているところがあるものの、まったく同じではないことです。加えて、現実世界で人間が行う仕事の範囲と、コンピュータ上でソフトウエアが行う仕事の範囲も多くの場合は異なるため、人間が行う仕事をオブジェクト指向で整理し、それをそのままプログラミングしようとしても実際にはうまくいきません。

 このように、現実世界の様子とOOP の仕組みが「似て非なるもの」であることのまぎらわしさや、哲学的な響きを持つ「オブジェクト指向」というコンセプトが魅力的だったことが、かえってこの技術の実態をわかりづらくし、混乱を招きやすくしています。


*1 こうしたオブジェクト指向分析・設計方法論には、代表的なものだけでもOMT法、Booch法、OOSE法、マーチン・オデール法、シュレイヤー・メラー法、コード・ヨードン法、フュージョン法などがあります。



fizkes/Shutterstock.com