vieweditattachhistorytopchangessearchhelp

第82回


■SqueakではじめるSmalltalk入門   第82回  鷲見 正人


前回は、Squeakと同じXEROXのオリジナルSmalltalk-80の系譜の、しかし子供向けの暫定ダイナブック色の濃いSqueakとは違い、プロプログラマ向けの本格的IDE然としたVisualWorksをご紹介しました。今回は、これら“純正”のSmalltalkに触発されて、いまなお作られ続けているSmalltalkファンお手製の独自のアレンジのSmalltalk処理系について、とくにOS Xで動作させられるものをご紹介します。

▼Little Smalltalk、GNU Smalltalk
Smalltalkのある意味“クセ”のあるGUIは介さずに、通常の言語処理系のようにUNIX系OSの標準入出力を通じて(つまりCUIで)Smalltalkを使いたい…という要望は古くから根強くあるようです。そうしたGUI抜きSmalltalk処理系としての存在で、古くから有名なものに「Little Smalltalk」があります。文字通り、非常にコンパクトなSmalltalk処理系を作るための技術解説書籍とともに、全ソースコードも提供されていました。当時は高価で縁遠い存在だった“ホンモノ”のSmalltalk-80に直に触れて、ハックすることができなかった言語オタク達には、Little Smalltalkはよい遊び道具になっていたようです。

驚いたことにLittle Smalltalkは、Little Smalltalk自身のファンの手により現在も「Little Smalltalkプロジェクト」管轄下でのメンテナンスが行なわれています。

http://www.littlesmalltalk.org/index.php?page=home

余談ですが、Little Smalltalkの生みの親であるティモシー バッドは、これとは別に「Javaアップレット版Little Smalltalk」と呼べそうな「SmallWorld」を作って公開しています。

http://web.engr.oregonstate.edu/~budd/SmallWorld/ReadMe.html


さて。Little Smalltalkは、CUIであることよりは、むしろその小ささやシンプルさが“売り”だったわけですが、同じGUI抜きでも、GUI以外の部分は本家のSmalltalk言語処理系と同じくらい本格的なSmalltalkを目指した処理系もあります。それが「GNU Smalltalk」です。

MacPorts(http://www.macports.org/)を利用していれば、ターミナルから「sudo port install gst」でインストールし、「gst」で専用のシェルを起動して使うことができるようになります。「gst」のあとにファイル名を付せば、通常のスクリプト言語同様、そのファイルに記述されたSmalltalkコードを実行できます。

GNU Smalltalkは、CUIで使う以上、GUI付きのSmalltalkではお馴染みの「コードを入力して選択 → do it(あるいはprint it)」という実行スタイルはとれません。そのため、一連の式の最後に「!」を付けて、do it(つまり式の評価)のタイミングを処理系に伝える方法をとります。

$ gst
GNU Smalltalk ready

st> 3 + 4!
7
st> | a b |
st> a := 3.
st> b := 4.
st> a + b!
7
st>


ところで、Little SmalltalkもGNU Smalltalkも最近のバージョンでは、立派なGUIを使えるようになっています。なんとも、本末転倒のような気もしなくもないのですが、やはりMac同様、GUIベースOSの始祖的存在であるSmalltalkは、どうあってもGUIとは切っては切れない関係にあるのだろうな…と思えば納得です。たとえば、GNU SmalltalkならX11が使える環境で起動時に、

gst -qK browser/Run.st


とすることで、ごく普通に、選択した式を右クリックメニューからprint itできてしまう、本格的GUI付きSmalltalk環境として機能させられます。

[fig.A]GUI付きで起動したGNU Smalltalk
Uploaded Image: 82a.png


▼Ambrai Smalltalk
SmalltalkをCUIで使いたい…という願いは、あたかも“独立したOS”がごとく自己完結し自由奔放に振る舞うSmalltalkを、UNIXライクOSの流儀で“たんなる言語処理系”のひとつとしてねじ伏せて飼い慣らしたい…という欲求の表れであるとの解釈もできそうです。これがMacやWinでなら、ネイティブGUIで(あるいは、ダブルクリックで起動可能なアプリのための開発環境として)Smalltalkを使いたい…ということになりましょうか。実際、SmalltalkをCUIで使いたい…というのと同じくらい、ネイティブGUIでSmalltalkを動かしたい、ネイティブGUIをSmalltalkから使いたい…という要求も古くから根強くあります。

そうした要望を自分の手で叶えようとする流れのひとつでしょう。我らがOS X向きにも、Cocoaオブジェクトとの連携を強く意識したSmalltalk処理系が作られています。そのひとつが「Ambrai Smalltalk」です。まだ製品化される前のパブリックベータ公開の段階ですが、安定していて普通に使えます。ワークスペース、トランスクリプト、ブラウザ、インスペクタなど基本的なGUIツールを備え、Smalltalk言語処理系としてもANSIの規格に準拠した本格的なものです。

http://www.ambrai.com/smalltalk/index.html

Ambrai Smalltalkでは、「do it」が「Evaluate It」に、「print it」が「Display It」に変えられていますが、それ以外はSqueakやVisualWorksとさほど違いを意識せずとも使うことができそうです。もしもMacがSmalltalk(=暫定ダイナブック)の遺伝子をもっと色濃く受け継いでいたならば、Undo、Copy、Cut、Paste(ちなみにこれらはSmalltalkがルーツ…)だけでなく、Smalltalkのdo itやprint itに相当する項目も、ちゃっかりEditメニューに加えられていたかもしれませんね。MacっぽさとSmalltalkっぽさをうまくミックスしてあるAmbrai Smalltalkをながめていると、そんな“来なかった未来”が見えてきそうで楽しいです。

Ambrai Smalltalkの面白いところは、CocoaのオブジェクトやAPIに、Smalltalkを使ってアクセスできることです。たとえば、ワースペースなどで

MacWindowFrame new open


と入力して選択してからdo it…もとい、Evaluate Itすることで、新しいウインドウを開くことができます。Ambrai Smalltalkのサイトには、この調子でCocoaのチュートリアルでもお馴染みのCurrency Converterを記述して実際に動作させる方法が紹介されています。コードもSqueakでMorphicアプリケーションを記述する感じとよく似ていますね。

http://www.ambrai.com/smalltalk/tutorials/tutorial1/index.html

さらに、Interface Builderで作成したnibファイルを読み込んで、Ambrai Smalltalkで書いたコントローラオブジェクトと連携させるための手順も書かれています。

http://www.ambrai.com/smalltalk/tutorials/tutorial2/index.html

このページを編集 (5323 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 627 times.