• このエントリーをはてなブックマークに追加

RubyでGUIアプリを作るならJRuby+JavaFX+Rawrで決まり!

Ruby大好きな私としては、一般配布するGUIアプリケーションとかもRubyで書きたい訳です。しかし、Windowsには標準でRubyは入っていないし、Macもバージョンが古い1.8.7が標準だしで、普段プログラミングなんかしない一般ユーザーさんでも簡単に起動できるアプリケーションを作るのがなかなか難しいという問題があります。

そういった問題から、クロスプラットフォームな言語・ライブラリ、例えばC++のQtなんかに一時期浮気したりもしたのですが、やっぱりRubyで書きたい。だってRubyが好きだから。

そして、色々調べまくった結果、はい、ついに「これだ!」と思えるRubyによるGUIアプリケーション開発環境を揃えることができました。それは…

  • JRuby
  • JavaFX
  • jrubyfx
  • Rawr

この組み合わせです…!それぞれ解説していきましょう。

JRuby … JavaでRuby!

JRubyは、簡単に言えばJVMで動くRubyです。つまり、Javaがインストールされている環境で普通に動きます。Windowsには標準でJavaが入っている (8月11日追記:そんなことはありませんでした><) ので、JRubyで作成したアプリケーションをjarファイルとしてパッケージングし配布すれば、ユーザーさんはそのjarファイルをダブルクリックするだけでアプリケーションが使えてしまうという訳です。

JRuby自体の完成度も高く、プリミティブ型へのキャストなどで若干罠はあるものの、概ねJavaの顔が覗かせることなく素のRubyと同じ様にプログラミング可能です。またなんといっても、Ruby on Railsアプリケーションのコードに一切変更を加えることなく動かせるという事を目標に開発されているくらい、互換性が高いです。時代はJRuby。

JavaFX … なんかいいかんじにGUI!

GUI。GUIをやりたいんです。swingとかawtとかSWTとか色々ありますが、私はJavaFXを推します。JavaFX、色々すごいのですが、なによりWebViewが使えるのです!専用ブラウザとかを作ることが多い私にとって、これはすごく大きい。ただし、FlashPlayerなどのプラグインに対応していないので、その点だけが残念です。

JRuby+JavaFXサンプル

JavaFXは、最新のJDKをインストールすれば標準で付いてきます。

jrubyfx … JavaFXをRubyishに!

jrubyfxは、JavaFXをJRubyからRubyishに書けるようにするためのラッパーライブラリです。なので、これを使用せずともJavaFXなJRubyアプリケーションを書くこと自体は可能ですが、jrubyfxを導入することによって、かなりRubyishにGUIアプリケーションを作成することができるようになります。

たったこれだけのコードで、上記スクリーンショットの様な簡易ブラウザが完成してしまいます。すごいよjrubyfx。

Rawr … 配布用にパッケージング!

Rawrを使えば、作成したjrubyアプリケーションを簡単にjarへとパッケージングすることができます。Rawrのすごいところはそれだけでなく、なんとWindowsやMac OS Xのアプリケーション形式、つまり.exeや.appといったファイルとしてラッピングもできるのです。一般のPCユーザーは「アプリケーション=.exe形式」という認識でしょうし、「.jar?なにそれ?」という方が殆どでしょう。.exe形式で配布できるのはとてもうれしいですね。しかも、.exeファイルをコンパイルしているわけではないので(実は設定ファイルを読み込んでjarを実行するexeファイルを配置してくれているだけ)、Mac OS Xで.exeパッケージを作成することができます。マカーだけどWindowsユーザーも使えるアプリケーションを作りたい、といった場合に便利ですね。まさに私がそのパターンです。

実際に作ってみよう

というわけで、JRuby+JavaFX+jrubyfx+Rawrが最強!というご紹介でした。それでは実際にサンプルのブラウザアプリケーションを作ってみましょう。

JRubyのインストール

まずJRubyが入ってない人はインストールします、Mac OS Xなら

