オブジェクト指向は最初プログラミング言語として登場しました。その後、拡張・発展してソフトウエア開発のさまざまな分野に適用されていきました。この過程を簡単に振り返ってみましょう。図1.1に、オブジェクト指向の全体像と発展過程を示します。

 オブジェクト指向の起源は、1967 年にノルウェーで考案されたSimula67(シミュラ67)というプログラミング言語です。この言語はクラス、ポリモーフィズム、継承という、それまでなかった優れた仕組みを備えており、後に最初のOOP*1( オーオーピー、Object Oriented Programming language:オブジェクト指向プログラミング言語)と呼ばれることになりました。この仕組みはアラン・ケイ氏の率いる米ゼロックス社のチームが開発したSmalltalk(スモールトーク)に引き継がれて、「オブジェクト指向」というコンセプトとして確立しました。その後、C++(シープラスプラス)やObjective-C(オブジェクティブシー)、Java(ジャバ)、C#(シーシャープ)、Ruby(ルビー)、Python(パイソン)など、同様の仕組みを備えたプログラミング言語が数多く考案されて現在に至ります。

 このOOP を利用することで、それまでは不可能だった大規模なソフトウエアの再利用部品群を作ることが可能になりました。これらはクラスライブラリやフレームワークと呼ばれます。またそうした再利用部品群を作る際に利用されたお決まりの設計のアイデアがデザインパターンとして抽出されました。

 さらにOOP の仕組みを利用して作るソフトウエア構造を図式表現する方法が考案され、最終的にUML(ユーエムエル:統一モデリング言語)としてまとめられました。加えてOOP の考え方を上流工程にも応用したモデリングや、システム開発全体を柔軟に進めるためのアジャイル開発手法も考案されました。

 このように今では、オブジェクト指向はソフトウエア開発全体をカバーする総合的な技術になっています。これらの技術は、それぞれ対象とする領域や内容が異なりますが、ソフトウエア開発を円滑に進めるという目的では一致しています。そして、こうした先人の工夫やノウハウを活用することで、ソフトウエアの品質や再利用性を向上させることが可能になります。


*1 厳密には「オブジェクト指向プログラミング言語(Object Oriented Programming Language)」をOOPL、OOPLを使ってプログラミングをすることをOOP(Object Oriented Programmingの略)と呼ぶのが正しい表現です。しかし本書では、オブジェクト指向言語の仕組みと、それを使ってプログラミングすることを厳密に区別せず説明する場面が多くありますので、すべてOOPと表現します。


one photo/Shutterstock.com
one photo/Shutterstock.com