RubyでGUIアプリケーションを作ろうと思っていろいろ試している。

というのも、ツイッターのクライアントとして今Tweenを使っているのだが、気に入らない点がいくつかあるので、自分用にクライアント作るかなぁと思ったわけだ。Tweenの何が気にくわないかはまぁ良いとして、実際に作るとなると、まずは技術的に乗り越えるべき課題がある。

そもそもWindowsで動くクライアントを作るのに、別にRubyじゃなくてもいいのだが、 ゲームを作るのにはまっていたころにRubyをやりこんだし、C#とかC++をはりきって覚えるほどやる気もないので、Rubyなわけである。

で、とりあえずRubyでGUIアプリケーションを作るにはいくつかフレームワークがあることは分かった。

そのうち、VisualRubyというフレームワークとwxRubyというフレームワークの2種類を試して見た。

まず、VisualRubyの方は、コードがシンプルで分かり やすい。Rubyっぽく書けるし、数ステップでそれっぽいウインドウも出る。ところが、作ったアプリケーションをPC-Talkerが読まなかった。VBで作ったアプリに近い感覚である。っていうかキーボードで全く操作できないので、この時点でアウト。

次にwxRubyを使ってみた。こちらはVisualRubyよりもいくらか余分にコードを書かなきゃならないように思えるが、基本的にはシンプルである。そして、作ったアプリケーションもちゃんとPC-Talkerで読む。どうやら、wxRubyはある程度OSネイティブのコンポーネントを使っているらしく、そのためPC-Talkerで読めるらしい。VisualRubyはクロスプラットフォームとしての性能はwxRubyよりも高いようだが、その分OSネイティブでないという点で、スクリーンリーダーに対しては不利ということのようだ。

ということでwxRubyでアプリケーションの開発を行うことに決定した。

が、もう一つ引っかかる点がある。Webの世界ではMVCモデルという言葉があるが、GUIだって同じ。要するに、ロジックとデザインは分離すべきなのである。しかし、どうもそれが難しそうなのだ。

wxRubyでは、XRCというXMLベースのリソースを使うことでデザインを分離できるということらしいのだが、実際、このXRCというものを手書きするのは困難に見える。少なくとも、ブログなんかで人が作ったコードをみてそう思った。で、普通GUIなんで、デザイナーみたいなツールを使って画面を作るようなのだが、それもスクリーンリーダーではきっと使えないだろう。wxFormBuilderというツールがあるようだが、使い方を見ているとVisual Studioとどっこいどっこいで、とてもスクリーンリーダーで使えるようには思えない。

ということは、ソースコードでコントロールを配置していくことになるわけだが、あんまり気が進まない。ロジックとデザインを分離した方が効率よくアプリケーションを作製ができるということが分かっている今、わざわざロジックとデザインを近藤させるようなまねをしていいのだろうかと・・・。いや別にいいんだけど、個人的に気に入らないだけである。

まぁでも方法がそれしかないのだからしかたがない。画面デザインを記述するソースコードと、ロジックを記述ソースコードを分けて書くという方法でごまかすしかないか・・・。しょうがない・・・。

そういえば「HTML+CSS+JavaScriptで簡単にGUIアプリが作れます」って触れ込みのフレームワークがあったのを思い出した。で、調べてみると、Rubyの場合は「Bowline」というフレームワークがあるようだ。でも残念、Windowsには対応してないみたいなことが書いてあった(英語だったので全部読んでないが)。HTMLで画面作れれば、新しいことを覚えるまでもなく、最低限の画面はちゃちゃっと書けて便利そうだなぁと思ったのに・・・。

そういうわけで、毎日会社行って、帰ってくるとプログラムなんて組む気にならんのだが、休日に時間作って、気長にクライアントを作っていくことにする。地味に協力してくれる人を募集しています(笑)。