English page is available here.

The Home Page of Squeak/Zaurus (ざうちゅう)

はじめに

このページはシャープ(株) の製品である Zaurus 上で動作する プログラミングシステム Squeak のホームページです。 この処理系の正式名称は Squeak/Zaurus としますが、 「ざうちゅう(ZauChu)」 という名前も付けておきたいと思います (が、 この名前がはやるかどうかは神のみぞ知るところです)。

Squeak/Zaurusは、テーマパークなどを多数持つ'W'(または'D') で始まる名前の某大企業が行った、「ゲストのための携帯情報 機器」実験のプラットフォームとして使用されました(以下これを 某プロジェクトと呼びましょう)。なぜSqueak/Zaurusだったのかと いう質問に関しては、Squeak/Zaurus の利点についてまとめましたので、興味のある方はお読みくだ さい。

細かい話は抜きにしてとにかくダウンロードしてみたい方はとにかくダウンロードへどうぞ。

ダウンロードしたあと、取りあえず一通りできることを試してみたい、 と言う方はデモの使い方をご覧下さい。

ザウラーのためのSqueak入門と題して、 Squeak に関する知識がまったく無い方でも、 「本当にZaurusだけでプログラムの開発ができるんだ」 という感触を味わっていただけるページを作りました (注: これは以前のバージョンのために書かれたものなので、 今のバージョンにそのまま適用することはできません。 ただ、 Zaurus 上で Squeak を使う場合の基本操作を修得することはできると思われます)。

目次

Squeakとは

Squeak とは Smalltalk というプログラミング言語に源流を発するプログラミングシステムです。 Smalltalk は20年以上前に発表されたという古い言語ではありますが、 オブジェクト指向という概念で全体を統一し、 GUIと一体化させることによって、 コンピュータの中身そのものを手で掴んでいじれるよう な感覚をユーザーに与えてくれるシステムとして、 実は時代の先を行っている言語です。

Squeak は Smalltalk-80 の直接の子孫とも言うべきシステムでありますが、 現在ものすごい勢いで開発が行われているシステムであり、 さまざまな機能が追加 (追加だけではなく統合と言うべきものも多いですが) された結果、 Smalltalk-80 の子孫とは言うものの、 まったく新しいシステムであると言っても過言ではないようなものになっています。

「Smalltalkの直接の子孫」 というのは言葉以上の意味を持っています。 Squeak開発の中心には、 「あの」 Alan Kay と Dan Ingalls、 「パーソナルなコンピュータ」というコンセプトを最初に考えた人と、 そのコンピュータのためのプログラミングシステムである Smalltalk のデザインと実装を行った人が座っているのです。

Zaurusとは

Zaurusとは、シャープ が主に日本国内で販売されている携帯情報機器(PDA)のブランド名 です。ローエンドからハイエンドまで多くの機種が存在しますが、 世界的に見ても最高性能といっても良いハイエンドPDAをライ ンナップに持っていることが特長です。

Squeak/Zaurusの利点(または、「なぜJavaでは納得がいかないのか」)

SqueakとZaurusの組み合わせには、他の組み合わせではなかなか まねのできない大きな技術的優位性があります。以下でひとつひと つ見ていきましょう。

移植性の高い成熟した仮想機械

安定した仮想機械(VM)を作る、というのは実はかなり難しいこと です。Squeakの場合、30年以上の経験を生かして設計実装された後 で、数年かけて世界中の人によってデバッグされており、現在は非 常に安定したVMとなっています。デスクトップ用のJavaのVMも最近 は非常に安定してきてはいますが、例えばハイエンドPDAにできる だけ高機能なVMを構築したい、と思っても、安定したものはまだあ まりありません(KVMについては後述します)。

オープンソース方式での開発

SqueakのVMやライブラリは完全にオープンソースとして開発され ており、世界中の人によってものすごい勢いで成長しています。

