Rubyコードを他人に使ってもらう
簡単なRubyコードを他人に使ってもらいたいことがしばしばあります。CSVの洗浄だったり、スクレイピングだったりするスクリプトです。そういうときに使えるTips
Rubyをインストールしてもらう
開発者の負担:低
利用者の負担:高
ワンクリックインストーラーがあるとはいえ、CSVの洗浄のためにRubyをインストールするのはちょっと。実行もコマンドプロンプトを立ち上げるのか、あるいはバッチファイルを作るのか、ですが、どちらも初心者には不安が残る方法です。ただ、状況によってはこれが一番いい選択肢のときもあります。かなりITリテラシーが高い人なら、コードを直接編集できますからね。
Rubysscript2exeを使う
https://github.com/ryanbooker/rubyscript2exe
開発者の負担:中
利用者の負担:中
Rubyインタープリタとコードをexeファイルにまとめてくれるものです。まあまあ使いやすいけど、マックとかで使えないのと、GUIがないのがネック。
jRuby & Swingを使う
開発者の負担:高
利用者の負担:低
クロスプラットフォームでつかえると言えばJava。RubyにはjRubyというすばらしいプロジェクトがありますから、それをつかえば、大した手間なくGUIアプリができます。「GO!」ボタンだけがあるGUIアプリでも、バッチのスクリプトよりは初心者にとってずっと安心できるでしょう。
ちなみに、最近はSwingの後継であるJavaFXが流行っていますが、私の環境だと動いてくれなかったので、残念ながらあきらめました。
jRuby & Swingで配布できるような実行ファイルを作るまで。
rawrのインストール
rawrというのは、jRubyをコンパイルするためのgemです。普通にインストールするとRuby 1.8系列用のものが入ってしまうので作者のサイトからインストールします。
gem install rawr --source http://gems.neurogami.com
アプリ開発
src/main.rb が編集すべきファイルです。以下の通り書いてください。
require "java" java_import javax.swing.JFrame java_import javax.swing.JButton java_import javax.swing.JOptionPane class HelloWorld < JFrame def initialize super "Example" setSize(150, 100) setDefaultCloseOperation(JFrame::EXIT_ON_CLOSE) setLocationRelativeTo(nil) button = JButton.new("Say Hello") add(button) button.addActionListener do |e| JOptionPane.showMessageDialog(nil, "Hello World") end setVisible(true) end end HelloWorld.new
コンパイル
以下のコマンドでコンパイルすれば完成です。
rake rawr:bundle:exe rake rawr:bundle:app