RubyとWindowsアプリ

RubyWindowsアプリを作ろうと思うと、VisualuRuby計画がある。
非常に気合の入ったもので、きちんとしたGUIアプリが作れる。
でも、ずいぶん長いことお世話になっているのに、いまだになんだか馴染まないのは、その設計思想が俺と違うからなんだろうか。


RubyにはWin32APIライブラリがあるから、WindowsAPIをコールすることはできる。
だからおそらくメッセージループなんかも書けるのではないだろうか。
ただ、それだけではWindowsアプリを書くことはできない。
現状のRubyでは、ウィンドウプロシージャを書くことができないからだ。


ウィンドウプロシージャを書こうと思うと、ウィンドウクラスにプロシージャのポインタを登録しないといけない。
Windowsからのコールバックで呼び出される関数だから、これを直接Rubyのメンバとすることはできない。
なにかしらの拡張ライブラリを作る必要があるだろう。
CreateWindowして、そのウィンドウのデータとしてRubyのオブジェクトのポインタを持たせて、ウィンドウプロシージャからオブジェクトのメンバwinProcを呼び出すようにでもすれば、それっぽくはなる。
が、RubyGCではウィンドウのデータまでは多分見てくれないから、その部分の不整合が心配だ。
安全なように拡張ライブラリ側で作りこむ必要がある。


コントロール類はメッセージさえ投げられればどーにでもなるが、すべて自前で操作するのは大変なので、これもやっぱりライブラリを作ることになる。
結局、VisualuRuby計画みたいな何かが必要となるわけだ。
自分にとって使いやすい、それっぽい何かを作ろうと思うのは、車輪の再発明だから無駄なのか、どーなのか。
それ以前にいまどきWinAPIでWindowsアプリを作ろうと考えるのがどーかしているのか。
まあ、時代の最後端を追いかける俺のスタイルは今でも変わらないってことだ。