オープンソースソフトウェアの価値は、組み込み機器で使うとき にさらに強く発揮されます。ある程度の規模のソフトウェアを構築 する場合、OSやウィンドウシステム、あるいはVMなどのような他の 人が書いたレイヤを利用することが一般的ですが、そのような場合 には、ほぼ常になんらかの不具合に衝突したり、ちょっとした拡張 を施す必要が出てきます。もしそれらのレイヤの変更が難しいと、 それらの問題に対処するために書かなくてはならないコード (workaround)が複雑となり、ただでさえ制約の強い組み込み機器で 安定したソフトウェアを作るのが困難になってしまいます。また、 原理的には変更が可能なレイヤであったとしても、レイヤの数が多 い場合には、現実的には修正するのが不可能である、ということも ありえます。Linux上で動くXの上で動くGTKを使えば、自由に拡張 できるシステムになる、というというのは原理的には真ですが、例 えば「あるアプリケーションで特定の大きさの画像を多用するので、 それをXサーバーでキャッシュするようにしたい、というようなこ とが本当に自由にできるでしょうか。

Squeakの場合には、完全にオープンなVMとライブラリを使って、 さらに言えばVM自身もSqueakで書かれていることから、自分達の目 的にかなったシステムを構築しようとする際の障害が非常に少なく なっています。

Zaurus OSの部分に関してはソースもなければ変更もできないのは 確かですが、Squeak/Zaurusの場合にはシャープからの多大なバッ クアップのおかげで、workaroundを書くための非常に多くの情報を もらっており、それらがVMの実装に取り込まれています。

アプリケーションの移植性

Javaのように、Write Once, Run Anywhere (WORA)といって、ア プリケーションの移植性を売り文句にする言語やシステムはいくつ かあります。が、「本当に」1度書いただけでどこでも動いている でしょうか。多くの言語の場合、最新バージョンがリリースされた、 といったときにも、結局片手でも十分に数えられてしまうようなご く限られた環境でしか動作しないため、多くのプラットフォームで はVMが移植されるのを首を長くして待つだけ。また、ちょっと大き いアプリケーションを作ると、スレッドのスケジューリングやイベ ントハンドリング、あるいは画面表示やフォントなどVMの違いから、 結局は各プラットフォームごとにデバッグをしなおす必要がある、 というのが実情です。

Squeakの場合には、非常に多くのプラットフォームに同じVMが移 植されており(他のどんなVMよりも多くのプラットフォームに、と いっておきましょう)、グラフィックスライブラリやスレッドなど もSqueakのライブラリとして提供されているので、ひとつのプラッ トフォームでデバッグしたアプリケーションは、どのプラットフォ ームでもほぼ「まったく同じに」動作します。某プロジェクトでも、 2人の人間がWindowsとMacとで別々に書いたプログラムを組み合わ せて、Zaurusで動かす、という形でシステムが開発されました。

アプリケーション記述の自由度

Squeakの場合には、マウスや画面などのハードウェアもオブジェ クトとして抽象化されており、それらのごく基本的な部品にまで手 の届くようなシステムを書くことができます。某プロジェクトでも、 我々の目的にかなうようなGUIフレームワークを構築するところか らはじめられましたが、そのようなフレームワークも非常に少ない コードで記述できるため、非常に安定したシステムを作ることがで きました。PDA上で画像の演算を行って画面に表示する、というよ うなプログラムを作った場合、ボトルネックはメモリ上にある画像 にアクセスすることによる大量のメモリ操作になりますが、GUIフ レームワークを自分で構築することによって、画像のコピーが何回 発生しているか、というようなことにまで気を配ってプログラミン グすることができます。

某プロジェクトのアプリケーションでは、基本的なイベント処理 を行うループの合間に、さまざまな周辺機器の状況をチェックしな くてはならなかったのですが、そのようなコードも自由に、そして 簡単に書くことができました。

Javaの既存のGUIフレームワークをPDAで使うことを考えた場合、 AWTはフレームワークの移植性が非常に低く、Swingはメモリ使用量 が必要以上に多すぎます。かといって、Javaでは独自のGUIフレー ムワークを自分で記述するのは困難です。例えば、VMを変更しない ままで、画像のコピーなどの回数を最低限に押さえたようなGUIフ レームワークが構築できるでしょうか。

小さなメモリ使用量

例えば、QVGA, 16bit depthのフルスクリーン画像をたくさん使 うようなアプリケーションを、比較的メモリ制約がきつい環境で作 りたいとします。このようなイメージは320x240x2 = 150kbytes になりますが、皆さんがお使いのシステムでこの大きさのデータを 割り当てようとしたとき、「本当に」消費されるメモリ量について 思いを巡らせたことはおありでしょうか。

