第79回
■
■SqueakではじめるSmalltalk入門 第79回 鷲見 正人
■
本連載では、Macと切っても切れない関係にあるSmalltalkについて、最近話題のSqueakシステムを使って紹介しています。
ここのところ、少々遠回りをしながら回数を割いて、簡易GUIビルダの作成をしてみました。一般の言語処理系(あるいは、Macを含めた一般のコンピュータシステム)における「編集-ビルド-デバッグ」サイクルとは異質の、ソフトを走らせながらでも開発を進めてゆくことができる…という、Smalltalkシステム(=暫定ダイナブックシステム)独自の「インクリメンタル」な開発スタイルを、ほんのさわりだけですが垣間見ていただけたことと思います。
いったんは完成にこぎつけたこの簡易GUIビルダですが、じつは、Smalltalkアプリとしては“うまくない仕組み”で動いています。具体的には、モデルとユーザーインターフェイス(ビュー及びコントローラ)の分離がきちんとできていないのですね。今後はこの点を、Smalltalk発祥でCocoaでもお馴染みのMVCライクなアーキテクチャを学びつつ、手直ししてゆくつもりです。
しかしその前に、近頃リリースされた新しいSqueakシステムのバージョンである「3.9」をご紹介がてら、Smalltalk環境の基本をおさらいすることにいたしましょう。この連載で使用するシステムも、この最新の3.9ベースに切り替えるので、連載を途中から読み始めて実際に環境を用意していなかった方も、この機会に以下の手順に従い、Squeakシステムのインストールとセットアップを試みてはいかがでしょうか。これからしばらく、すでにSqueakを使いこなしておられる方には冗長な内容になるかと思いますが、どうか我慢しておつきあいください。
▼Squeak3.9の入手と、その内容の簡単な解説
最新版を含むSqueakシステム(英語版)は、公式サイトであるsqueak.orgより入手可能です。ダウンロードページもありますが、トップページの右手にある「Downloads」枠にある「Mac」のリンクを利用する方が手っ取り早いでしょう。本稿執筆時点では、くだんのリンクは具体的には次のURLを指しています。
http://ftp.squeak.org/3.9/mac/Squeak3.9-7067mac%20vm%203.8.15beta1U.zip
ダウンロードが終わると、そのとき用いたソフト(たいていはSafariやFirefox)であらかじめ指定済みの場所に「Squeak3.9-7067mac vm3.8.15beta1U.zip」アイコンが現われるはずなので、それをダブルクリックで展開します。展開後に現われる「Squeak3.9-7067mac」フォルダには次の五つのファイルが収められています。「Squeak3.9-7067mac」フォルダは適宜「アプリケーション」フォルダやデスクトップなど、分かりやすい場所に移動しておいてください。
- Squeak 3.8.15beta1U.app
- Squeak3.9-final-7067.image
- Squeak3.9-final-7067.changes
- SqueakV39.sources
- WelcomeSqueak39
Squeakシステムを動かすのに必須なのは「Squeak 3.8.15beta1U.app」と「Squeak3.9-final-7067.image」の二つのファイルです。それぞれ「仮想マシン」「仮想イメージ」と呼ばれます。仮想マシンは「オブジェクトメモリ」と呼ばれるメモリとハードディスクの両方の特徴を併せ持つ特殊な仮想的記憶デバイスを、ホストOSであるOS Xが管理するメモリ空間内に作り出します。仮想マシンはさらに、指定された仮想イメージの内容をオブジェクトメモリ内に読み込ませ、Squeakシステムを動作させます。通常は、仮想イメージファイル(.image)を仮想マシンアプリ(.app)にドロップインすることで、以上の作業をいっぺんに済ませることが可能です。
SmalltalkシステムというのはALTOのOSだった時代からずっと、Macを含む通常のコンピュータシステムとは違った、かなり変わった方式で動いています。必要なときに補助記憶装置にあるファイルをメインメモリに読み込んでアプリを起動したり文書を開いたり…というお馴染みものではなく、扱うデータやプログラムはすべて「オブジェクト」としてオブジェクトメモリという仮想デバイス内に保持し、システムやアプリ(あるいはその文書)で必要なとき、必要なオブジェクト同士を構成要素として協働させ、機能させます。
ちなみにアラン・ケイは、Smalltalkシステムを「生命体」に、その唯一の構成要素で、互いに協働して機能するオブジェクトを「細胞」に、それぞれを例えることがあります。とかくALTOというとMacにとっての「GUIの始祖」とだけ連想しておしまいにされがちですが、暫定的な「ダイナブック」として見るならば、GUIよりはむしろこの特殊な“仕組み”とそれが実現する“メリット”(たとえば、冒頭に述べたソフトを走らせながらのインクリメンタルな開発手法が使える…とか)のほうがはるかに重要だったりします。
閑話休題。
残りの「Squeak3.9-final-7067.changes」と「SqueakV39.sources」は、仮想イメージ内のオブジェクトの定義を、それを記述したSmalltalkのソースコード片群として保持するテキストファイルで、それぞれ「チェンジ」「ソース」と呼ばれます。後者の「ソース」はごく初期のリリース時の仮想イメージの内容を反映していて“読み出し専用”なのに対し、前者の「チェンジ」はその後、システムに加えられた改変を逐次、追記し、記録するための“ログファイル”のように使われます。念のため、後者は「ソース」という名前がついていても、仮想マシンなどのソースコードファイルというわけではないので注意してください。また、チェンジやソースの内容は、仮想イメージ内のオブジェクトから参照されているので、テキストエディタで開いて読むことができるからといって、Squeak環境外で勝手に内容を書き換えてはいけません。
オブジェクトメモリ内の状況、すなわち、Squeak環境の“様子”は、好きなタイミングで仮想イメージとして保存することが可能で、この作業を「スナップショット」と呼ぶことがあります。情報は、起動時に用いた仮想イメージファイルに重ね書きすることも、別の仮想イメージファイルを新たに作ってそこに保存することも可能です(当然ですが、重ね書きをすれば、以前の状態は永久に失われます)。新たに仮想イメージを作ったときは、同名のチェンジファイルも同時に作られます。なお、こうして作られた仮想イメージとチェンジは同名のものを常にペアで扱う必要があります(仮想イメージファイルの名前を変える必要があるときは、対応するチェンジファイルのリネームも同時に行なうことを忘れないようにしてください)。ソースファイルはひとつあれば、それを各ペアで共有できます。
▼Squeak環境の起動と終了
それでは、仮想イメージ「Squeak3.9-final-7067.image」を仮想マシン「Squeak 3.8.15beta1U.app」にドロップインしてSqueakシステムを起動しましょう。起動に成功するとホストOSであるOS Xの描くウインドウ内にSqueak環境のデスクトップが現われます。ちょうど、VMWareやVirtualPCなどのエミュレーションソフトが動作するときと似たような感じです。もし、仮想マシンに仮想イメージをドロップインしているにもかかわらず、仮想イメージを指定するようなダイアログが表示される場合は、「Squeak3.9-7067mac」フォルダを日本語を含むフォルダに入れてしまっていないか確認してください。
動作しているSqueak環境を終了させるにはいくつかの方法があります。
●デスクトップメニューを使う
- デスクトップをクリックして「デスクトップメニュー」をポップアップ。
- 「quit」を選択して、「Save changes before quitting?」には「No」。(ちなみにこのとき「Yes」を選べば、前述のスナップショットになります)
●ナビゲータフラップを使う
- 右下の「Navigator」タブをクリックして“フラップ”を呼び出す。
- 右端の「QUIT」ボタンをクリック。
- 「Are you sure you want to Quit Squeak?」に「Yes」。
●ホストOSであるOS Xから終了の指示を出す
- (OS Xの)メニューバーの「File」から「Quit do not save」を選択。
最後のは環境内でデスクトップメニューやナビゲータフラップが使えないときの緊急時の終了のしかたで、通常のハードウエアでいうなら「リセット」、アプリケーションソフトなら「強制終了」に相当します。よって、通常は前二者のいずれかの方法で終了することをお薦めします。もっとも最後の方法でも、いきなり終了してしまうことで、作業中の内容を保存するタイミングを逸する可能性があることを除けば、さしたる支障はありませんが…。
次回は、日本語を扱うためのリソースの追加と、いつくかの設定を行ないます。
このページを編集 (7058 bytes)
|
以下の 1 ページから参照されています。 |
This page has been visited 345 times.