標高+1m

Don't be rational.

名古屋Smalltalk合同勉強会に行ってきました

こんばんは、やまぴこです。

9月29日土曜日(昨日)、名古屋の32階で行われたSmalltalkの勉強会に参加させていただきました。

名古屋行くぞー

名古屋の32階

名古屋城

13:30分からいよいよ開始!
タイムテーブルはここにのってます。
http://atnd.org/events/30524

umejavaさんのOpenQwaqの話は3D会議の話でした。3Dアバターが3D会議室を歩き回って、音声、画像、テキストチャットやなんかで会議をするんですが、すごいのがPythonでプラグインて形でこの会議室内で使えるアプリを作れるってこと。他にも3Dモデルをインポートできたり空飛べたりあとは画面共有するとそれが壁に映ったりと機能満載!楽しすぎて会議に集中できないと思います。
すべてがFになる』って小説に出てくる車に乗って飛ぶ会議室の機械を思い出しました。使ってみたい。

t6sさんにはBNFの読み方を教えてもらいました。途中から頭のキャパシティ超えちゃってあきらめたんですが、最初の方に出てきたオブジェクト指向言語の核、S計算(シグマ計算(なぜか変換できない))が、5行くらいで記述できる単純な規則からなってるっていうのはすごく面白かったです。SMLの黄色い本はmaeda_さんにもすすめられたので見かけたら読んでみようと思います。

kuritarさんの発表では実際に業務に使われるウェブシステムをPharo(Smalltalkの処理系)とSeaside(Webフレームワーク)を使って作る話でした。実はここにくるまではSmalltalkってもうだれも使ってない言語なんだと思ってたんですが、実は最近も活発に開発されてるんですね。PharoはiPadとかでも動くっぽいので試してみたいな。Smalltalkが現場で使われてる事例が見れたのと、実際にそれをやるための環境を整えるまでの試行錯誤が聞けたので、今度自分でやるときに思い出そうと思います。

tomoodaさんの発表ではなんとHaskellの式がsqueakHaskell itされてました。

'take 2 [1..]' asHaskellExpression

とかやると、裏でghciで式が評価されて、結果がsqueakに戻ってくるってのが基本です。Haskellなので当然、遅延評価されるため、無限リストを扱うコードなんかもsqueakから扱えるようになります。すごい!
Haskell it欲しいなー

goonshさんはsqueakMIDIを正しくきれいに鳴らすためのチューニングの話でした。MIDI全然詳しくないんですが、squeakにもとから入ってるMIDIプレイヤーはMIDI譜の付加情報のかなりの部分を無視してしまうらしく、実際に同じ楽譜をMacのQuickTimesqueakのプレイヤーで聞き比べてみると、squeakでは素人でもわかるくらい平坦な電子音になってました。goonshさんはこれを作り直して最終的には僕の耳ではQuickTimeで聞いたのと区別がつかないレベルまで作り込んでいました。DTM面白そう!

で、僕の番です。
スライドこれです。
https://docs.google.com/presentation/d/1SY3-MMWbj5JXLRDh0ArmMeNn47QodcMCZQRCypZaEy8/edit
LittleSmallscriptっていうSmalltalkの文法で書いたコードをJavaScriptにコンパイルするヤツをちゃちゃっと作った話をさせてもらいました。
CoffeeScriptのSmalltalk版的な立ち位置で、人が読めるJSを吐くっていうのが売りです。
コンパイルされたJSをそのままJS案件の仕事で使いたかったので、Amberとは別のアプローチを取りました。
現在セルフホスティングというかセルフコンパイラを作っていて、もうすぐLittleSmallscriptで書いたJSでLittleSmallscriptがコンパイルできるようになります。クラス定義構文も追加されます。
デモでは、

これを使って自動ライブコーディングをしました。

| Dictionary win button label | 
Dictionary := Object subclass.
win := (Ti dot: #UI) createWindow: ( 
  Dictionary new 
  ; at:#backgroundColor put:#fff 
) 
. 
label := (Ti dot: #UI) createLabel: ( 
  Dictionary new 
  ; at:#text put:'Hello LittleSmallscript!' 
  ; at:#top  put:200 
) 
. 
win add: label. 
label hide. 
button := (Ti dot: #UI) createButton: #{ 
  #title: 'touch me' 
  #top:  250 
} 
. 
button addEvent: 'click' Listener: [ 
  label show  
]. 
win add: button. 
win open 

これを、 http://ympbyc.github.com/LittleSmallscript のTRY LITTLESMALLSCRIPTを使ってコンパイルすると、Titanium mobile用の簡単なiOSアプリが出来ます。是非試してみてください。

最後の発表はmaeda_さん、主催者の方でした。さっきもでてきたSmalltalk->JavaScriptコンパイラであるAmberの話でした。前はJTalkって呼ばれてたっぽい?
こちらはLittleSmallscriptなんかよりずっと真面目なSmalltalkで、なんとクラスブラウザがあります。用意されているクラスは少ないですが、むしろその方が初学者には優しいとのことでした。たしかに!
このAmber、パーサーに簡単に手が入れられるようで、独自の構文を追加したり、評価順序を変えたりといった事が可能なんだそうです。
Amberをライバルと呼べるほどLittleSmallscriptが進化するとは思えませんが、まあそれを目指して頑張ろうと思います。

懇親会もすごく楽しくてあっという間でした。大好きな古い言語の話がたくさんできたのがよかった。まさかForthの話ができるとは!

というわけで今日は、じゃなかった、昨日はお世話になりました。今度は東京の勉強会にも顔を出させていただこうと思います。またよろしくです。