世の中には、管理領域や2のべき乗に丸められてしまって大きな メモリオーバーヘッドがあるようなシステム(場合によっては256k にまで丸められてしまうかもしれません)、フラグメンテーション を起こしてしまって、割り当てと開放を繰り返しているうちに割り 当てられなくなってしまうシステム、ガーベージコレクションに semispaceを使うアルゴリズムを採用しているために、結局必要な 領域の2倍のメモリを使用してしまうシステム、ガーベージコレク ションのアルゴリズムの問題から、使用されていないはずのメモリ 領域が完全に回収できないシステムなどが存在します。

Squeakの場合、QVGAのイメージデータひとつを管理するために必 要となる領域の大きさは12ワード(48バイト)だけです(つまり、 150k + 48バイトという意味です)。もちろんガーベージコレクタは 100%ごみを拾ってくれます。Squeak/Zaurus上でシステムを構築す る時には、このようなコンパクトな表現の利点を生かし、かつ実装 の詳細も参考にしながら、メモリ管理の細かいところにも気を配っ たきめの細かいアプリケーションを構築することができます。

さらに、アプリケーションを動かすために最低限必要となるメモ リ使用量も考慮すべき点です。デスクトップ環境においていくらメ モリが安くなっているといっても、ちょっとした画像をアニメーシ ョン処理しようとしたりするだけのプログラムが20MB、30MBのメモ リを要求する、というVMが世の中にはありますが、そのようなVMで はハイエンドPDAには移植できませんし、違うVMを作って動かそう とする場合には結局VMごとの違いに悩まされることになります。

プログラム記述のしやすさ

Squeakでは、すべてのデータがオブジェクトであり、基本データ 型とオブジェクトなどのような使い分けを気にすることなく、より 抽象度の高いプログラムを書くことができます。

皆さんは、自分のプログラムの多くの部分が、なんらかのデータ の集合になんらかの処理を適用して新たなデータを作りだしていく、 という動作の繰り返しになっていると思われたことはないでしょう か。Squeakでは、「データの集合」を抽象化した強力なCollection ライブラリと、「なんらかの処理」を抽象化したブロッククロージ ャがあるので、それらを組み合わせるという自然な形でプログラム を書くことができます。

意外と知られていないことですが、Squeakにはコンパイル時のさ まざまなチェックがあります。存在しない変数や、初期化していな い一時変数の参照をしようとしたり、存在しないメソッドを呼ぼう としたりしている時には、メソッドをコンパイルしようとした時点 でコンパイラがチェックしてくれます。ただ単にチェックしてエラ ーを出すだけではなく、可能性のある正しいプログラムの候補を提 供してくれるため、プログラムのつづり間違いなどの場合には、一 度コンパイルすれば、プログラムに誤りがあったとしても半自動で 正しいプログラムに書き直すことができます。いずれにせよ、Java のコンパイラに期待されているようなエラーチェックのほとんどは、 Squeakのコンパイラも行うことができます。

デバッグのしやすさ

Squeakでは、プログラムの実行中にエラーが起こった場合、単純 なエラーであればエラーが起こったところでプログラムのコードや データを手で変更して、そのまま実行を継続することができます。 Javaでクラスを書いているとき、コンストラクタが不十分でインス タンス変数が正しく初期化されていないような場合が良くあります。 そのようなインスタンス変数にアクセスしてして NullPointerExceptionが発生してしまったとき、みなさんは「単純 なエラーなのだから、なんとか正しい値を代入してそのまま継続を 実行するすべはないものかな」と思ったりしませんか。Squeakでは そのようなことはごく簡単にできてしまいます。

が、しかし、結局のところコンパイル時のチェックや単純な初期 化し忘れのチェックは、エラーの中でもたいしたものではありませ ん。コンパイルが通った後、ちょっと実行したりすればいずれすぐ に見つかるようなものです。プログラムのバグというのはもっと発 見するのが難しいやつが問題になるわけですが、そのようなものを 発見するときにこそ、Squeakの威力が発揮されます。

