OSXでSilverLight上のIronPythonを使って遊ぶ。
2007年05月13日(日) 18:17
SilverLightのインストール
OSX用のSilverlight1.1 Alphaをダウンロード&インストールする。
Silverlight1.1 Alpha SDKをここの右側にあるTop Downloadsから辿ってダウンロード。展開する。
Safariを終了する。
(追記)Intel macでないと動作しません(忘れてた)
pythonを使うための準備
OSXのApacheに.py / .jsxを認識させる
$ sudo vi /private/etc/httpd/mime.types #末尾に追加 text/python py text/jscript jsx
Apacheを再起動
$ sudo /usr/sbin/apachectl restart
ホームディレクトリのサイトディレクトリ内にslのように適当な名前のディレクトリを作成する
展開しておいたSDKの中にあるSilverlight 1.1 Alpha Samples.zipを展開し、中のDLRConsoleというディレクトリをslディレクトリにコピーする
Safariでhttp://localhost/~makoto/sl/DLRConsole/python/index.htmを開く。makotoは自分のユーザ名に置き換えてください
続いて、DLRConsole上のPythonを使ってアニメーションを作成しようと思ったのですが、.Net Framework3.0の純粋WPFに頭がやられてしまっていて、少し時間がかかりそうです(Ellipseを継承したクラスが作れないorz)。
とりあえずは、素敵なスクリーンキャストがあったのでみてみてください。

驚くことに、コンソールでは4つの言語、Ruby / Python / JScript / VB を同時に使っています。Pythonで作ったファンクションをJScriptから使ったりできちゃいます。
※DLRConsoleは英語キー配列で入力しなければなりません。また、コンソールは1行ごとにインタプリットされますが、PythonペインやXAMLペインは編集後、コントロール+エンターで内容が即時反映されます。
今、つまっているところ
例えば円(Ellipse)を作る場合に、位置指定の仕方がわからない。wpf.setPosition使わなきゃいけないのか?
それだとXAMLの記述と思考が一致しなくて困る(.Net Framework3.0+IronPythonだとこんなことはない)。
py> from wpf import Ellipse py> e = Ellipse() py> e.Width = 10 py> e.Height = 10 py> e.Canvas.Top = 10 System.MissingMemberException: couldn't find member Canvas at in , line 0
xamlを使えばできるけど、ランダムにたくさん作りたい場合に困る。というかLoadって遅そうなイメージが。。
py> xaml_ellipse = """ py| <Ellipse py| Width="10" Height="10" py| Canvas.Top="10" Canvas.Left="10" />""" py> x_e = wpf.XamlReader.Load(xaml_ellipse) py> canvas.Children.Add(x_e)