tsyama記

プログラミングとそのほか

『オブジェクト指向でなぜつくるのか』を読みました

はじめに

2か月半ぶりの読書レポートです。もうちょっとハイペースで読みたい。

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

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

3行まとめ

  • オブジェクト指向がわかりたい人のための本
  • プログラマからエンジニアになりたい人のための本
  • おすすめの技術書を紹介してもらいたい人のための本

こんな感じだと思います。

オブジェクト指向がわかりたい人のための本

タイトルにある通り、オブジェクト指向を丁寧に解説しています。

解説の仕方にも力を入れていて、世のオブジェクト指向に関する解説がわかりにくい理由の仮説を立てたうえで、本書でオブジェクト指向を解説する際のルールとして、

1) 紹介する用語や概念は最小限にする。
2) 比喩による説明は最小限に抑える。比喩を使う場合にはその旨を明示する。
3) プログラミングの仕組みと、「モノ中心」で汎用的に物事をとらえる考え方は別物として、分けて説明する。

という方針を取っています。

また、オブジェクト指向を解説する際のアプローチとして、「歴史」や「他の言語との比較」、「メモリの仕組み」といった複数の観点を取り上げており、オブジェクト指向の正しい姿を感じ取るのによい参考書となりました。ネット上の一記事でオブジェクト指向をわかった気になっている自分のような人間は、ところどころで目から鱗が落ちると思います。

個人的にはオブジェクト指向が生まれるまでの歴史が読みやすく、かつどういった要求からオブジェクト指向が生まれたのかという流れが把握できたのでおすすめです。具体的にはこんな感じ。

パッケージや例外などの、オブジェクト指向により生まれた新たな仕組みの話も面白い。
メモリの仕組みからみたオブジェクト指向についてはなかなか難しかったのでまた読みましょうね。

プログラマからエンジニアになりたい人のための本

本書を読んで初めて実感したんですが、オブジェクト指向というものは素晴らしすぎて、単なるプログラミング分野のひとつの考え方にとどまらず、設計や上流工程にも応用できる考え方になっているようです。本書でも後半はオブジェクト指向から広がった上流工程の考え方をメインに解説しています。

今はまだプログラミングにしか目が向いていない「プログラマ」の人たちも、オブジェクト指向というキーワードを軸にして視野を広げることで、「エンジニア」としてのものの見方が見えてくるはずです。

具体的なキーワードとしては「デザインパターン」や「モデリング」、「UML」など。さらには「アジャイル開発」や「TDD」なんかの話も出てきます。正直最後の方はほとんどオブジェクト指向関係ないんですが、オブジェクト指向がなければアジャイル開発もTDDも生まれてなかっただろうというのも確かにそうだなと思うし、下流から上流まで一通りのキーワードをかき集めて「オブジェクト指向」という軸を通し、一冊にまとめあげているのは気持ちいいうえに「この本一冊で色々わかる!うれしい!」というお得感がありました。

後半部で個人的に好きなのは、プログラミング技術でいう「オブジェクト指向」と上流工程で用いられる「オブジェクト指向」は別の考え方である、ときっぱり切り分けているところですね。ここを明確にしていることで後半部がかなり読みやすいものになっていると思います。

UMLとかTDDとか、今まであまり身近に触れてこなかった技術でも、オブジェクト指向の延長線上にあると聞くと、「ちょっと手を出してみようかな」と思わされるから不思議です。

おすすめの技術書を紹介してもらいたい人のための本

上記に書いたように、オブジェクト指向というキーワードはエンジニア界隈を思ったよりも広くカバーしていて、本書ではそれを通覧することができます。
広いキーワードであるぶん、一つ一つのトピックは浅めで物足りなさを感じるんですが、それをカバーするように各章の最後に「より深く学ぶための参考書籍」が紹介されています。

「技術書って何から読めばいいかわからない」という自分にはこのシステムがとてもありがたく、今回で読みたい本がいろいろできました。この本をプログラミングに関するひとつのポータルとして読み始めるのもいいんじゃないかなーと思います。

とりあえず僕は結城先生の『Java言語で学ぶデザインパターン入門』を手に取りました。

おわりに

本を読もう。