jamrubyというものを作り始めました

せっかくmrubyを触ったので、mrubyの内部実装に使われている各種APIを直接Androidのアプリから触れる様にしたいなと思いました。
まぁ、やることと言えば頑張ってしこしこJNIのラッパーを書くだけなので、やればそのうちできるかなという感じですね。
ということで、作りはじめてみました。

名前はjamrubyという名前にしました。Javaのjaとmrubyをくっつけただけという非道いネーミングですが、細かいことは(ry

ソースコードはgithubに突っ込んであります。

https://github.com/crimsonwoods/jamruby

これはただのLibrary Projectなので、別でActivityを起こして、そこから参照するようにしてください。
JNIの部分はndk-buildするようになっていますが、buildにはmrubyのソースとビルド済みのバイナリが必要になります。
また、Android.mk中に、環境に合わせてmrubyの場所を記述する必要があります。
ビルドの手順なんかは、時間のあるときにまとめて公開できればなぁと思っています。


Activityの中ではこんな感じでrubyのcodeを呼んで実行できます。
ただし、出力は標準出力に吐き出されますので、そのままだと何が出力されているかはわかりません。
標準出力に吐き出されたものを見る場合は、↓の「Viewing stdout and stderr」にある設定を行なって下さい。

http://developer.android.com/guide/developing/tools/adb.html

try {
    Jamruby.getInstance().run("p \"Hello, mruby!\"");
} finally {
    Jamruby.getInstance().close();
}

このコードでは、mrubyで以下のことを行ったときと同様の動作を行います。

$ mruby -e 'p "Hello, mruby!"'