「Smalltalk で学ぶオブジェクト指向プログラミングの本質」というよりは「Cincom Smalltalk(VisualWorks)で学ぶイマドキの Smalltalk の実際」?


SMALLTALKで学ぶ オブジェクト指向プログラミングの本質

SMALLTALKで学ぶ オブジェクト指向プログラミングの本質


雑誌連載をただまとめて書籍化しただけだと侮っていたのですが、さにあらず。大幅な加筆と流れのある構成になっていて、書籍化に伴う手間がきっちりとかけられています。けっして安い本ではないので、雑誌で読み損なった回を補完しておくか…程度に思って買った私としては、うれしい誤算でした。

Smalltalk が死んだもの(アラン・ケイが言う「役割を終えた」という意味ではなく、たんに廃れて滅んだもの…という意味で)であると思い込んでいるアンテナがちょっと低めの人が Smalltalk のイマドキを知るのに、また、Smalltalk じゃなくて今は「Squeak」って言うんだよねーって書いちゃう“事情通”の人がその視野をもう少し広めるのに、さらには、Smalltalk がかつて暫定ダイナブック向け OS だったというのも Squeak がその流れを汲むのも分かるが、あの独自 GUI にはどうにもついて行けなくて入門しかねている…という向きには、ぜひ本書を手にして、実際に Cincom SmalltalkVisualWorks)を通じて Smalltalk に触れてみていただければと思います。


Smalltalk はけっして“さび付いて動かなくなって(That train rusted at the station)”などいないし、XEROX のオリジナルの Smalltalk-80 の血統には、自由奔放に育った Squeak の他に、IDE っぽい変装をうまくこなしつつ別の進化を遂げた VisualWorks があることもおわかりいただけるはずです。


ただ一方で、タイトルから受ける印象で買った人はこれで満足できるかな…との不安も感じました。

個人的にはこれまで、青木さんは、「オブジェクト指向システム分析設計入門」での“狭義のオブジェクト指向”の解説の構成や、同じ本での

オブジェクト指向を長い間やっていると,ものを中心に考えていたはずなのに,ものの関係構造を重視するようになり,ものなき関係論に傾倒する。ゴールドバーグ女史は,オブジェクト指向の本質はコミュニケーションであると言及していたが,私はそうは思わない。オブジェクト指向のプログラム(クラスライブラリ)が,現実の代替物として働き,現実の認識を助け,現実そのものを規定するように思う。

http://www.sra.co.jp/people/aoki/IntroductionToOOAOOD/chapter2/Chapter2.htm

といった発言にも垣間見られるように、氏の考える“オブジェクト指向”についての解説で「メッセージ」という言葉こそ多用されてはいるものの、その根底にはどちらかというと、メッセージングがすべてと言っても過言ではない「ケイのメッセージングのOO」よりは、データ型とは何かを強く意識させる「リスコフ、ストラウストラップ、メイヤーらの抽象データ型のOO」に近い考えがあるんだろうな…との理解でいたので、ケイの引用や、クラスを抽象データ型としてのみ用いることへの批判が書かれた「はじめに」には、ちょっと意外な感じがして驚かされました。

以降の本編も Cincom Smalltalk 処理系やライブラリやフレームワークの解説が続き、けっきょく、現在主流の「抽象データ型のOO」についてページが割かれることなく終わるので、タイトルの「〜の本質」に惹かれて買った人は、少々肩すかしを喰らうことになるかもしれません。

もっとも、Rails が火をつけた Ruby ブーム、iPhone が呼び水となっての Objective-C/Cocoa へのかつてないほどの注目など、「(不完全ながらも)ほとんど Smalltalk 的」と呼んでよさそうな考え方や手法、実装が広く再評価されつつある昨今ですから、同書を通じて Smalltalk のことを知って、それに触れることにおいて損や無駄ということはけっしてないと思います。


そんなわけで、エンプラ向けにしっかりとメンテされている Cincom Smalltalk(つまり、クオリティに問題を抱える Squeak Smalltalk ではなく…)で学ぶイマドキの Smalltalk の実際…というふうな感じで捉えた方が無難かな…というのが、実際に手にしてみての第一印象です。