Rubeusのシンプルさに感動!
JRubyでswingをやっていて思うことは、どうしても記述がJavaっぽさが抜けず、少なからずモチベーションが下がることです。
せっかくRubyを使ってるのになんだか活かしきれていない歯がゆさを感じます。
で、調べてたらRubeusっていうライブラリがなんだかよさそうなので、メモしておきます。
Rubeusインストール
% jruby -S gem install rubeus
はじめてのRubeus
手始めにJButtonとJLabelを使ったサンプルを書いてみました。
ボタンを押したらラベルに文字を表示させてみます。
require 'rubygems' require 'rubeus' Rubeus::Swing.irb JFrame.new("Rubeus Sample") do |frame| frame.default_close_operation = JFrame::EXIT_ON_CLOSE frame.layout = GridLayout.new(2, 1) @label = JLabel.new JButton.new("Click Me") do |e| @label.text = "pushed button!!!" end frame.location_relative_to = nil frame.pack frame.visible = true end
ポイントは、
- ブロックで階層構造的に書ける
- レイアウトは明示的にadd必要なし
- 長ったらしいaddActionListenerメソッドなくダイレクトにブロックが書ける
かなり思い切ったDSL仕様です。
まとめ
個人的には、この Rubeus かなりイケてると思っています。
JFrameとJButtonとJLabelを同じ層でベタ書きで書いていたあの気持ち悪さから開放されたのが嬉しいです。
ほかにどんな使い方ができるのか、今後調べてみたいと思います。