BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース ブラウザに移る Smalltalk IDE たち - Jtalk,tODE,Lively Kernel 2.0

ブラウザに移る Smalltalk IDE たち - Jtalk,tODE,Lively Kernel 2.0

原文(投稿日:2011/08/22)へのリンク

Smalltalk の実装は,Dan Ingalls 氏と Alan Kay 氏が Xerox PARC において開発した 最初の段階から,常に IDE と強く結び付いていた。
最近の IDE や開発ツールには,Cloud9 のように Web で動作するものや RStudio のように HTML や Javascript GUI による (RStudio は GWT を利用している) もの,さらには WebKit ブラウザを同梱する WbInspector のようなものが現れ始めている。Smalltalk の中にも,これらと同じ道を進むものが現れ始めた。

tODEPharo (Squeak のバージョンのひとつ) と GemStone Smalltalk の機能を利用するための,Web ブラウザベースのフロントエンドである。HTML と Javascript を駆使して,クラスブラウザなど様々な機能を Web ブラウザ上で実現する。tODE が採用したこのアプローチは,Smalltalk の Web フレームワークである Seaside で記述されたアプリケーションとしては理にかなったものだ。これによって Web アプリケーションの利用や,ブレークポイントや例外のデバッグツールへの直接通知が – すべてブラウザ上で – 実現されている。Seaside の生成するコンポーネントを確認するためのインスペクタも,ブラウザで動くように移植されている。

tODE は現在,最初のバージョンである 0.1 がリリースされていて,Pharo と GemStone 上で動作するWeb サイトには tODE を簡単に試すことのできる方法が用意されている。まずワンクリック・アプリケーションをダウンロードして,Pharo VM と tODE のイメージセットを取得する。起動するには tODE を開始して,Web ブラウザで http://localhost:8080 を指定すればよい。
これと同じようなアプローチが,Cincom の WebVelocity でも試みられている。

Smalltalk をブラウザで動作させるもうひとつのアプローチとして,Javascript VM で動作する Smalltalk ランタイムの開発がある。これを採用している Jtalk は,Pharo の文法 (インライン Javascript 用の拡張など,一部変更されている) を使用する Smalltalk である。Jtalk のコンパイラは Jtalk 自身で記述されていて,ソースを直接 Javascript にコンパイルする。Jtalk のソリューションの中には,Avi Bryant 氏の Clamato プロジェクト を起源とするものがいくつかあるが,Lukas Renggli 氏が開発した Smalltalk ベースの PEG パースライブラリである PetitParser の採用もそのひとつだ。
ほとんどの Smalltalk 実装がそうであるように,Jtalk も利用可能なクラスの更新,参照,ブラウズを行う開発ツールを備えている。Jtalk の Web サイトで "Class browser" ボタンを選択すると,REPL ("Workspace"というタグで表示される) を持った IDE が利用できる。また Jtalk の GitHub リポジトリ には,初期段階のデバッガも登録されている。さらに,ブラウザに表示されたコードを編集して,WebDAV サーバにコミットして戻すことも可能だ(Jtalk を WebDAV サーバで使用する方法に関するドキュメントを参照)。

Jtalk は Smalltalk コードを Javascript にコンパイルするため,Javascript プラットフォームに関連する問題にも対処する必要がある。Jtalk の開発者である Nicolas Petton 氏が,Smalltalk の DNU 機能を実装する上での問題点 について説明している (DNU = doesNotUnderstand,Ruby の method_missing に相当)。
簡単に言うと,この機能を実装するためには,すべての呼出サイトがレシーバにメソッドがあるかどうかをチェックして,なければ DNU の特定ハンドラを呼び出すようにすることが必要なのだ。
Newspeak 言語の開発者のひとりである Gilad Bracha 氏が最近語ったところによると,現在開発中の Newspeak の Javascript バージョン においても,Smalltalk の機能を継承しているがために同じ問題に直面している,ということだ。
この問題から思い起こすのは,JVM の動的言語実装に関する問題だ。先日リリースされた Java 7 は invokedynamic バイトコードと関連機能を使って,この問題に対処している。JS プラットフォームでもこれと同じようなソリューションとして,Dynamic Proxies (動的プロキシ) が将来 Javascript 言語に追加される予定だ。現時点では,初期バージョンの Dynamic Proxy が Mozilla Firefox に実装されている{/0 }他,Google V8 の Dynamic Proxy サポート も開発が開始された。Javascript VM 上の言語が Dynamic Proxy を前提にできるまでに時間が必要なのは明らかだが,Java の invokedymaic の時のような期間を要するかどうか,今はまだ分からない。

Web ブラウザ上で Smalltalk スタイルの IDE を実現するアプローチとして,最後に挙げるのは Lively Kernel である。このアプローチは Dan Ingalls 氏を中心とするチームによって開発された少し後に,Oracle を離れて独自のプロジェクトに移行した。ここしばらく沈黙を守っていたが,先日の 発表によると,Lively Kernel 2.0 の開発作業が進行中 であるということだ。この発表で Dan Ingalls 氏は,当初 Lively Kernel 開発の背景にあった理由やアイデア,概念 に関して説明している。さらに Lively Kernel 2.0 では Morphic ベースの GUI 用に新たなレンダリングモード,Smalltalk の Image に相当するLively セッションの状態をシリアライズする新たな方法が導入されているということだ。

この記事に星をつける

おすすめ度
スタイル

BT