例外のような機構をサポートしているほとんどの言語では、 プログラムの実行中にエラーが起こった場合には例外がスタ ックを下向きに飛んでいき、エラーに至るまでの実行時スタックに 格納されていた貴重な情報は失われてしまいます。そのため、結局 できることはエラーに至るまでの呼び出し関係を表示して実行を終 了するぐらいのものです。典型的なデバッグ方法としては、エラー が出た後おもむろにprintf()を適当なところに挿入し始めて、も う一度同じエラーが起こってくれることを神に祈る、というような ことくらいでしょう。

一方Squeakの場合には、エラーが起こった場合、スタックの情報は 完全に残したまま、エラーハンドラ(デバッガ)がそのスタックの上 で動き始めます。そのため、そのデバッガでは、エラーに至るまで の情報を完全に生かした形で、なぜエラーが起こったのかを調べる ことができます。デバッガの中にスタックフレームに格納されてい る値を使用するような式を入力して実行し、どのような値になるか を調べたりもできてしまうわけです。

某プロジェクトで使ったときにも、一般の人に大量のユニットを使 ってもらったりすると、オフィスで数人でテストしているきには思 いもよらなかったエラーが起きてしまうことがありました。そのよ うな場合でも、エラーを出してしまったPDAを回収して、そこで動 いているSqueakのデバッガを使って調査することによって、なかな か特殊な条件がそろわないと発生しないエラー("tricky"なエラー) を次々とfixすることができました。仮にJavaのような言語を使っ ていたら、何が問題だったのかを究明するのは非常に困難だったこ とでしょう。

なにより、21世紀にもなって、「デバッグするときはプログラム のそれらしいところにprintf()を挿入してね...」などどいう前近 代的なデバッグ方法がまかり通っているのはおかしいと思いません か?そもそもPDAにインストールするようなソフトではprintf()デ バッグなんて格好がつきませんし。フィールドテストをやったとき に出てくるようなトリッキーなバグは絶対に捕まえられません。

中には、そもそもちゃんとした型チェックのある言語を使えば、 そのような妙なエラーは起こらない、という方もいらっしゃるかも しれません。が、本当にそうでしょうか。MLのようにまっとうな型 チェックのある言語ならともかく、JavaやCやC++を念頭においてい る場合には、ありとあらゆる実行時エラーを起こしてきたことがあ るはずです。中には、ハードウェアデバイスやユーザーの入力のタ イミングによって起こるエラーもあるでしょう。多くのSqueakerの 経験によれば、Squeakでプログラムを書いたときの妙な実行時エラ ーで、JavaやCのコンパイラが見つけてくれるであろうものはほと んどありません。

KVMについて

ここまで我慢して読んで下さった方の中には、きっとJavaのKVM ってすごいんだよ、という人がいらっしゃるかもしれません。

KVMの場合、数十k程度の大きさのメモリを持つ機械をターゲット にしたVMであって、GUIなどのライブラリも専用ものが提供されて います。非常に制限の厳しい環境を対象として、なかなか良い設計 になっていると言えますが、オブジェクト指向的ではないプログラ ミングスタイルでプログラムが書く必要があり、ライブラリも特殊 なものを使用しなくてはならないわけで、WORAの宣伝文句は的外れ であるということに留意すべきです。将来携帯電話に載るメモリ量 が今のハイエンドPDAのように数MBから数十MBになるときには「ス ケール」しないフレームワークになってしまっていると言えるでし ょう。

KVMは今のハードウェアのため、Squeakは未来の携帯機器のため のシステムであると考えることもできます。

Squeak/Zaurusでなければだめだった...

某プロジェクトでは、100MB程度の画像や動画や音声を扱って、 さまざまな周辺機器からの入力を適宜読み込みながら、5-6時間動 きつづけるというようなシステムであったわけです。このようなシ ステムをできるだけ小さく高性能な機械で実現するためには、小さ な筐体のハイエンドPDAにこだわりを持っているシャープのハード ウェアと、小さくてパワフルな言語であるSqueakとの組み合わせに よってはじめて実現可能であったように思います。

Squeak/Zaurusのインストール

Squeak/Zaurus は Zaurus 上 で動作するアプリケーション (MOREソフト) として動作するので、 インストールや実行は非常に簡単です。

動作環境

