vieweditattachhistoryswikistopchangessearchhelp

Xemem:Squeak


Squeak について 〜Dynabook OS としての Squeak/Smalltalk 考〜

子供用プログラミングツール。オーサリングツール。プレゼンテーション用ツール。ゲームが作れるアプリ。ハイパーカードに似たソフト。Smalltalk の処理系… Squeak の紹介をよく見かけるようになり、興味を持ってもらえるのをとても嬉しく思う反面、Squeak がこうした小さな範疇でとらえられ、そのまま多くの人の意識に定着しまうのを少々残念に思う。冒頭で列挙したような紹介からは、Squeak の呈示するほんの一面しか伝わらないし、ある種の誤解を抱く人もいるだろう。同時に、メディアでは Squeak があたかもぽっと出のルーキーであるかの如く扱われることが多いが、それも“いちファン”として気に入らない。Squeak と呼ばれる存在になってから数えてもすでに6年が経過しているし、Mac 誕生から遡ること6年、1977 年頃にはそのかたちが整った Smalltalk という名のコンピュータ環境から数えれば、余裕の大ベテランとして扱われるべき存在だからだ。ここで“環境”と言ったが、そう、Squeak/Smalltalk はよく言われる“アプリ”や“ツール”、もしくは単なる“処理系”ではない。Mac や Win、あるいは Linux などと肩を並べても遜色ない長い歴史と高いポテンシャルを有する“OS”、それも、あの アラン・ケイの Dynabook 用 OS なのである。


マシンの中で動くマシン、あるいは暫定 Dynabook 環境

え〜っ。でも、起動方法はただのアプリだしぃ、動作には別途 OS が必要じゃん…。だいたい、Dynabook なんてハードはどこにもないっしょ!? ごもっとも。では百歩譲ってアプリだとしても、Virtual PC や VMware のようなものを思い描いてもらいたい。多くの人が Squeak の本体だと思っている 500 キロバイト強の小さなアプリ部分(仮想マシンとも言う)が主に担う役割りと言えば、中間コードの解釈と実行に過ぎない。本来ならコンピュータのハードウエアが担当する部分だ。乱暴な言い方をすれば、この役割りを専用チップに任せてしまうことで“ Squeak マシン”を作ることもできるだろう。事実、かつて Smalltalk は Alto の後継、D-マシンにおいて、それに似た仕組みで動いていた(D-マシンの計算部には、Crusoe のようにコマンドセットを変えられる機構があり、他に Lisp や Mesa といった環境の専用機にスイッチひとつで早変わりした)。ちなみに、Squeak の“本体”はどこにあるかというと、「仮想イメージ」と呼ばれる 10 メガバイト強の 大きなバイナリファイル( .image ファイル)に、それこそ先の中間コードのプログラムとして収められている。

Squeak/Smalltalk が、Mac OS における Macintosh のような“専用の乗り物”を持てなかった(Dynabook がいまだに生産されていない)という事実は、処理速度面での大きなハンデを生じさせた。しかし一方で、既存のシステムに柔軟に対応して機能しなければならない宿命を背負った Squeak/Smalltalk は、高いポータビリティというポテンシャルを持ち続けることに成功した。現在、Squeak/Smalltalk は持ち前の身軽さで、Mac、Win、Linux …とメジャーな OS、ボックス、デバイスに移植され動作している。移植の際に必要なのは原則、ハードや OS に依存的な仮想マシンだけでよい。その上で動作する仮想イメージはほぼ完全なバイナリ互換性を保つ(平たく言えば、単にコピーしてきて使える)。したがって、WinCE デバイス上で開発したソフト(を組み込んだ仮想イメージ)を、Linux 環境でそのまま運用するなどという「普通、逆だろ?!」ということも必要なら自然な流れで行なえる。

仮想イメージには、オブジェクト(処理が付加されたデータの一形態)によって構成される世界が封じ込められている。オブジェクトたちはときに我々ユーザと、あるいはオブジェクト同士で通信をしながら、自らの状態を変化させ、まるでおとぎ話のこびとさんのようにシステムを動かす。彼ら個々の素性は明らかで、その設計図とも言うべきソースコード(先の中間コードの元になるもの)へのアクセスは実にたやすい。また、生きたまま捕獲して内部を探ったり(ちょっと残酷?(笑))、あるいは、その場で状態に手を加えることすら許されている。(余談だが、オブジェクト指向と名の付く環境は数あれど、その生きた姿を拝めたり、ましてや、直に触れることができるのは Smalltalk を置いてほかにはないと言われるほど、その環境はオブジェクトとそれに接する我々に“優しい”)

