ObjectSquare [1998 年 11 月号]

[Happy Squeaking!!]


1.はじめに

1.2 なぜ Smalltalk?

1.2.2 Highly Interactive


もうひとつ、教材としてSmalltalkを取り上げる理由として、その環境のインタラクティブ性ということがあります。

オブジェクト指向を学ぶときに、「プログラムの中でのオブジェクトが実際に目に見えたらどんなにわかりやすいだろう」と思ったことはないでしょうか。
また、現在自分が使えるクラスにはどんなものがあり、どんなメッセージが利用できるのか、更に、あるメッセージはライブラリのどこで呼ばれているのか、あるクラスはどこで生成されているのかといったことをすぐに知ることができたらと考えたことはないでしょうか。

こうした要求は、オブジェクト指向で開発をする際には非常に自然であるといえるでしょう。オブジェクトにメッセージを送信するのがオブジェクト指向のもっとも基本的な部分とすると、開発者側も、ファイル(に書かれているプログラム)を対象とするよりは、そこで表現されているクラスやオブジェクトを対象としたいと考えるはずです。
このような考えに立てば、クラスやオブジェクトを対象として、インタラクティブなやり取りの中でシステムが開発できる姿が理想的なのですが、多くの統合開発環境は、オブジェクト指向言語をサポートしていたとしても、ファイルを中心に構成されているというのが現状です。

一方でSmalltalkは、最初からこのような理想系をかなり実現した形で存在しています。
Smalltalkは、もともと1980年の昔にXeroxのPalo Alto研究所で、Alan KayやDan Ingallsといった若手のエンジニアによって開発されました。当時彼らが夢見ていた理想は壮大なものがあり、その一つはDynaBookという名前で知られています。DynaBookは、子供も大人も使えるコンパクトな一種のノート型コンピュータで、マウスとビットマップディスプレイとネットワーク機能を持ち、ユーザの要求が、プログラミングレスで対話的なやり取りによって実現できるといったコンセプトを表していました。そのDynaBook上で、対話的インターフェースを提供する一種のOSとして考えられていたのがSmalltalkだったのです。(DynaBookのアイデアの多くは後にMacintoshなどに採用されていくことになります)。
このような経緯から、Smalltalkはもともと非常にインタラクティブな側面を持っていたのです。
通常のプログラミング言語と異なり、言語は開発環境にビルトインされた形で提供され、その高度な統合の具合は、既存のビジュアルツールの利用者でも舌を巻いてしまうほどの完成度を持っています。

Smalltalk環境の中では、実際にオブジェクトに語りかけるようにして、プログラムの開発が可能です。開発に必要な操作の単位がオブジェクトレベルであり、既存のファイルを中心にした開発環境とは一線を画しています。
例えばtoString()というメソッドの実装されている箇所を一覧したいと思った場合、ファイルベースの環境では、全てのファイルに対して grep toString() などと外部ツールを起動して地道に該当する箇所を探し、複数のファイルを一々開いてみる必要がありました。これに対しSmalltalkでは、" Smalltalk browseAllImplementorsOf: #printString" (printStirngはJavaでのtoString()に該当)のSmalltalk式の実行で、たちどころに該当部分がまとめられたブラウザを開くことができます。

もうひとつ、対話的な機能を支えるものとして、バイトコードインタプリタという特徴があります。
これはJavaでも採用されている方法なのですが、Javaの場合はマルチプラットフォームの実現ということ以外に今一つその利点が活かされていません。Smalltalkは、システム内部にバーチャルマシンのシミュレータを持ち(これも全てSmalltalkで記述)、実際のVMの実行でバグが起こった場合に、そのシミュレータ上で実行させ、デバッグを行っていくことができます。これにより「直しながら実行」ということが可能です。ステップ実行させながら実装を修正し、いま修正した直前から実行を即座に再開できてしまいます。また、バイトコードへのコンパイルの単位はメソッドごとで、Javaのようにあるクラスの1メソッドを書き直したら、そのクラスをすべてクラスファイル単位でコンパイルし直さなければならないといった不便さはありません。1メソッドのコンパイルにかかる時間は一瞬であり、開発者は「コンパイル待ち」といった作業の流れを絶つような非効率的なことにとらわれずにオブジェクト指向に専念できます。


© 1999-2001 OGIS-RI Co., Ltd.

Prev.

Index

Next