『オブジェクト指向でなぜつくるのか 第3版』の「まえがき」を以下に公開いたします。ぜひ、本書の狙い、経緯、内容構成を知っていただければ幸いです。

まえがき

 2000 年以降、オブジェクト指向言語を使ったシステム開発が一般的になりました。Java、Python、C#、JavaScript、PHP、Ruby は、どれもオブジェクト指向プログラミングを全面的にサポートしています。フレームワークやデザインパターン、UML、アジャイル開発といった技術や手法も広く利用されるようになりました。オブジェクト指向は目新しい技術でなくなった一方で、実際にソフトウエア開発をするうえで、きちんと理解して使いこなさなければならない技術になりました。

とはいえ、オブジェクト指向はソフトウエア開発の幅広い領域をカバーしており、個々の技術には深さがあるため、すべてを理解するのは容易ではありません。「モノ中心」というコンセプトとプログラミングの仕組みのギャップで混乱しやすい技術でもあります。

 そこで本書では、オブジェクト指向の全体像とそこに含まれる各種の技術、すなわちプログラミング、フレームワーク、デザインパターン、UML、モデリング、設計、アジャイル開発手法の概要を説明します。個々の技術をどうやって使うか(how)の説明は最小限にとどめる代わりに、それぞれが何者(what)で、なぜ必要なのか(why)を中心に解説します。混乱を避けるために、プログラミング技術と上流工程の整理術は別物と割り切るスタンスを取ります。全体像と目的を把握できれば、個々の技術がより理解しやすくなることでしょう。

 本書の初版は2003 年から2004 年にかけて執筆しました。当時はJavaや.NET が企業システム開発の主役になりつつある状況で、オブジェクト指向プログラミングだけでなく、UML モデリングやデザインパターン、アジャイル開発手法などが大きな注目を集めていました。「オブジェクト指向を使えば現実世界をそのままプログラミングできる」「オブジェクト指向は従来とはまったく異なる技術なので、それ以前の手法や技術は捨てなければならない」といった極端な説明がされることもありました。 そうした説明を聞いて、オブジェクト指向を適切に理解できず混乱する人たちを当時はよく見かけました。そんな人たちに向けて「オブジェクト指向は決して魔法の技術などではなく、極めて実践的な従来の延長線上の技術である」と伝えたいと思ったのが初版の執筆動機でした。

 一方で、最初に出会ったプログラミング言語がオブジェクト指向だった世代の人たちは、オブジェクト指向のコンセプトやプログラミングで混乱することはないだろうと考えていました。ところが、そうした人たちにとっても、この技術は簡単に身につくものではないようです。初めてプログラミングを学んだときにif 文、for 文、関数までは比較的スムーズに理解できたものの、クラス、インスタンス、コンストラクタ、継承、ポリモーフィズム、例外と一気にたくさんの仕組みが登場するオブジェクト指向プログラミングで苦戦する人たちは今でも少なくないようです。

 そこでこの改訂第3 版では、そんなオブジェクト指向ネイティブ世代を対象読者にして、内容を見直すことにしました。初版では、「オブジェクト指向は現実世界をそのままプログラミングする技術である」という解釈を否定することに重点を置きましたが、そのトーンを弱め、オブジェクト指向がなぜ難しいのかをより客観的な視点で説明するようにしました。あわせて、すべての文章を読み返し、2021 年の現状を鑑みて加筆と修正を行いました。

 大変喜ばしいことに、最近ではプログラミングに関心を持つ人が増え、IT 技術者という職業の人気も以前より高くなってきたようです。一人でも多くの人が要件定義や設計、プログラミング、テストといった知的なソフトウエア開発に楽しんで取り組まれることを願っています。本書がいくらかでもそのお役に立てれば幸いです。


2021年2月 平澤 章