Zaurus という名前で売られている製品にはいくつかの種類があるようですが、 その中で Squeak/Zaurus が動作するのは日本で売られている日本語版の Zaurus だけです。 また、 日本語版 Zaurus の中で Squeak/Zaurus が現実的な形で動作するのは、 2001年1月現在 DRAM を 8MB 以上搭載した機種、 すなわち です。

DRAM 搭載量が 2MB 以下の機種、 すなわち MI-506 以前の機種でも動くことは動きますが、 機能はかなり限られてしまいます。

動作確認機種のリスト:

他の機種で動かした方は動作確認レポートをお願いします。

以下では、 DRAM が 8MB のモデルを対象とした説明をしますので、 2MBモデルで試してみたい方は 2MBモデル の節をお読みください。

Squeak/Zaurus の実行に必要なものは、

の2つです。 これらのうち、 VM は Zaurus OS のアプリケーション (MOREソフト) であり、 仮想イメージとは、 VM の上で動く機種非依存のプログラム (及びデータ) ファイルです。

8MB の DRAM を搭載した Zaurus 用の VM は、 "wtii" という「アプリケーション識別名」を持つ MORE ソフトです。 一方仮想イメージのほうは 3.5MB 程度以下の大きさのものであればどれでも Squeak/Zaurus で使用できます。

Zaurus 版独自の特殊機能を使うために、 いくつかの file out をまとめてあります。 自分で作ったイメージで Zaurus 版独自機能を使いたい場合は、 これらのファイル を file in してください。

Squeak/Zaurus を動作させるためには、 仮想機械 (VM) と仮想イメージを格納するスペースが必要になります。 VM は 400k 程度、 イメージは最低でも 1MB 程度の大きさですので、 それらを格納するだけのスペースが、 本体内または拡張カード内にあることをまず確認してください。

Squeak/Zaurus をインストールして実行しても、 既存のデータが失われることはまずありません。 しかし、 念のためここでバックアップを取っておくことをお勧めします。

Zaurusに直接ダウンロードする

ICRUISE、MI-C1、MI-P10、MI-TR1、MI-E1のユーザーの方は、VMのバイナリ wtii010126.ZAC をダウンロードしてください。 さらに、イメージファイルとして WTIIQVGA.ZAC をダウンロードしてください。 それらのファイルを展開すればインストール完了です。

Windowsからダウンロードする

まず、 Zaurus開発環境のサポートページ から、 「MOREソフトサンプル」 のページに行き、 その先頭の方にある MORE ソフトダウンローダ を Windows にダウンロードし、 実行できるように準備します。 そして、 wtii010126.ZAC をまず PC のディスクに保存します。 次に、 WTIIQVGA.ZAC も同じくディスクに保存します。 そして、 それら2つの ZAC ファイルを MORE ソフトダウンローダを使用して Zaurus に転送します。

その後、 MORE ソフトのメニューからそれらのファイルを 「展開」 をすればインストールが完了します。

カード経由でインストールする

PC カードまたは CompactFlash カード (さらには E1 の場合 SD カードあるいは MMC) に書き込める環境があるなら、 カード経由でインストールすることもできます。 そのためには、 カードに"__ZAURUS"という名前のディレクトリを作ってそこに仮想機 械とイメージファイルの入った ZAC ファイルを置き、 後はそのカードを Zaurus に差して展開するだけでカード上に Squeak をインストールできます。 カード上のファイルを本体内にコピーする技術をお持ちの方は、 VM の入った ZAC ファイルを本体内にコピーしてから展開すればより便利になるでしょう。

SHARPのZaurusユーティリティを使う

もしあなたがデベロッパライセンスを保持しているなら、 Zaurus 開発環境のサポートページ から 「Zaurusユーティリティ」をダウンロードすることができます。 これは 「Zaurus<-> 拡張カード間」 および 「Zaurus<->Zaurus間 (IrDA経由)」 でMOREソフトの転送が行えるソフトです。 これを使えば、 友人のザウルスにコピーしてあげることができます。

実行方法

MORE ソフトのメニューから Squeak を選択し、 実行ボタンにタッチしてください。 最初に仮想イメージの選択画面が表示されます。 その中から適当なものを選択してください。 スライダーがひとつ表示されていますが、 これはいじる必要はありません。

イメージファイルを選択することによって、 そのイメージの実行が始まります。

Squeak/Zaurusの独自機能

