Squeakは、Smalltalk環境の一つであり、そのルーツは
1980年代のSmalltalk-80に遡ります。
Appleが自社のLisaとMacintosh向けに開発した
Apple Smalltalkから派生し、
アラン・ケイ氏を中心とする開発チームによって、自由度が高く、移植性に優れた環境を目指して開発されました。
開発の経緯
Squeakの開発は、
パロアルト研究所のダイナブックプロジェクトに端を発します。
アラン・ケイ氏とダン・インガルス氏らが中心となり、当初
Appleでプロジェクトが開始されましたが、その後、
ウォルト・ディズニー・イマジニアリングを経て、現在はケイ氏が設立した
NPOであるViewpoints Research Instituteに拠点を移し、開発が続けられています。
開発の契機となったのは、
1995年頃の状況でした。当時、
Javaはまだライブラリが十分に整っておらず、既存の商用Smalltalk環境は自由度や移植性に課題がありました。そこで、Squeakは、OSやプラットフォームに依存せず、ユーザーが自由に
プログラミングできる環境を提供することを目指して開発が始まりました。
環境と言語
Squeakは、Smalltalkを環境記述、データ記述、ユーザースクリプティング言語として使用します。Smalltalk環境が当初から備えていたクラスブラウザ、オブジェクトインスペクタ、
テキストエディタ、
デバッガなどの機能も、
Apple Smalltalkから引き継がれており、
オブジェクト指向プログラミングを強力にサポートします。Squeakの仮想マシンは、Smalltalkのサブセットで記述されており、
C言語へのトランスレータを用いて生成されます。この独特な方式が、Squeakの高い移植性を実現しています。
実際、Squeakは
UNIX、Windows、
MS-DOS、
BeOS、TRONなど、多くのプラットフォームに移植されており、
シャープのZaurus(旧Zaurus、もしくは最近の
Linux Zaurus)でも動作する仮想マシンが存在します。初期の仮想マシンはJITコンパイルを欠いていましたが、Eliot Miranda氏が開発したCogVMではこの機能が導入され、大幅な性能向上を達成しました。
Squeak eToys
Squeakには、Smalltalkとは別に、Squeak eToysというプロトタイプベースの
オブジェクト指向プログラミング環境も実装されています。これは、非開発者向けの
プログラミング環境で、タイルスクリプトシステムとも呼ばれます。Morphと呼ばれる
可視化に適したオブジェクトに対して、属性(動き、色、形、振る舞い)を変化させる手続きを、ドラッグ&ドロップで表現できます。
このシステムは、
プログラミング未経験者や低年齢層のユーザーにも扱いやすく、
アラン・ケイ氏の共同研究者であるキム・ローズ氏らは、このシステムが低学年向けの
コンピュータ・リテラシ教育に有効であると評価しています。米日独の教育機関との共同プロジェクトも実施されており、教育分野での高い効果が示されています。
多言語化と日本語対応
大島氏を中心とした多言語拡張に基づき、阿部氏、梅澤氏、林氏、山宮氏らがSqueakおよびSqueak eToysの日本語化パッケージを作成しました。この多言語化拡張は、Squeakバージョン3.8以降とSqueaklandバージョン2005以降に統合されており、ユーザーは公式版をダウンロードするだけで日本語を使用できるようになりました。
アプリケーション
Squeak環境では、データもアプリケーションも、システム自体も、全てSmalltalk言語で記述されたオブジェクトで構成されています。そのため、一般的な
コンピュータ環境でいうところのアプリケーションという概念は希薄ですが、それでもアプリケーションと呼べるものが存在します。
開発者向けアプリケーション:
Browser: クラスやメソッドを閲覧・編集するツール
Inspector: オブジェクトの属性を検査するツール
Debugger: インタプリタの状態を検査するツール
Change Set: 変更履歴を管理するデータベース
Method Finder: メソッド名や定義を検索するツール
Processes: プロセス閲覧・管理ツール
Transcript: 標準出力の役割を担うツール
一般向けアプリケーション:
Workspace:
メモ帳
GeeMail: 図版を扱えるメモ帳
PaintBox: ペイントツール
Book: カード型データベース、アクティブブック作成ツール
Stack: HyperCardライクなオーサリングツール
File List: ファイル管理ツール
Zip Tool: zip圧縮/展開ツール
Scamper: ウェブブラウザ(日本語不可)
Celeste: メーラ(日本語不可)
ThreadNavigator: プレゼンテーションツール
Clock, Watch: 時計
教育向けアプリケーション:
Squeak eToys: タイルスクリプトシステム
Nebraska: デスクトップ共有システム
Alice: 3Dオブジェクトオーサリングシステム
ゲーム:
Chess:
チェスゲーム
ChineseChecker
Cipher: 暗号解読ゲーム
Crostic: クロスワードゲーム
FreeCell: カードゲーム
Mines: マインスイーパー
Same:
さめがめ
* Tetris:
テトリス
また、Squeak環境自体をアプリケーションとして配布する形態も存在します。Squeaklandで配布されているウェブブラウザプラグイン版のSqueakは、Squeak eToysに特化したアプリケーションと言えます。
Swiki
Swikiは、Squeak版Wikiクローンです。Smalltalkで書かれたHTTPサーバであるComanche上に構築されており、ファイルアップロード、無限差分保持、静的HTML生成などの機能を持ちます。独自のフォーマットルールを持ち、WikiName機構は採用していません。ページ名の変更が可能で、ページソースにHTMLを混在させることも可能です。Squeak eToysのように、Swikiに特化した仮想イメージも提供されており、Smalltalkの知識がなくても手軽に利用できます。
ただし、これらの配布形態は、Squeak環境のサブセットに過ぎないため、完全なSqueak環境を利用したい場合は、公式サイトからダウンロードし、必要なパッケージをインストールすることが推奨されます。
Squeakは、その高い移植性、柔軟性、そして教育分野での可能性から、今後も幅広い分野での活用が期待される
プログラミング環境です。