sdlsdk 改め AgDLR 0.5 がリリースされてたので触ってみた。
sdlsdk 改め「AgDLR 0.5」が新しくリリースされていたので簡単にメモ。
昨日、半分寝ながら書いていたせいで「AgDLR」を「AgSDK」と誤記していたので、修正しました。
含まれているもの
- Chiron.exe(DLR 用の開発ユーティリティ、テストサーバ兼 XAP パッケージャ)
- IronPython 2.6 pre-alpha (for Silverlight)
- IronRuby 0.3 (for Silverlight)
- サンプルコード
「repl」ってのが AgSDK 0.5 になって新しく追加されたヤツのデモです。
Managed JScript の DLL が消えてるのが気になるんですが、とうとうやる気無くしたんですかねぇ?
REPL って何?
「Read-Eval-Print Loop」の略で、DLR言語用のインタラクティブコンソールのことです。これ、今回からDLR自体に機能追加されたようで、Microsoft.Scripting.Silverlightの下にReplなんて名前のクラスがありました。
REPL で出来ること
実行中のプログラムをコンソールから触れる
いわゆる Firebug のコンソールみたいなことができます。
XAP をホストしている HTML の に「console=true」なんて値が設定されていると、以下のようなコンソールが表示されるようになります。このコンソールからは実行中のアプリの変数にアクセスできちゃったりします。
簡単にインタラクティブコンソールを作れる
サンプルコードをそのまま転載するだけになりますが、コード見たほうが判りやすいでしょう。
IronPythonでのREPLサンプルコード
import sys from Microsoft.Scripting.Silverlight import Repl from System.Windows.Browser import HtmlPage replDiv = Repl.Create() HtmlPage.Document.Body.AppendChild(replDiv) Repl.Current.Start() sys.stdout = Repl.Current.OutputBuffer
IronRubyでのREPLサンプルコード
include Microsoft::Scripting::Silverlight include System::Windows::Browser replDiv = Repl.create HtmlPage.document.body.append_child replDiv Repl.current.start class IO def write(str) Repl.current.output_buffer.write(str) end end
これだけでのコードで、以下のような感じのインタラクティブコンソールが動いちゃいます。XAML すら必要なしです。実質的に「Repl.Current.Start()」とやってるだけで、「実行コンテキスト作って…」みたいなのがまったく不要なのがおもろいですね。
AgDLR 0.5 を触った感想
REPL の威力は半端無い…。これがあると DLR 開発の効率が結構変わってきそう。
でも、サンプルを触ったりと一通り弄ってみましたが、どうも MIX '09 にあわせてリリースされた感が強いのも確かですね。動きが怪しいところがあるので、次バージョンが出るまではスルーしといても良さそうです。
IronPython の DLL だけ 2.0.1 のやつに差し替えて動くかなぁと思って試したものの、エラーが出て撃沈したのは内緒。
ネタ元
jimmy.thinking: Silverlight Dynamic Languages SDK 0.5
こっちには「REPL に Test Suite 組み合わせるとすげー便利じゃね?」(超意訳)みたいな事が書いてあります。