Squeak/Zaurusは、そもそもマウスではなくペン操作であること による機能の違い、そして、某プロジェクトの要請であったさまざ まな機能追加によって、デスクトップ機でのSqueakとは微妙に様子 が違うところもあります。それらの点は以下のとおりです。

中クリック(Yellow Button)

「機能」 キーを押して、 画面左上に「機能」と表示されている状態で画面にタッチすると、 中ボタンを押したと認識されます。 中ボタンメニュー(Contentメニュー)を表示したい場合は、 「機能」キーを押したあと、 ウィンドウの内部にタッチしてください (しばらく押し続けてください)。

メニューはスクロールバーとウィンドウの境界付近(のスクロー ルバー側)にペンをタッチしてもメニューを出すことができます。

右クリック(Blue Button)

「操作メニュー」 キー、または画面上部にあるチェックボタンを、次のペンタッチが 右ボタンである、ということを表すための前置キーとして使えます。

MI-E1の画面方向

MI-E1では、 画面の向きの縦横を切り替えることができます。 WTIIQVGA.ZAC 内にあるイメージの、 "appearance..." メニューから、 "portlait" または "landscape" を選んで切り替えてください。

キーパッド

Zaurus のソフトウェアキーパッドを使って文字を入力することができます。

右上のキーパッドボタンにタッチするとキーパッドが on/off されます。 「半角」「英数」になっていることを確認して使ってください。

MI-E1で画面を縦型にしている場合、 組み込みのキーボードが使用できます。 ただし、組み込みのキーボードを使っても Squeak に必要な文字の中で、 入力できない文字があります。

携帯型キーボート

携帯型キーボード(CE-KB1)が使えます。 外部キーボードを接続した後、 いつもどおりに 「文字▽」 のボタンから 「携帯型キーボード」 を選択してください。 「機能」 キーが Mac の Command キーに、 SHIFT+Ctrl が option キーに対応しています。

「キー」へのタッチ

Zaurus でいうところの 「キー」 へのタッチ (ディスプレイ上ではなく、 その回りの送信や順送りなどへのタッチ) は、上記の「機能」キーと 「切」キー、および「中断」キーのみが意味を持ちます。 「切」キーにタッチすると、 予告無く電源が切れ、 Squeak に対して行っていた変更は保存されません。ご注意ください。 また、 左側のショートカットにタッチするとタッチされたアプリケーション (またはインデックス)が起動しますが、 使用可能メモリの大部分を Squeak が握ったままなので、 アプリケーションはメモリ不足で正しく動作しないことがあります。

割り込み

「中断」キーにタッチすると、 Squeak に割り込みをかけることができます。

リセット

Squeak を実行しているときに、 場合によっては うんともすんともいわなくなる状態になることもありえます。 そのような場合はZaurusを 「簡易リセット(電池を入れ替える動作に相当する)」 してください。

ただし、 Squeak が異常終了して簡易リセットすることになっても、 組み込みアプリケーションなどのデータが消えることはまず間違いなくありません。 ちなみに、 大島は開発際してさまざまな機種を数え切れないほどのリセットしてきましたが、 それでもデータが消えてしまうことは一度もありませんでした。

Squeakの"Instant On"

Zaurus OSには、実は電源をoffにしてもDRAMの内容を保持してお く機能があります。その機能を用いて、MI-C1およびMI-E1上の Squeakでは、電源on のあとイメージファイル読み込みをスキップして、(ほぼ)即座に起 動するという機能(Instant On)があります。

今回は、Instant OnをサポートしたVMは諸般の事情で別のVMにな っています。Instant Onの機能を使って、自分のZaurusをSqueakマ シンとして使うことにチャレンジしたい、という人は、VMとして wtii010126i.ZAC を使ってください。このVM上でWTIIQVGA.IMAを起動すると、バック グラウンドメニューに'suspend'というメニューアイテムが現れま すので、それを選ぶと見かけ上Squeakが終了します。その状態で Squeakを起動すると、"suspend"前の状態に戻ります。

その他機能

その他、もろもろの機能に関しては、file outのアーカイブにあるSqueak コードを参照してください。概ねコメントがちゃんと書かれている と思いますので、それが参考になると思います。

