スマートフォン用の表示で見る

Smalltalk

コンピュータ

Smalltalk

すもーるとーく

SmalltalkSmallTalk、Small Talk などはよくある誤った表記)。クラスベースの純粋オブジェクト指向言語.またはそれによって記述された統合プログラミング環境として知られる。言語・環境のいずれの側面からも、後の計算機の世界に計り知れない影響を及ぼしたソフトウエア

歴史

1970年代に Xerox 社のパロアルト研究所 (PARC) に所属していたアラン・ケイの指導のもと,彼の「Dynabook」構想の暫定解であるコンピュータ「Alto」における対話コンピュータ環境(今風に言うところの“GUI ベースの OS”)として開発された.しかしパーソナルコンピュータ市場を読み切れなかった Xerox は、SmalltalkOS として搭載した Alto を販売することはせず、結局、パーソナルコンピュータ環境からは程遠い、“プロ開発者向けの統合化開発環境”として Smalltalk商品化するにとどまった。他方で Alto は、Smalltalk とは別に Xerox で開発された GUI ベースの OS 「Star」を搭載した同名のワークステーションに技術転用され、その試作機としての使命をまっとうする。

Smalltalk は原則非公開だったが、後に方針を変更。Byte 誌 1981 年8月号の特集で大々的に紹介され、以降、世界の注目を浴びることになる。これに前後して、当時の大手コンピュータメーカー各社にライセンスされたり、Xerox 自身も ParcPlace Systemsという開発などを手がける専門の子会社を設立し販売を開始した「Smalltalk-80」を源流に、無数のバージョンやバリエーションが生じた。なお、Smalltalk-80 の直系は現在 Cincom 社が開発販売している「VisualWorks」。また、Smalltalk-80 のサブセットで Apple が同社の Macintosh 用に移植し、開発者向けに販売していた Apple Smalltalk から派生的に作られた「Squeak」も近年話題を呼んでいる。Little SmalltalkGNU Smalltalk といった、愛好家による“お手製”の実装も多い。

言語

Smalltalk は環境内で使用できる言語の名前でもある。言語としての Smalltalk は、その特徴として、SIMULA で提案されたクラスとオブジェクトという枠組み、あらゆるものが第一級データである LISP 的な機構、LOGO の表記や表現における“親しみやすさ”を併せ持つ。Smalltalk で扱うことができるデータはすべてオブジェクトで、コードは常に“オブジェクトへのメッセージ送信”のスタイルで記述し、多くの場合、内部的にもそのように処理される。二項演算や、LISP を除く一般的な言語では“構文”として用意される条件分岐などの制御構造表現においてもこの原則は貫かれている。

なお、当初「オブジェクト指向」は、この“オブジェクトへのメッセージ送信”を意味するものであったが、後に C++ の設計者であるビアルネ・ストラウストラップが 1986年に発表した“抽象データ型のスーパーセット”という「カプセル化継承多態性」に代表される考え方に置き換えられてゆくことになる。現在は、両者をミックスした概念で語られることが多く、これが「オブジェクト指向」を難解なキーワードにしてしまう原因のひとつとも考えられる。また、“オブジェクト指向プログラミング言語”に2つの元祖があるのはこうした背景による(後者の「オブジェクト指向」の立場での元祖は SIMULA )。

Smalltalk-80 の発表をきっかけに、多くの既存言語が「オブジェクト指向」を取り込んだハイブリッド言語、あるいはマルチパラダイム言語として生まれ変わった。また、デザインパターンリファクタリングエクストリーム・プログラミングXP)などの比較的新しい概念や手法も、Smalltalk と深い関わりを持つなど、「オブジェクト指向」の言葉の持つ意味はすっかり変わってしまったが、その影響力は多岐かつ長期にわたっていることも特筆に値する。

環境

1970年代から1980年代、まだキャラクターベースの表示や UI が主流だった時代に、Smalltalk は初期のバージョンからグラフィカルベースの UI を備えていた。それを受け継いだ Smalltalk-80 も(“OS”ではなく“開発環境”としてではあったが)驚きをもって受け止められた。具体的には、Alto のビットマップディスプレイ、標準装備のマウスを前提とした、オーバーラップ・ウインドウ、ポップアップメニュー、WYSIWYG かつインタラクティブエディタエンドユーザーがグリフを自在に編集できるフォントなどで、また、デスクトップキーボードショートカット、(テキストに対象を限るが)カット&ペーストといった見た目や使い勝手に関わるしくみも含め、ほぼ現在の GUI ベースの OS の姿を1970年半ば頃には完備していた。

Smalltalk においてデータやプログラムは、ファイルではなく、すべてオブジェクトとしてメモリ上で管理されるため、MacintoshFinder のようにディレクトリ構造やファイルを視覚化するアプリは必要とされず、開発もされなかった。しかし、オブジェクト鋳型とも言えるクラスとその階層構造や定義内容の閲覧、兼、編集用のアプリとして「システムブラウザ」が標準で用意されていた。ラリー・テスラーの手によるこのソフトの卓越した使い勝手は、後に NeXT の Workspace Manager(現在の OS X では Finder のカラム表示にその名残を残す)などにも大きな影響を与えている。

AppleLisaMacintoshMicrosoftWindows のようなウインドウ作業環境は、当初、Smalltalk システムのルック&フィールをヒントにはしていたものの、そのしくみ自体は、オブジェクト指向とは無縁の、あるいはオブジェクト指向色の弱いルーチンライブラリとして実装されているものばかりだった。しかし近年になって、これらのシステムはフレームワークによるオブジェクト指向アプローチに焼き直される傾向にある。環境としても、Smalltalk は多岐かつ長期にわたって他者に影響を与え続けている点もまた、特筆に値する。