vieweditattachhistorytopchangessearchhelp

第03回


■SqueakではじめるSmalltalk入門   第3回


 本連載では、名前は知っていてもなかなか触れる機会のないSmalltalkがどんなものであるかを知っていただこう…というテーマで、最近話題のSqueakを紹介しています。今回は、Squeak環境のGUIの簡単な解説と、きわめてシンプルなSmalltalkコードの実行を試みます。

 Squeakの前身であるSmalltalk環境のGUI、特にマルチウインドウシステムは、もともとLisaやMac、ついでをいえばWindows、UnixのX-Windowの手本になったものなので、こうした環境に馴れている人にはきわめて直感的に扱えるはずです。加えて、Squeakの前身になるApple SmalltalkからSqueakになったときに、Macライクなタイトルバーが“逆輸入”され、さらに3.0からはSmalltalk環境で特徴的だった左側にポップアップするスクロールバーも廃止されたので、少々デザイン的に野暮ったいことに目をつぶれば、違和感はほとんどないはずです。ウインドウ右下にサイズボックスはありませんが、ウインドウのサイズ変更は縁にポインタを合わせてドラッグするWindowsスタイルで行なえます。

 メニューに関しては徹底してポップアップメニューが使われている点でMacのUIデザインとは趣を異にします。メニューバーに相当するものはデスクトップにも、ウインドウ内にも原則としてありません。Finderのメニューに相当するものはデスクトップをクリックしたときに表示されるデスクトップメニュー、あるいはワールドメニューと呼ばれるメニューがその役割りを担います。各ウインドウ(あるいはペインと呼ばれるウインドウ区画)で利用できる機能を収めたメニューは、スクロールバー上端にあるメニューボタン、あるいは、そのウインドウ内で特殊なクリックをしたときに現われるように設計されています。

 ここで、特殊なクリックについて説明しておきましょう。ご存じのとおりAltoのマウスは3ボタンで、そこでデザインされたSmalltalk環境は3ボタンマウスを前提に設計されました。ただ、当時のマウスの形状やボタンの配置についてはまだ試行錯誤の過程にあり、ボタンが今のように横に並ぶとは限りませんでした。そこで、左-中-右とは呼ばず、それぞれを赤-黄-青と呼ぶ規則がSmalltalk環境には適用されました。これは主に、ポインティングデバイスの形状に左右されないコーディングを可能にするための配慮ですが、UIの説明にもこの色を用いてなされるのが通常です。

 ウインドウ(正確にはウインドウ内区画=ペイン)に依存的な機能を用意したメニューは「黄ボタンメニュー(yellow button menu)」と呼ばれ、その名のとおりウインドウ(ペイン)内での黄ボタンクリックで呼び出すことができます。たとえば、選択した文字列に対するカット、コピーといった命令をメニューから実行したいときは、対象となる文字列を選択した後、ホイールボタン(あるいは2ボタンマウスなら右ボタン、ワンボタンならoptionクリック)を押して現われるメニューからcut、あるいはcopyを選ぶ、と言った具合に使います。ちょうどコンテキストメニューのような役割りと使い勝手ですね。

 青ボタンは、かつてSmalltalk-80では青ボタンクリックしたウインドウ全体に対する機能(たとえば、タイトル変更とかウインドウ移動、サイズ変更、最小化など)をメニューを介して行ないたいときに使われていましたが、GUIデザインの変更に伴いこの機能はタイトルバーに全面的に委譲されたため、現在はウインドウ操作とは関係ない別の機能が割り当てられています。よって、ウインドウシステムにおける通常の作業では黄ボタンだけ知っていれば事足ります。

 3ボタンマウス(ホイールマウスでホイールがクリック可能なものも含めて)では左-中(ホイール)-右が、赤-黄-青にそれぞれ対応しますが、2ボタンマウスの場合は、左と右が、それぞれ赤と黄、青がcmd(コマンドキー。Windowsの場合はalt)赤クリックです。ワンボタンの場合は、通常のクリックが赤、黄がoptionクリック、青がcmdクリックです。この連載では、よく使用する黄ボタンクリックはそのまま「黄ボタンクリック」と、他方で青ボタンクリックは「cmd-クリック」と記するつもりです。

 ウインドウ内のテキストの入力や操作は、これまたMacでUIをデザイン・実装をしたのと同じラリー・テスラーらがSmalltalkにおいても関与していた経緯もあり、我々が知っているものとかなり似ています。大きく違うのはダブル(トリプル、あるいはそれ以上…の)クリックという概念がないことでしょうか。単語のダブルクリックによる選択はキャレットのクリックにより実現されています。トリプル以上クリックの段落全体や全文章の選択は、クリックされるキャレットの置かれている場所(当該段落の先頭や末尾、あるいは全文章の先頭や末尾)で判断されます。

 こうして選択された文字列がSmalltalkコードの場合、cmd+P、あるいはcmd+Dというキーボードショートカットで評価、実行することが可能です。このことは、Smalltalk環境内では、文字が入力できさえすればどこででもSmalltalkコードを評価、実行することができることを意味します。cmd+Dはdo itを意味し式の評価だけ、cmd+Pはprint itで式の評価と直後への結果の挿入というふうに使い分けます。たとえば「3 + 4」と入力して選択しcmd+Pとタイプすると答えの「7」が得られます。ウインドウを新しく開くことを意味する「Workspace openLabel: 'untitled'」という式の返値にはあまり意味がないので、cmd+Pではなく、cmd+Dを使います。

 余談ですが、通常の言語処理系やそのIDEの扱いに慣れた人がSmalltalk言語を学ぼうとしてまず戸惑う要因として、このようにどこでも式を書き評価できるSmalltalk環境におけるSmalltalk言語の「気軽さ、気ままさ」が挙げられると思います。あらゆるGUIベースのOS向けの、いかなるlightweightと表される言語と比べても、他に類を見ないlightweightさに思わず気後れをしてしまうのでしょう。

 次回はもう少し長めのSmalltalkコードを記述してみます。

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


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

This page has been visited 1957 times.