ここで用意されている機能は某プロジェクトでの「完璧なSqueak マシン」を作るために必要となった機能群です。みなさんもこれを 使って自分のアプリケーションマシンを構築してみてください。

手っ取り早い使い方

とにかくダウンロード

ICRUISE、MI-C1、MI-P10、MI-TR1、MI-E1で使いたい人は、ZaurusのWebブラウザで wtii010126.ZACWTIIQVGA.ZACをダウンロードして保存し 展開してください。どちらのファイルも本体内およびカードのどち らにでもインストールできますが、カメラを使うことを考えている 人は、両者とも本体内に、カメラは必要ないがPCなどとのイメージ ファイルのやりとりを頻繁に行いたい、あるいは純粋に本体内にス ペースが足りないという人は、前者を本体内に、後者を外部カード にインストールするのが一般的ではないかと思います。

MI-E1の場合は、カード設定をSDカードにすれば、SDカードスロッ トにあるイメージを起動することができます。その場合でも、CFカ ードスロットのカメラは使用できます。

デモの使い方

MOREソフトとして登録されたSqueakを起動すると、 "WTIIQVGA.IMA" という要素を含むリストが表示されます。 ここでそれをを選択すると、 数秒後に Squeak の画面が出てきます。

そこで出てくる肌色のウィンドウには、 いくつかのデモを起動するための記述が書かれています。

画面にある

"----------"
で囲まれた部分を 「選択して実行(後述)」 すると、 それぞれのデモを実行できます。

機能キーを押してからウィンドウ内にタッチする (ペンをしばらくタッチしたままにしておく) と「中ボタンメニュー」を出すことができます。 「選択して実行」というのは、 ペンのドラッグによって必要な部分 のテキストを反転させ、 その後「中ボタンメニュー」から "do it" を選ぶ、 という意味です。

以下の箱入り娘やお絵描きツールの実行のように、 一行だけを選択して実行する場合は、 その行にカーソルを置き、 どこも選択されていない状態で"do it"を選ぶと、 自動的に行全体が選択されて実行されます。 結構便利です。

ダブルクオート'"'で囲まれた部分はSqueakのコメントです。

デモをやっているうちに訳が分からなくなってしまったら、 「中断」 キーを押して割り込みをかけ、出てきたピンク色の小さなウインド ウを閉じれば普通は元通りに戻るでしょう。 それでも駄目な場合は、 有無を言わさず 「切」 を押して電源offすることをお薦めしておきます。 その後、 もう一度電源を投入してSqueakを起動し直してみましょう。

箱入り娘

一番最初のデモは、パズルゲーム 「箱入り娘」 です。 これを実行するためには、
Hako2 start.     "puzzle game"
の行を選択して実行します。すると、パズルゲームの画面が出てき ます。 ゲームの目的は、 一番大きい「娘」を一番下の段の中央に持っていくことです。

箱入り娘のプログラムは、 せきさん(m_seki@mva.biglobe.ne.jp)がオリジナルを書き、 おおしまがちょっと拡張した300行ほどのSqueakプログラムです。

SimpleDraw (お絵描きツール)

次のデモはお絵描きツールです。 塗り潰し機能や任意サイズの GIF ファイル作成機能があるのでそれなりに使えると思います。 これを実行するためには、
SimpleDraw open.     "simple drawing tool"
を選択して実行します。 画面が白くなったらペンで適当に絵を描くことができます。

お絵描きソフトが動き出した後は、 機能キーを押してから画面にタッチすると単純なメニューが出てきます。 そこで "fill" を選ぶと次に指定した点を囲む部分を塗り潰し、 "color" を選ぶとカラーパレットが表示され、 "save and quit" を選ぶと "WTIIDRAW.GIF" という名前のGIFファイルに指定した矩形をセーブします。 後でマイコンテンツに取り込み、メールに添付して送ることもできます。

Life Game

昔からあるデモとして、 Blue Book にも載っているLife Gameがあります。
(Life new size: 150) run.     "..."
の行を選択し実行してください。 死にかかったセルをペンでぎゅっと押すようにすると復活させるこ とができます。 終了させるときは「機能」キーを押した後、 画面にタッチしてください。

画面に残ったゴミは、 「バックグラウンドメニュー」 から "restore display" を選ぶと消すことができます。

回るデジタルカメラ

