







最終回
■
■SqueakではじめるSmalltalk入門 最終回 鷲見 正人
■
前回はSmalltalkファンお手製の、OS Xで動くフリーのSmalltalk処理系をご紹介しました。今回は、一連のSmalltalk処理系のご紹介の締めくくりとして、Squeakの前身であるApple Smalltalkを取り上げます。
▼Apple Smalltalkとは
「Apple Smalltalk」は、もともと、Smalltalkシステムの売り込みに熱心だったXEROXからの技術供与と動作確認用の(純正の)仮想イメージの提供を受けて、AppleがLisa向けに開発したSmalltalk処理系です。のちにMacintoshにも移植され、旧APDA(the Apple Programmers and Developers Association)を通じて比較的安価に販売されました。残念ながら、現在は入手がたいへん困難となっていますが、1990年前半くらいまでは販売されていたので、ベテランMac開発者の皆さんの中にはインストールディスクやインストール後のフォルダを記念にとってあるよ!という方もおられるかもしれませんね。
Apple Smalltalkは非常に古いソフトですが、「Mini vMac」というMacintosh Plusエミュレータを使えば、OS Xでも制限付きながら(環境内でのファイルのアクセスに失敗する…)も、かろうじて動作させることは可能です。なおその際には、Apple Smalltalkとエミュレータソフトの他に、Macintosh PlusのROMイメージと古いMacintosh System(6.0.x未満)が必要になります。
http://minivmac.sourceforge.net/
[fig.A]Mini vMacで動作しているApple Smalltalk

▼オリジナルMacのGUIの“ルーツ”としてのSmalltalk GUIを試す
エミュレータを動作させるために使う“古い”Mac用のシステムと、起動したApple Smalltalkとの比較で一目瞭然ですが、左上を指し示す矢印のポインタ、グレイ(細かな市松模様)のデスクトップ、白地に黒の文字表示など…に象徴されるように、両者はたいへんよく似かよった部分を持っています。知らない人が見たら、SmalltalkとやらはMacのソフトっぽく見えるように、実にうまくしつらえられているのだな…と本来とは逆のことを考えてしまうかもしれ
ませんね。
[fig.B]両者間で似た部分のあるGUI要素

当時のSmalltalkのウインドウは、見た目がとてもシンプルであったり、スクロールバーがポップアップでしかも左側に付いていたり…と、いっけんLisaやMacのGUIとはずいぶんと違った印象ではありますが、しかし、作業場としてのウインドウが持つべき要素(オーバーラップ、タイトル表示、移動、サイズ変更、スクロール機能…)は、実はまぎれもなく、このSmalltalkのGUIが元になってそれが広まって定着したものです。たとえば、第三ボタンメニュー(Apple Smalltalkではコマンドクリック、あるいはタイトルバーをクリックしてポップアップ)の項目やスクロールバー操作は、次のように対応付けできます。
第三ボタンメニューの項目 | → | Lisa、Macのウインドウ操作 |
move | → | タイトルバーの移動 |
frame | → | サイズボックスのドラッグ |
collapse | → | (後の)ウインドウシェード機能 |
close | → | クロースボタンのクリック |
|
スクロールパネルの操作 | → | Lisa、Macのスクロールバー操作 |
|
ボックスのドラッグ | → | 同じ |
ボックス左側のクリック | → | 上矢印ボタン(上方向スクロール) |
ボックス右側のクリック | → | 下矢印ボタン(下方向スクロール) |
また、マルチフォントやカット&ペーストに象徴されるモードレスな文書編集スタイルについても、Smalltalkが手本になっています。前述のウインドウの場合と違って、当時としては珍しい個性的なテキスト操作スタイルのほうは、ほぼそのままLisaやMac(ひいてはWin…)に受け継がれています。したがって、Macに慣れた皆さんは、ほとんど説明無しで、この1970年代に培われたGUI上でのテキスト編集機能をさほど違和感を感じずに使いこなせるはずです。ただしメニューバーはないので、第二ボタンメニュー(Apple Smalltalkではoptionクリックか、スクロールバー右端領域をクリック)を用いる必要があります。
[fig.C]両システムで酷似しているテキストの編集スタイル

他方で、後にAppleによって発明されることになる“新機能”が欠けていることにも気づかれることと思います。横方向のスクロールバー(あるいは、サイズボックスを含むスクロールバーの再配置のアイデア)、前述のメニューバーや(ポップアップではない…)プルダウンメニュー、さらには、Smalltalkでは必要とされなかった「Finder」(Smalltalkではファイルを読み込んで実行したり文書をファイルとして保存するのではなく、すべてをオブジェクトとして仮想デバイスに押し込めるスタイルのため…)や、「計算機」(Smalltalkではたとえワープロの文書中であってもSmalltalk式をprint itできるため…)といった機能やソフトウエアたち。これらは、Apple Smalltalkには見られません。
[fig.D] Smalltalkの“print it” vs. Macの“計算機”

以上のようにApple Smalltalkは、たんに古いSmalltalk処理系のひとつというだけでなく、我らがMacのGUIが「どこから来たのか?」といったことに思いを馳せたり、Appleが何をそこにどのように付け足したのか?を再確認する目的でも、たいへん興味深いソフトだと思います。相応の知識を持っていれば、1979年にPARCを訪れ、ALTO上のSmalltalk GUIを見て驚いたスティーブ・ジョブズよろしく、「こんなものが1970年代半ばにすでに出来上がっていたとは!」と感動すること請け合いです。
▼Squeakの“前身”としてのApple Smalltalkと、Squeakの“今”
Squeakは、このApple Smalltalkから、移植の妨げになるMacintosh ToolboxやMC68000依存部分を排除しするために、Smalltalkで仮想マシンの主要部分を記述して新しい仮想マシンを作り、その仮想マシン上で古い仮想イメージ(Smalltalk自身で書かれたSmalltalkシステム本体)を拡張する…というサイクルを経て作られました。まるで不死鳥が自らの身を焼いて、新しく生まれ変わるかのようなエピソードですね。
もちろんApple Smalltalk内で動作するSmalltalkで記述された仮想マシンは、動作確認やデバッグ程度のことは可能ですが実用(仮想イメージ開発)には向かないので、それをいったんC言語に変換して、必要なリソースを追加してMacintosh用開発ツールでビルドする…という作業も必要でした。この変換作業には、アラン・ケイたちがPARC時代、C言語の前身のBCPLにSmalltalkを変換するソフトを(やはりSmalltalkで)書いたときのノウハウが活かされていたのだそうです。
Squeakは、そうして、高い移植性を自らの特徴とし(実際、Mac以外の数多くのプラットフォームに移植されました)、同時に、ALTOやLisa、初期のMac時代には望めなかったカラー表示や広大なメモリ空間への対応を果たします。さらに、本来の目的であった子供向けのビジュアルプログラミング環境「eToys」をはじめ、仮想三次元空間の共有機能を提供する「Croquet」、Rubyon Railsの対抗馬(?)で継続ベースのWebアプリ「Seaside」、CocoaのKVOライクな機構を有する次世代GUIフレームワーク「Tweak」など、さまざまな新旧の技術を取り込みつつ、今も多様な進化を遂げているところです。
さて。突然ですが今回をもって本連載はおしまいとさせていただきます。皆さんが、様々な意味でMacとは切っても切れない関係にあるSmalltalkに興味を持たれた際に、本連載での情報が何かしらの役に立つことがあれば幸いに思います。長い間、ありがごうございました。
このページを編集 (6527 bytes)
 |
以下の 1 ページから参照されています。 |
This page has been visited 737 times.