brew install jruby

で一発です。簡単ですね。

Windowsの場合も簡単です。まずWindowsPCを友人に譲り、その後MacBook Airを購入し、homebrewを導入することで上記コマンドでインストールできるようになります。

JDKのインストール

オラクルのサイトからJDK7をダウンロードし、インストールしましょう。

jrubyfxのインストール

jrubyfxはrubygemですので、以下のコマンドでインストールできます。

jruby -S gem install jrubyfx

Rawrのインストール

同様に、Rawrもインストールしましょう。Rawrはソース元を指定する必要があります。

jruby -S gem install rawr --source http://gems.neurogami.com

Rawrプロジェクトの作成

これで準備は整いました。それでは、Rawrプロジェクトを作成していきましょう。まずはプロジェクト用にフォルダを作成します。ここではsimple_browserとします。その後、simple_browserフォルダに移動します。

mkdir simple_browser

cd ./simple_browser

rawrコマンドでrawrプロジェクトのセットアップを行います。これで、必要なファイル一式がrawrによって自動で配置されます。

jruby -S rawr install

依存gemの追加と設定

次に、依存gemの設定を行います。残念ながらRawrはGemfileなどを考慮してくれませんので、自分でgemのファイルを配置する必要があります。./lib/rubyフォルダを作成し、そちらにインストールしましょう。

mkdir ./lib/ruby

jruby -S gem install -i ./lib/ruby jrubyfx jrubyfx-fxmlloader --no-rdoc --no-ri

その後、パッケージング時に./lib/rubyの各ファイルを読みこんでくれるように、設定ファイルを編集します。おもむろにVimを起動し、./build_configuration.rbを編集しましょう。20〜30行目付近にあるコメントを参考に、c.source_dirsに”src”だけでなく”lib/ruby”も追加してみます。

これでプロジェクトの設定は完了です!

アプリケーションコードの作成

さて、いよいよアプリケーションのコードを作成します。Vimで./src/main.rbを作成し、以下のコードをペースト・保存してみましょう。

パッケージング

最後にパッケージングです。

jruby -S rake rawr:jar

を実行すると、ディレクトリ./package/jarと、その中にsimple_browser.jarが作成されます。javaコマンドで、jarファイルを実行してみましょう。

java -jar ./package/jar/simple_browser.jar

無事ブラウザ画面が表示されたら成功です!お疲れ様でした。

Windows用にパッケージング

さきほどはjarファイルとしてパッケージングしましたが、もちろんexe化も可能です。

jruby -S rake rawr:bundle:exe

を実行しましょう。ディレクトリ./package/windowsと、その中にsimple_browser.exeが作成されます。配布時は、.exeファイルだけでなく、windowsフォルダ内のファイルすべてを同梱する必要があります。適当にzipとかに固めて配布しましょう。

その他のコマンドやパッケージングコマンドは、jruby -S rake -Tコマンドで確認できます。

まとめ

いかがでしたか?みなさんもぜひJRubyを使ってみてください。

ちなみにJRuby上達の秘訣はMinecraftというゲームにあります。今度、詳細を記事にしたいと思います。

  • このエントリーをはてなブックマークに追加

2013/08/10 | JRuby

関連記事

新着記事

前の記事:

jruby
RubyでGUIアプリを作るならJRuby+JavaFX+Rawrで決まり!

Ruby大好きな私としては、一般配布するGUIアプリケーションとかもR...

no image
VimとEmacsと私

VimAdventCalendar 2012 235日目 VimAd...

vimshell-dynamicprompt-thumb
VimShellが動的プロンプトに対応しました(やばい)

VimAdventCalendar 2012 228日目 VimAd...

no image
Vimのチートシート生成サービス作りました。感じ感じ。

Vim Advent Calendar 2012 188日目の記事...

no image
さよなら海腹川背2 〜こんにちは海腹川背〜

...

→もっと見る

PAGE TOP ↑