そんな深遠な“Squeak/Smalltalk ワールド”が目の前に展開されていることを知るすべを持たない人が、Mac・Win の UI ガイドラインを無視した、そのわりに動きの鈍いけったいなソフトやなぁ…、と訝しがりながらもとりあえず納得し、File メニューから Quit を選択して即刻終了…というのが、Squeak との出会い(と、別れ…)のよくあるパターンなのではあるまいか。Squeak を、まだ足を踏み入れたことのない自分にとっては未知の“コンピュータ環境”だと意識し、新しいデバイスや OS に出会う時と同じ態度で接すれば、こうした行き違いは簡単に防ぐことができるはずだ。(ちなみに、Navigator フラップにある Escape Browser ボタンには、手軽に、しかし目に見える形で Squeak が、Mac・Win の助けがいらない“独立した環境”だと実感できる仕組みが用意されている)


軽い違和感と共に始まる探検と、その先に待つ「未知との遭遇」

ウインドウはあっても、なじみのアイコンやメニューバーの見当たらないデスクトップには、少々、戸惑いを覚えるかも知れない。しかし、1)ウインドウ操作はやや Win よりの仕様(上下左右、四隅で大きさを変えられる)。2)命令はすべてポップアップメニュー(デスクトップでは単なるクリック、ウインドウ内では option +クリック)にて。3)スクロールバーはマウスカーソルが枠内にあるときだけ左側に現れる。4)テキスト編集や修飾は、メニューよりキーボードショートカットで充実している(太字、斜字、下線は、それぞれ、コマンド+6、7、- でメニューからは不可、など)、といった普段使っている環境からすると変則的な“作法”に慣れれば、あとはどんどん探検していけるはずだ。

Tools フラップには、Workspace というマルチフォント対応の書き捨てのメモ帳、File List というファイラ(ファイルエディタ)がある。Navigator フラップからは、ブラシアイコンで呼び出すことができるお絵描きツールにアクセスできるので、これらに積極的に触ってみよう。さらに探検が進めば、各種ゲームをはじめ、プレゼン用ツール、コラボ用通信環境三次元キャラクタのオーサリングツール(後述の“すべてが…”の原則には反するが) MP3 音声・MPEG1 映像プレーヤ、その実用性には疑問を呈せざるを得ないがメーラや WWW ブラウザ、このサイトで使われている HTTP サーバや Wiki クローン(ただし、標準添付ではない)などといった“アプリ”の存在を知ることになるだろう。この頃にはもはや Squeak が環境であることを疑う余地はないはずだ。

Mac・Win のそれと比べればはるかに少ないが、それでもかなりの数のこうした“アプリ”にひととおり触れた暁に、改めて、これらすべてがプログラミング言語としての Smalltalk で“設計”されたオブジェクト、もしくはそれらの連携によって実現されたものだということを知らされた人が、驚きを通り越して感動を覚えたとしても、私はそれが大げさなことだとは決して思わない。Mac とも、Win とも、Linux/UNIX とも一線を画す、もう一つの不思議な“コンピュータ環境”。そんな Squeak との真の出会いの瞬間をそこに見るからだ。(正確には、Squeak/Smalltalk に“アプリ”という概念は存在しない。先に挙げた例は見栄えこそアプリっぽいが正体はオブジェクトである。彼らは定義され新しく生み出されると同時に環境と一体化する。そしてその“新米オブジェクト”に、改めて、他のオブジェクトとの連携のしかたや自らの状態の変化のしかたを教えて込んでゆく作業が Smalltalk プログラミングの実際である。それはさながら「素材と同じ粘土でできた作業台で行なう粘土細工」あるいは「人格形成ゲーム」といった風情を持つ)


「使い勝手」「手作り感覚」が共存する「変幻自在」な存在

一線を画すといっても、共に既存の道具やメディアのメタファが多く用いられている Mac・Win と Squeak/Smalltalk との間には似通った点が多いので疑問を呈する向きもあるだろう。確かに、例えば、Squeak に用意されたペイントツールの見た目は、Mac・Win でよく使われるお絵描きソフトのそれと何ら変わりない。相互に影響を及ぼしあったと思われる ウインドウやメニューと言ったシステムがその使い勝手を支えているのも事実だ。だが Squeak/Smalltalk において、(例えば、Mac でいうなら Apple の“i”ソフトのような)作り込まれた見栄えのするツールが誰かから提供されることはまれだし、ましてや、それを待つような態度でいては何も進んで行かない。自ら必要に応じてツールを作り出し、その過程すら楽しんでしまおうというスタンスがユーザに強く求められる。荒削りでも、皆で共に作って用意したツールを、交換したり再構成してその部品を再利用してゆくための技術的情報交換がコミュニティにおけるコミュニケーションの大半を占めることになる。Mac・Win と Squeak/Smalltalk では、見た目こそ似ていても、それを利用するユーザの環境への接し方や心構え、ユーザ相互の助け合いのあり方に大きな隔たりがあるのだ。