デジタルカメラユニット(CE-AG05、CE-AG03、またはC1では CE-AG06) をセットすると、 少々面白いことができます。 "f _ Form extent ..." 以下の部分を 全部選択して実行してください。 AG05のCCDに写った画像がぐるぐると回ります。 終了させるときは「機能」キーを押した後、 画面にタッチしてください。

Squeakの終了

デモだけを実行したい人は適当なタイミングで電源を切ってしまっても構いません。 ちょっと丁寧に終了したいと思う方は、 バックグラウンドにペンをタッチし、 出てきたウィンドウの中から"quit"を選択してください。

2MBモデルでの注意

DRAMが2MBのモデルでSqueakを使いたい人は、 ZaurusのWebブラウザで wtis.ZACwtismini.ZAC をダウンロードし、展開してください。

2MBモデル上でのMOREソフトは、 スタック領域、 グローバル領域、 ヒープ領域を合計して、 最大800KB程度のメモリしか使用することができません。 そのため、 Squeakでは最小限の機能だけを持ったイメージファイルしかロードできず、 起動できてもウィンドウをいくつか開いていくと、 メモリ不足でプログラムが終了してしまいます。 そういうものだと思ってあきらめてください。

その他の情報

ここでは、 Squeak/Zaurus について知っておいたほうが良いことに付いていくつか触れています。

ファイル名の規約

Zaurus OS にはディレクトリの概念がなく、 実行形式ファイルやデータファイルの名前は、 シャープと開発者が一意性を保証することになっています。 具体的にはアプリケーションごとに 4文字の識別名を付け、 開発者はそのアプリケーションに関連するすべてのファイルに、 この4文字から始まるファイル名を付けることを要請されています。

Squeak/Zaurus も、 最初に入っているイメージファイルの名前はこの規約に従っています。 しかし、 イメージファイルに別名を付けて保存したり、 .stファイルを作ったりすることを考えると、 この制約はいささか強すぎます。 "wtii"で始まるファイル以外は Squeakから見えなくしてしまい、 Squeakがアクセスするファイルのファイル名に "wtii" を付加することもできますが、 そうすると8+3のファイル名のうち 4文字が固定されてしまうことになってしまいます。

そこで、 Squeak/Zaurus では、 システムファイルを含む任意のファイルを操作できることにしました。 そのため、 Squeakからファイルを操作する場合は十分に注意してください。 一般に、 Zaurus の 「パソコンデータ」 で表示されないファイルとは Squeak/Zaurusは縁がないはずです。 あらかじめ 「パソコンデータ」 のファイル一覧を眺めておいて、 そこに表示された以外のファイル には手を出さないのが得策かと思われます。

メモリ制限

DRAM 8MBモデルの場合、 アプリケーションが使用できるメモリの総容量は約 5MB とされています。 そこで、 Squeak はヒープとして約 4.5MB の領域を割り当てます。 自分でイメージを作る場合は、 この制限に収まるようにしてください。

SZABでソースをコンパイルする

zau-chu2000.7.tar.gz に、 ソースファイル一式が tar+gzip でまとめられています。展開した後SZABでwtii.prjファイルを 「開く」と、 「ディレクトリを修正しますか」、 と聞かれますので 「はい」 を選択してください。

これで「ビルド」すればバイナリが生成されます。

Squeakから生成されるべきcのコードは、 zau-chu2000.7.tar.gz に入って いるZaurusVM3076というイメージを使って作ってください。

イメージを自分で小さくする

2.9 alpha、update 3076ベースのイメージを元に、あんまり無茶 なshrinkはしたくない、という人は、zau-chu2000.7.tar.gzに入って いるZaurusVM3076.imageを起動し、"previous project"を選んで、 そこにある大きなWorkspaceの内容を全選択してdo itしてください。 これをもとにもっと自分好みのイメージを作ることもできます。

その他のイメージとfileOut

Zaurus版独自機能のfile out があります。自分でプログラムを書くときにはこちらも参考にして ください。

Squeakでかかれた関数電卓(暫定名:電卓君)が、このURLにあります。使い方に関しては こちらを参照してください。また、 ソースコードは こちらにあります。

リンク集



Yoshiki Ohshima
Walt Disney Imagineering R&D
1401 Flower St.
Glandele, CA 91221-5020