「オブジェクト指向言語解体新書」が神ってた話

10月に行われた技術書典3、行きましたか?
私も当日いろいろ本を買ったのですが、その中の一冊「オブジェクト指向言語解体新書」が、今年読んだ本の中で一二を争うレベルですばらしい内容だったので、感想を書き残しておきます。
※技術書典から1ヶ月以上経っているのは、単に積ん読してたからです。こんなにいい本だとは思わなかったもので...

f:id:Udomomo:20171202203947p:plain:w200

http://shop.comiczin.jp/products/detail.php?product_id=34612

オブジェクト指向は、初心者でつまづかない人はほぼいない、一種の鬼門なわけですが、
入門書では何かしらの比喩を使って説明しているものが多いです。
例えば「哺乳類を継承した犬と猫がいて、両方とも「鳴く」「歩く」などができる」みたいな。

こういう比喩を使う理由もわかります。全くの初心者が相手の場合、「なんとなくわかる」レベルでもいいのでとりあえずコードを書いてもらわないと挫折しやすいからです。
ただ、ある程度基礎が身につき、少し複雑なコードを書こうとすると、比喩に頼った理解だけでは限界があります。
私自身、クラスを使った処理は書けるものの、それがどういう仕組みなのかを説明できず、is-aポインタや多態など少し抽象的な考え方になるとさっぱりでした。それでも仕事をまわすことはできるのですが、どうも落ち着きません。

この本は、そんな悩める「中の下」レベルの人たちのために書かれた本です。

f:id:Udomomo:20171202204004p:plain

これは裏表紙の画像です。この図がこの本のコアであり、2章以降でその意味が詳しく説明されています。
オブジェクト指向をマスターした方にとっては常識かもしれませんが、私はこんな内部の処理まで想像したことがありませんでした。
個人的には、こうやって中の仕組みを丁寧に説明してくれる方が、下手に比喩を使うよりも理解しやすいです。

この本では比喩は一切使われていません。それでも(むしろそうだからこそ)文章がとてもわかりやすく、一つひとつ理解していけます。
1章で「オブジェクト指向として本当に重要な性質は『多態』です」と書いてあって「?」となったのですが、後半まで読むと「多態すげぇ...」と言えます。
(皮肉なことに犬や猫の比喩も、この本を読むことでやっと真の意味を理解できました)

また、この本では特定の言語に縛られず、オブジェクト指向言語全般を扱っています。サンプルコードもJava, Python, JS, Rubyなどいろいろ出てきます。
この本の意図ではないかもしれませんが、オブジェクト指向という共通の考え方のもとでいろいろな言語に触れたことで、新しい言語に対する抵抗感が減った気もします。

もちろんこの本を読んだからといって、すぐに自分で見事な設計ができるようになるわけではないですが、
まず先輩のコードや良いライブラリのコードがどのような意図で設計されているのかを理解するのに役立ちそうです。

他に買った本も早く読まないと...