一方で、このような“手作り感覚”は Mac・Win よりむしろ、 Linux/UNIX のそれに近いと気付く人もいるだろう。その認識は正しい。しかし、繰り返しになるが Squeak/Smalltalk の場合、すべてが Smalltalk で記述されていることで、その手作り感覚を余計な煩わしさに邪魔されることなく満喫できるよう配慮されている点で異なる。階乗の定義からプロセス管理まですべてのコードに同じ感覚と容易さでアクセスでき、必要ならばその場で加筆・修正し直後から運用することができる。新しいコードのコンパイル・リンク処理はメソッド単位で実行され瞬時に終わるため「開発サイクル」という概念もうっかりすると忘れがちになるだろう(既存の環境と行き来する開発者は要注意だ(笑))。私のように薄っぺらな人間には縁遠いチャレンジだが、処理系の根本を変えて別の世界を築き、それを自ら垣間見ることも可能だとか。

自らの特性をも変化させられる、そうした柔軟性も Smalltalk ならではと知ったとき、余談になるが、某所で提示された「Smalltalk とはなんぞや?」という問いかけは実に興味深いものになる。我々が「これぞ Smalltalk だ」と思っている、文法やオブジェクト指向という概念、クラスライブラリ、GUI 環境は実際、「変幻自在」であるので、Smalltalk を規定する位置にはいなくなる。Smalltalk と言ってもいろいろあるので、Squeak/Smalltalk に限った私の今のところの見解は、変化し存続し続ける宿命を負ったコンピュータ環境…といったところか。 そう言い切ってみてから、改めて Squeak/Smalltalk でオブジェクトたちと戯れていると、既存のコンピュータ環境が複雑な歯車で組み立てられた精密機械なのに対し、オブジェクトの有機的集合体である Squeak/Smalltalk は、必要に応じて自らの性質を変化させることができる新種の生命体がごとき存在に思えてきて楽しい気分にさせられる(寄生獣「ミギー」を彷彿とさせる(笑))


“真のパーソナルコンピュータ”と、その“ユーザ”

Mac の UI デザインにおけるアドバンテージは「初心者に易しくベテランの手に馴染む」ことに尽きる。もっとも、この特色は System 7 以降、急速に失われ、計算機への式のペースト機能が継承されなかった OS X において(笑)ついに放棄されたといった感も強い。そうは言うものの腐っても鯛。UI 面での使い勝手という切り口において、一日の長を持つ Mac・Win に対し、その元祖とはいえ '70 年代に事実上進化を終えてしまった Squeak/Smalltalk に出る幕はない。他方で、専用マシンを持たないがゆえに、動作に仮想マシンを介する必要がある Squeak/Smalltalk は、土台となる計算機械の能力を余すところ無く引き出すには実に不向きな環境だ。そんなどっちつかずの中途半端な Squeak をもって、すでにある環境を置き換えるには力不足だし自分には無用だ…という考え方も「あり」とは思う。(いうまでもないが、お絵描きやタイルスクリプトのような Squeak の得意とする「一面」を活用して“いちアプリ”として気軽に接し楽しむのも、もちろん「あり」だ(笑))

しかしそれは従来の「パーソナルコンピュータ」の概念にとらわれたものの見かただ。使い勝手重視の小じゃれた道具として、あるいは、計算能力を引き出すためのソフトウエア工房として使えされすれば、我々はコンピュータの提供しうるメリットを余さず享受できたと言えるか、と逆に問うてみよう。具体的な例を今は出せなくても、コンピュータのポテンシャルが決して“その程度”のものではないことは想像に難くないはずだ。「使い勝手」と「手作り感覚」、両者のメリットをバランスよく併せ持ち「変幻自在」な“第3のコンピュータ環境”はその答えのいくつかを探すのに役立つかも知れない。我々がこの環境に積極的に関わり、それを変化させたとき、さらに、その変化の中に身を置くことによって生ずる自身の価値観の変化を見据えた後に、改めて考える“真のパーソナルコンピュータ”とは、結果、どんなものになるのだろうか。とても興味深い。 Squeak/Smalltalk は、相対し方によってはそんな体験をも可能にする希有な存在なのだと多くの人が意識し、頭の片隅においてもらえるようになるのなら、Dynabook が我々の手に乗る日もそう遠くはないように思う。--鷲見



Xemem 公式ページ
Xemem と Swiki




Xemem:Squeak へのつっこみ

このページを編集 (12585 bytes)


Congratulations! 以下の 1 ページから参照されています。

This page has been visited 12360 times.