Edited at

Smalltalkをちょっとかじってみたい人のための、チュートリアルまとめ

本格的に勉強する気はないけれど、名前だけはやたらよく出てくる Smalltalk とやらを一度くらいはさわっておきたい…という場合、その一端を垣間見させてくれるチュートリアル(ミニマルな例で主要な機能などに一通り触れる形式の補助教材)を活用するのがおすすめです。

Smalltalk の処理系には、始祖的な XEROX社 Smalltalk-80 系譜の処理系(順当な進化の VisualWorks、リリース前のv1から独自進化した Squeak、Squeak からさらに派生した Pharoなど)の他に、メーカーオリジナルの処理系(Dolphin SmalltalkVA ~旧IBM VisualAge~ Smalltalkなど)や、ファンお手製の処理系・変わり種(GNU SmalltalkAmber Smalltalkなど)がありますが、個人的には Smalltalk-80 の直系の子孫である Squeak/Pharo 、VisualWorks あたりから始めるのが無難かな…と思います。

Smalltalk は処理系によって見た目や流儀がかなり違うのと、同じ処理系でもバージョンによって大きく使い勝手が変化していることもあるので、チュートリアルを選ぶときには、そのチュートリアルが対象としている(あるいはそのチュートリアル向けにカスタマイズされた)処理系とそのバージョンを入手してセットアップ(と動作確認)しておくことが重要です。インストールのしかたは、チュートリアルの最初のほうに書いてあることが多いですが、わからなかったら @sumim にもでお気軽におたずねください。

あと注意として、どうせ触るなら最新版を…と思われがちですが、これはおすすめできません。Smalltalk を触ってみたいというモチベーションの裏には、あるいは Smalltalk の○○という機能を使ってみたい…といった具体的な目的があるかもしれませんが、まずは Smalltalk 独特の「コツ」とか「作法」、「考え方」のようなものを会得することに集中したほうがいいと思います。そのためには、バージョンの差異などによってチュートリアルに書いてあるとおりに動かない、などといった障壁はできるだけ取り払っておくべきです。ですから、選んだチュートリアルが対象とするのバージョンが、たとえ目的の○○という機能をまだ備えていない古いバージョンであったとしても、あえてそのバージョンで学習を進めるべきです。ひとたび「Smalltalk とは何か」さえ合点がいってしまえば、その後、○○という機能を備えた最新版を試すのはそう難しいことではなくなるので、それまでの辛抱です。

もうひとつ、自分は××言語には詳しいのでその応用でなんとかなる…という姿勢もできればさけたいです。Smalltalk は仕組みや考え方は驚くほどシンプルですがそのやり方はかなり変わっています。自分の知っていることに無理矢理当てはめて Smalltalk を理解しようとすれば無用な混乱を招きますし、勘違いしたまま学習を終えてしまう危険性もあります。これまでの常識や経験は忘れて、むしろ Smalltalk の奇妙キテレツさを愉しむ心の余裕が、多くの発見と驚きをもたらすでしょう。



▼ Pharo by Example [英語][日本語]

http://pharobyexample.org

セットアップ済みの対象処理系は同ページ「Pharo By Example image」から入手可

邦訳がある http://www.smalltalk-users.jp/Home/docs




※なおこの Pharo by Example に関しては、現時点で最新の Pharo 4.0/5.0 向けに改訂された版 も存在するので、英語のみでも大丈夫な方はこちらをお薦めします。


チュートリアルではありませんが、Pharoを教材に用いた MOOC(Massive Open Online Course, 大規模公開オンライン講義)もお薦めです。登録すれば日本語字幕での受講も可能です。(無料)

Pharo MOOC: Live Object Programming in Pharo



▼ Squeak by Example [英語]

http://www.squeakbyexample.org

推奨仮想イメージ(Smalltalk では、処理系の大部分が Smalltalk自身で記述されており、それを構成するオブジェクト群やその他の実行時オブジェクト群をまるっと永続化したファイルを「イメージ」と呼びます)は同ページ「Squeak by Example image」から入手可。各ホストOS向けの仮想マシン等 Smalltalk環境を動かすためのファイル一式はこれとは別に必要となります(http://ftp.squeak.org/3.9/ 等から入手可。たとえば Windows なら Squeak3.9-win32.zip を入手して動作を確認後、同梱の .image とそれと同名の .changes を SqueakByExample-1.3.zip のものと置き換えて使うと簡単。起動は SqueakByExample-1.3.image を Squeak.exe にドロップイン)。



▼ 自由自在 Squeakプログラミング [日本語]

http://swikis.ddo.jp/squeak/13

演習用イメージ(同上。仮想マシンが別途必要)が http://swikis.ddo.jp/squeak より入手可



▼ Laser Game - A Development Example for Squeak 3.9 [英語]

http://squeak.preeminent.org/tut2007/html/index.html

Squeak 3.9 は仮想イメージ・仮想マシンともに ftp.squeak.org から入手可

ftp://ftp.squeak.org/3.9/



▼ Smalltalkで学ぶオブジェクト指向プログラミングの本質 [日本語(有料)]

http://www.amazon.co.jp/dp/4822283623

付録CD-ROM に演習用の VisualWorks 仮想イメージ添付(仮想マシンは Win用以外は別途必要)



▼ VisualWorks チュートリアル [日本語]

http://smalltalk.cincom.jp/tutorials/index.ssp

日本語化 7.7 向け。本稿執筆時点(2014年)に入手できるのは 7.10(英語版)であるため、適宜、読み替えは必要。

http://smalltalk.cincom.jp/ncform