hello ruby
DESCRIPTION
TRANSCRIPT
Hello, Ruby!
2012/06/23 NSEG feat. Kosenconf
@crimsonwoods
About Me
Name: 紅林 隆浩(@crimsonwoods)
Age : 28 (Generation 83)
From: Silent Hill / Tokyo
Job : Freelance Software Engineer
Hobby: Bicycle / Photo / Alcohol etc.
Technology:
Android / Linux / Windows
MPU / FPGA
C / C++ / C# / Java
Kosenconf in Numazu / Photo:@earth2001y(Daichi, OBINATA)
NSEG 勉強会
feat.
高専カンファレンス
Which Ruby?
CRuby?
JRuby?
Which Ruby?
mruby
About mruby
Lightweight Ruby implementation
for
Embedded Platform
About mruby
- Open Source (MIT license) - ISO Compliant - C Language
About mruby
News http://itpro.nikkeibp.co.jp/article/NEWS/20120420/392541/ http://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.html
Github https://github.com/mruby/mruby
Getting started mruby.
1st step: make
required: make, gcc, bison
$ git clone https://github.com/mruby/mruby.git $ cd mruby $ make $ export PATH=$PATH:$(pwd)/mruby/bin $ mruby --help
Getting started mruby.
2nd step: run $ mruby –e ‘p “Hello, mruby!”’ "Hello, mruby!" $ echo 'p "Hello, mruby!"' > hello.rb $ mruby –v hello.rb "Hello, mruby!"
Getting started mruby.
3rd step: compile $ mrbc hello.rb –ohello.mrb $ mruby –b hello.mrb "Hello, mruby!"
Getting started mruby.
もっと難しいコードは?
Rubyistじゃないので書けません。
Getting started mruby.
制限いろいろ
-Bignumありません -Threadありません -Processありません -Fileありません -Signalありません -他にもいろいろありません
mruby on Android
mruby +
Android
mruby on Android
Androidからmrubyを使うには
1. Android用にbuildしたmrubyをAPKに含める
2. mrubyをlibraryとして
Android用にbuildし、JNIを通じてlinkする
mruby on Android
mruby into APK
1. assetsにmrubyを配置 2. 実行時にassetsからmrubyを展開 3. Rubyスクリプトをコマンドライン
or 一時ファイルとして実行 4. 標準入出力をリダイレクトして結
果を取得
mruby on Android
mruby into APK
mruby on Android
mruby as JNI library
1. mrubyをlibraryとしてbuild 2. JNI用のラッパーコードを書く 3. ラッパーコードをbuildして
mrubyをlinkする 4. Javaから直接JNI経由でmrubyが
使える!
mruby on Android
Features: mruby in APK
1. mrubyのビルドだけなのでお手軽 2. mrubyがcrashしてもJVMが死なない 3. mrubyとJVMが分離されているので、
プロセス単位のメモリ制限に 引っかかりにくい
4. mrubyをinteractiveに 実行できない
mruby on Android
Features: mruby as JNI library
1. ビルドが大変 2. mrubyがcrashするとJVMも死ぬ 3. メモリ制限にひっかかりやすくなる
4. JNI書くのめんどくさい 5. mrubyをきめ細かく制御できる 6. RubyとJavaの連携が可能
Java-Ruby bridge
Jamruby (Java mruby bridge)
作りました
Java-Ruby bridge
Github https://github.com/crimsonwoods/jamruby https://github.com/jamruby/jamruby * 将来はjamrubyアカウントに統合する予定
ソースコード
Java-Ruby bridge
できること
-RiteVM(mrubyのVM)の起動 -VM標準入出力のリダイレクト -RubyからJavaのメソッドコール -Javaの例外をRubyの例外に変換 -mruby APIのJavaラッパー提供
Java-Ruby bridge
今後の予定
-Javaの機能呼び出し文法簡略化 -相互型変換のサポート拡張 -Androidの機能をサポート -VM内部のメソッドフックサポート -Android以外のプラットフォームサポート
Java-Ruby bridge
課題
-JavaクラスのRubyへのExport -Javaのメソッドオーバーロード解決 -Rubyの例外ハンドリング -64bit整数型サポート
etc.
Java-Ruby bridge
準備1: mrubyをNDK-Buildする
$ git clone https://github.com/mruby/mruby.git $ git clone https://github.com/jamruby/jamruby.git $ cd mruby $ git clone https://github.com/jamruby/mruby_ndk-build.git android $ make $ cd android/jni $ ndk-build $ cd ../../../jamruby
* 予めAndroid NDKを環境中に配置し、 ”ndk-build”コマンドが使用可能になっている前提
Java-Ruby bridge
準備2: JamrubyをNDK-Buildする
$ cd jni $ ndk-build $ cd ../ $ ls libs/*/*.so libs/armeabi/libjamruby.so libs/armeabi-v7a/libjamruby.so libs/x86/libjamruxy.so $ cd ../
Java-Ruby bridge
準備3: Jamrubyをbuildする
jamrubyからImport
NDK-Buildしたもの
Java-Ruby bridge
準備4: JamrubyAppを取得する
$ git clone https://github.com/jamruby/JamrubyApp.git
git cloneした後は、EclipseへのImportを行います。 EclipseでのAndroid Applicationのビルドには、 Android SDKとADT Pluginが必要になります。 <下記参照> http://developer.android.com/sdk/installing/index.html http://developer.android.com/sdk/installing/installing-adt.html
Java-Ruby bridge
本番: JamrubyAppを実行する
Java-Ruby bridge
本番: JAVAの関数を呼び出す
Java-Ruby bridge
競合
-Ruboto (JRuby: Java + Ruby) -Rhodes (Ruby + HTML/CSS/JS) -MobiRuby (Ruby + Obj-C|Java)
Fin.
About Jamruby
URL: http://jamruby.org/ Mail: jamruby(at)jamruby.org Twitter: @jamruby_org
コンテンツはまだ用意できていません。 ごめんなさい(´;ω;`)