







第53回
■
■SqueakではじめるSmalltalk入門 第53回
■
本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。今回は、単に複数の仮想的なデスクトップを提供することだけにとどまらない「プロジェクト」が担う、他の二つの役割についてです。
▼チェンジセットの自動切り換え機構としてのプロジェクト
第50回でご紹介したとおり、チェンジセットは、システムに加えられた変更の箇所情報を管理するためのデータベースです。必要なら、いつでもいくつでも自由に作ることができますが、実際にシステム改変箇所に関する情報が記録されてゆくのは、原則として“デフォルト”として定められたチェンジセットに限られます。
どのチェンジセットを“デフォルト”にするかについては、じつは、デスクトップ(つまり、プロジェクト)ごとに割り振ることができるようになっています。したがってユーザーは、チェンジソーターなどの専用ツールを使っていちいち明示的にせずとも、ただデスクトップ(プロジェクト)を切り換えるだけで、暗黙のうちにシステム改変の記録先であるチェンジセットの変更も同時に行なうことが可能なわけです。
仮想デスクトップのような機構に「プロジェクト」などという似つかわしくない名前がついている理由は、この「チェンジセットとの連携」にあると言えそうです。Xcodeでは開発の作業単位である“プロジェクト”をファイル(あるいは関連ファイルを収めたフォルダ)として管理していますが、Squeakでは、そうした“プロジェクト”ひとつひとつに専用の仮想デスクトップという「作業スペースのメタファ」と、チェンジセットという「作業内容を裏で自動的に蓄積するデータベース」を割り当てている…というようなイメージでとらえていただければSqueakのこのプロジェクトという名前に対する違和感も、多少は払拭できるのではないでしょうか。
なお、Squeakのような古典的Smalltalk、つまりALTOのOSだったころの性格を色濃く残しているSmalltalkシステム(暫定ダイナブック環境)において、ソフトウエア開発とは、システムの拡張や改変の作業に他なりません。したがって、ソフトウエアも、Macをはじめとする現在主流のコンピュータシステムでは主に「実行可能なファイル」のかたちであるのに対し、古典的なSmalltalkではいわゆる“パッチ(差分情報)”のかたちで配布され、利用者は自分の仮想イメージにそれを読み込んで(ファイルインして)機能させるスタイルをとります。このパッチは、プロジェクトごとの作業内容を逐一記録した対応するチェンジセットをファイルアウトすることで、容易に得られます(拡張子は「.cs」)。
新しいプロジェクトを作ると、自動的に新しいチェンジセット(日本語では「名無しX」、英語では「UnnamedX」。Xは数字)が作られ関連づけられ、その名前が、そのまま新しいプロジェクトの名前としても使われます。なお、チェンジソーターなどを使ってデフォルトのチェンジセットを切り換えたときは、プロジェクトの名前もそれに伴って変わります。逆に、プロジェクトビューでプロジェクト名を変えたときは、そのプロジェクトの関連付けられているチェンジセットの名前も同様に変更されます。複数のデスクトップでひとつのチェンジセットをデフォルトとして共有することはできません。
▼デスクトップのモーフを保存する機構としてのプロジェクト
Squeakのプロジェクトには、チェンジセットを視覚的に切り換える役割のほかにも、もうひとつ、古典的なSmalltalkシステムにはないSqueak独自の機能が与えられています。それは、デスクトップに配置されたオブジェクト「モーフ」をそのままの状態でファイルとして出力する機能です。
モーフとは、数値やデータベースのような抽象的なオブジェクトではなく、丸や四角など、我々の目に見える“姿”を持った具象的なオブジェクトのSqueakシステムにおける呼称です。もとは、1990年代初頭にSmalltalkにインスパイアされて作られた「SELF」というオブジェクト指向環境向けに考案されたものですが、当初ビットマップ画像しか扱えなかったSqueakにマルチメディア機能を強化する目的で、開発の比較的早い時期に、Squeakプロジェクトに合流したオリジナルの考案者自らの手で移植され組み込まれました。簡単には、互いに連携が可能な仕組みを持つドロー系ソフトの基本図形オブジェクトのようなものを想像してもらえればよいと思います。
Squeakには、これらモーフに対して、動きや性質を変化させる指示をプログラムとして付加できる、非プログラマ向けのスクリプトシステムが「eToys」として提供されています。ユーザーは、デスクトップをキャンバス代わりにして、モーフを好きなように配置し、それらに動きをあたえることである種のソフトウエア作品を組み立てることが可能です。こうして作られた作品は、もちろん、仮想イメージに保存することは可能ですが、ひとつの作品の保存場所に巨大な仮想イメージをそのつど用いるというのは、現実的ではありません。そこで、Squeakのプロジェクトには、デスクトップの様子をそのままファイルとして出力し、別の仮想イメージでそれを読み込み再現できるような機能が追加されました。
一見、単なる仮想デスクトップに過ぎないSqueakのプロジェクトですが、Smalltalk言語によるソフトウエア開発ではチェンジセットと連携することで、また、eToysによるデジタル創作においては、作品のキャンバス代わりになることで、実は「プロジェクト」という名に相応しい機能を提供しているわけです。
このページを編集 (4641 bytes)
 |
以下の 1 ページから参照されています。 |
This page has been visited 929 times.