おがさわらなるひこのオープンソースとかプログラミングとか印刷技術とか

おがさわらなるひこ @naru0ga が技術系で興味を持ったりなんだりしたことをたまーに書くブログです。最近はてなダイアリー放置しすぎて記事書くたびにはてな記法忘れるのではてなブログに移行しました。

クリエイティブ・コモンズ・ライセンス
特に断りがない場合は、本ブログの筆者によるコンテンツは クリエイティブ・コモンズ 表示 - 継承 4.0 国際 ライセンスの下に提供されています。

Smalltalk勉強会2010.1参加録

あれえっ、エントリ立ててなかった。
ということで今さらになっちゃいましたが1月27日に行われましたSmalltalk勉強会に参加してきました。

いつもながら幹事と、今回はスピーカーを務められた梅澤さん、会場ご提供の上、出たばかりの VisualWorks 7.7 の Non Commercial 版をご提供いただきましたシンコム・システムズ様(今度の OSC Tokyo 2010/Spring にも出るそうなのでブースに立ち寄ってあげてください)、色々興味深いお話を聞かせていただいてありがとうございます。


ということで今回は商用 Smalltalk 環境 VisualWorks 7.7 についてのプレゼン。
細かい話はあとでにさせていただく……つもりが、あとでするつもりの話題をすっかり忘れてしまったわたくしがいる。しくしく。覚えているのは、

  • 二項メッセージ (+ とか * とか) を並べたメッセージセレクタが作れるようになった。たとえば「--------------------->」とか。
    • その代わり 1+2 とはかけなくなりました。トークンを識別する空白が必要になります。
  • Parsel (外部モジュールみたいなものかしら、すみませんよくわかってません) の仕様が変更された
  • 伝統的な ChangeSet から、近代的なバージョン管理システムが導入された
  • Japanese Locale が同梱された!

Umejava さんもコメントされていますが、そもそも会場の Smalltalker の皆さんは Squeak に比べると VisualWorks は「なんか微妙」という雰囲気が漂っていたことは否定しません。
ので、これらの新しい機能に対しても割と冷やかであったような気がしました。

私個人としてもやっぱり Squeak (やそのフォークの Pharo) に Smalltalk らしさを感じるんですが、VisualWorks の操作感の軽さ、VM の速さは、業務で使うなら魅力的なのかもなあ、と思うので、

エクストリームプログラミングが産まれたクライスラーのプロジェクトで採用された Smalltalk 処理系、VisualWorks をあなたも体験しませんか?

などという煽り文句を書いておくことにします。

スピーカーの梅澤さん、会場をご提供いただいた VisualWorks のインプレを行っていただいたシンコム・システムズ・ジャパンの皆様、ありがとうございました!

オマケ:私的 Smalltalk 処理系インプレ

まともに書けもしないのにインプレをするところがムボーです。
実は Smalltalk 自体、現在メンテナンスされている処理系が複数あること自体あまり知られていない (私調べ) のですが、その中で四つほど取り上げて Smalltalk 初学者のぼくから印象を述べてみたいと思います。
嘘などあるかも知れないからちゃんと原典あたってくださいね。

Squeak

PARC の Smalltalk-80 チームが Apple のために開発した Apple Smalltalk が原型で、コミュニティベースのオープンソース処理系*1。初期の SqueakSmalltalk-80 らしさを色濃く残しているので、ある意味直系と言えるとかなんとか。

Squeak の特徴はよくも悪くも Morph の導入でしょう。
とりあえず画面突っついてるとなんかできる GUI フレームワークは、ものすごい「環境の中で戯れている喜び」「いじっている喜び」を実感できます。ぼくとしては Smalltalk をいじるならまずは Squeak がいちばんいじっていて楽しいと思います(仕事で使うなら別の条件もあるでしょうが)。

逆に Morph が自由すぎるため、それを抑制したいというニーズに答えるのが大変だとか、今の GUI には普通に存在するウィジェットがそろっていないため、普通の GUI アプリを作るのが実は大変だとか、見た目がいかにも Morph (Squeak) な見た目になってしまうとか、いろいろ問題はあるようです。

あ、それと Squeak というとスクイークランドなどの活躍で Etoys があまりにも有名になってしまっていて(それ自体はよいことなのですが)、Squeak = Etoys という風にとらえられがちなのですが、Etoys は Squeak で実装されたビジュアルオーサリング環境にすぎず、イコールの関係ではない……というのが私の理解です。

Pharo

Pharo は Squeak をよりよくしようという Squeak のフォークです。
専門家からみるといろいろあるんでしょうが、ぼくが雑駁に理解している Pharo の目標は:

  • クラスライブラリの整理
    • Morph 導入以来ほとんど使われなくなった MVC フレームワークなど、使用頻度の少ないクラスを大胆に削減
    • 単純継承のためにどうしてもクラス構造が複雑になるのを防ぐために trait (ruby でいう mix-in ですかね) を導入
  • モダンな GUI のために

まあ他にもいろいろあるんですが、注目していきたいプロジェクトかな、と思います。OSC では日本語もちゃんと動いてたし。
なお現状の Pharo は Squeak VM で動くのですが*2、将来にわたってそうかどうかは私は把握していません。

VisualWorks

今回の主役。シンコム・システムズ様*3の扱っている商品ですが、非商用 (Non-Commercial: NC) 版もあります。
特徴としては(間違ってたらご指摘願います)、

  • 超早い VM。10000 factorial が1秒で帰ってくる。インタプリタ系言語では多分最速の部類。
  • Squeak に比べると UI が軽い。
  • Morph はない代わりにクラスの構造はだいぶすっきり。
  • GUI を「Windows ライク」「Mac ライク」などと選べるので、Smalltalk でかかれたプログラムと顧客に意識させない。
  • 実行形式をイメージからストリップして VM とくっつけ、単純な実行ファイル形式にする機能がある。すなわち環境から切り離して配付が可能。

ということで、実際に仕事で使うための障壁が低い(もちろん Squeak が使えないという意味ではないです) 環境といえそうです。
Smalltalk を仕事で使えないかなーと思っていて、Squeak のいかにも、な画面をみて「あ、これはちょっと仕事には……」と引いてしまった人がもしいるとすれば、VisualWorks に触れてみるのはよいと思います。

GNU Smalltalk

実はわたし触ったことないんですが、みなさんの話を聞くと、

環境がない Smalltalk って誰得って気がするよねぇ〜

だそうです。そんだけ。

*1:現在のバージョンの 3.x は MIT ライセンス、現在開発中の 4.0 は Apache ライセンスに移行するそうです。

*2:Smalltalk において重要なのは、VM はまあいいとして、その上で動く「イメージ」の概念です。VMJava VM なんかでご存知でしょうけど、イメージというのは、VM の上で動いている環境、ウィンドウ配置や入力した文字列、クラスライブラリ、自分の書いたソースなどなどをまるごと含んだ巨大な塊です。ファイルをエディットするのではなく、イメージをいじって自分の欲しい環境を作って行くのが Smalltalk の醍醐味です (もちろん、自分の書いた部分だけファイルに出力して取り出し、また別のイメージに入れる機能もあります)。名古屋勉強会での台詞を借りれば「SmalltalkVM とイメージの関係は仮想環境(例えば VMware) の VMware 自身と仮想イメージに近い」とのこと。

*3:関係ないけど Cincom ってシンシナティのコンピュータ会社でシンコムなんだそうな。世界初の独立系ソフトウェアベンダだそうです。