言語ゲーム

とあるエンジニアが嘘ばかり書く日記

Twitter: @propella

プログラムの動的生成と flash の未来

本当は自分でやりたくて仕方が無いのだけど、私を待っている仕事が列を成してこちらを見ているので誰かに託そうとここに書く。こないだ作った、いや、作ったというより皮を被せただけだけど、MML を鳴らす奴の仕組みについて調べているうちに興味深い記述にぶつかった。

新しい Loader と ByteArray クラスによって、SWF のバイトコードをメモリ上に生成できる。これはすごい事だ。flash 内に flashコンパイラを作れないか考えていた所。

how to make actionscript 3 play generated pcm wave data

どうもこのサウンド再生機能というのは、動的に SWF を生成して実現しているらしい。このハック自体は醜悪だが、サウンドに限らずどんな SWF でも生成してその場で再生出来るというのには驚いた。eval が無い事が flash の唯一の欠点だと思っていたんだけど、バイトコードが実行出来るなら eval なんか自分で作れるじゃないか?!

eval どころかどんな言語のバックエンドにもなるかも?例えば SmalltalkRubyflash 上でコンパイルしてその場で実行できたら凄い楽しそう!しかも flash の凄いグラフィックが使えるし、ブラウザでどこでも実行出来る。

現在わがビューポインツではイアンの奴 http://vpri.org/mailman/listinfo/fonc というプログラムを動的生成できる凄い奴を開発中なのだが、どうもこれ異常に面倒臭い。また、ダンの奴 http://research.sun.com/projects/lively/ という SVG で動く Morphic みたいな奴はコンパイルする訳では無いので萌えに欠ける。ので、flash でも同じ事が出来るならいっその事勝手に flash で開発を進めたいなあという誘惑に駆られて仕方が無い。私はアプリが作りたいだけなので自分でコンパイラを作る気は無いけど、だれかやらないかなあ。

追記

ブックマークのコメントでこういうのがありました。

foaran 既存のものでは葵がそれに近いイメージになるのだろうか

使用感はまさにそれです!葵 http://aoi-project.com/ の事はすっかり忘れていました。これで REPL が出来たら言う事無いです。この作者天才だなー。あとさらに欲を言うと、拡張モジュールも葵自身で記述できて、swf ネイティブのバイトコードを生成できれば無敵です。