VS2008ShellのF#ではGUIデザイナを使うことができません。複雑なレイアウトをコードだけで書くのは面倒なので、他の言語と組み合わせることにしました。C#やVBは使えないため、それ以外の言語を色々と試した結果、Nemerleに行き着きました。ツールチップがカラフルなのが目を引きます。
早速、Alpha逆アセンブラ・インタプリタのWindows Forms部分をNemerleに置き換えてみました。
Nemerleにたどり着くまでの経過は以下の通りです。
いくつかの言語
VS2008Shellに統合できる言語がいくつか見付かりました。
- Nemerle
- Boo
- IronPython
- IronRuby
- IronScheme
予め断っておきますが、GUIデザイナを使うのが目的のため、言語自体の評価をしているわけではありません。
Nemerle
一見C#を改造した言語のようです。実際はマクロの塊のような言語らしいのですが。
Windows FormsのGUIデザインはすんなりできました。WPFはうまくいかないようです。
NemerleではPython風のインデントブロックも使えるようですが、GUIデザイナが生成するコードはその構文に対応していないようです。
IronPython
Windows FormsのGUIデザイナはすんなり使えました。しかしインテリセンスが動的型付けをうまく扱えないためか、頻繁に補完が効かなくなります。しかも動的型付けのため、メンバ名を間違えても実行するまで分かりません。
動的言語を活かすためのノウハウがあれば問題にならないのかもしれませんが、一朝一夕で身につくものではなさそうです。自分でVS統合をビルドしないといけないのも敷居が高いです。
IronRuby
Ruby In Steel For IronRubyを使用しました。スクリーンショットではGUIデザインをしていますが、私にはそのやり方が分かりませんでした。
IronScheme
GUIデザイナをサポートしていないようなので、試していません。
結果
実質的にNemerle対IronPythonとなりました。私にはIronPythonを使いこなせる気がしなかったため、消去法的にNemerleを選択することになりました。
GUIのコードビハインドとして少しだけNemerleでコードを書いてみました。「C#とF#を足して2で割った言語」という印象です。マクロに深入りすれば、また別の顔を見せるのでしょうけど。割と気軽に使えそうです。