「オブジェクト指向でなぜつくるのか」を読んだ

会社の先輩に借りた「オブジェクト指向でなぜつくるのか」を読み終わったのでその感想を書きます。

読んだ本について

読んだのはこちらの本です。

オブジェクト指向でなぜつくるのか 第2版

オブジェクト指向でなぜつくるのか 第2版

↑のリンクは第2版ですが、私が読んだのは2004年に出版された第1版でした。こちらの著者の方のページで説明されている通り、私の読んだ第1版から、現在最新の2版では内容が結構変わっているようです。本記事はあくまで第1版を前提とした内容で書いています。

感想

全体

タイトルや表紙からは堅めな技術書の匂いがしますが、実際はそれに反して初心者が読むことを前提とした説明がなされていました。サンプルコードや図もこれでもかというぐらい載せられており、出先でもサクッと読み進めることができます。

さて書名にもなっている「オブジェクト指向でなぜつくるのか」という問いですが、結局自分の中でしっくりとくる答えは見つけることはできませんでした。ただ「なぜオブジェクト指向が作られたのか」については、読む前よりも理解が深まったような気がします。これは大きな収穫でした。

本書の内容は大きく2つに分けることができます。 プログラム技術としてのオブジェクト指向を説明した1~6章と、そこから派生したソフトウェア設計手法としてのオブジェクト指向を説明した7章以降です。 特にプログラミング技術という文脈でのオブジェクト指向について知りたかったので、前半はしっかりと2,3度、後半はさらっと1度だけ読みました。

前半部分

本書では一貫して、「オブジェクト指向が現実世界をそのままソフトウェアに表現する技術である」という(よく為されがちな)説明とそこから派生する例え話を「間違い」と批判しています。(38ページ) よく初心者向けの本で使われる「犬がクラス、ポチやハチがインスタンス」みたい例え話のことですね。

そういった例え話をたくさん聞いて「で、実際にどうコードにするの?」とモヤモヤしていた私にとって、「現実世界との対比は、例え話と割り切るのがコツ」(58ページ)という本書のスタンスは、ある意味、目から鱗でした。

その前提の元、以下のような内容がありました。

  • オブジェクト指向が産まれるまでの経緯。
  • オブジェクト指向の三大要素
    • クラス・ポリモーフィズム・継承
    • サンプルコードが多くあり、「こういう時に」「こうすれば」「こう嬉しい」ということを確認しながら三大要素を理解することができました。
    • この辺も言語仕様として知っていても、自分の手で書けないという状態から一歩進むのに有意義だと思います。
  • オブジェクト指向プログラミングのメモリの使い方
    • プログラムの実行中、メモリがどのように使われているのか解説します。著者曰く「プログラマのたしなみ」だそうです 😩
    • 専門的な勉強をしたことがない私にとって、とっつきにくい部分ではありましたが、図をたくさん使って説明してくれているので、「あー確かにメモリの節約になっている」ということを理解することはできました。

再び全体

後半部分は前述の通りさらっと読んだので、「そういうのがあるんだね」ぐらいの理解でした。必要になったらまた戻ってきたいと思います。

マイナス点も少し上げます。

  • たとえ話は混乱の元になる、という論調ですが、本書内でも時たま変な例え話が出てきます。そして大抵はてなマークの浮かぶ例え話でした。まあそれだけ例え話がリスキーなんだと思いました・・・
  • 前後半はある意味全く異なったレイヤーの話でした。突然違う話が始まり、私は最初「ん?理解できない!!」と混乱しましたが、後から考えるとそれもそのはずという感じです。初めて読む方はお気をつけください。

全体として、「オブジェクト指向に変な理解をせず、1つのプログラミング技術として捉えるべき」という思いが底流していました。 機会があれば次は最新の版を読みたいと思います!!