Download - Hello Ruby
![Page 1: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/1.jpg)
Hello, Ruby!
2012/06/23 NSEG feat. Kosenconf
@crimsonwoods
![Page 2: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/2.jpg)
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
![Page 3: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/3.jpg)
Kosenconf in Numazu / Photo:@earth2001y(Daichi, OBINATA)
![Page 4: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/4.jpg)
NSEG 勉強会
feat.
高専カンファレンス
![Page 5: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/5.jpg)
![Page 6: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/6.jpg)
![Page 7: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/7.jpg)
Which Ruby?
CRuby?
JRuby?
![Page 8: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/8.jpg)
Which Ruby?
mruby
![Page 9: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/9.jpg)
About mruby
Lightweight Ruby implementation
for
Embedded Platform
![Page 10: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/10.jpg)
About mruby
- Open Source (MIT license) - ISO Compliant - C Language
![Page 11: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/11.jpg)
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
![Page 12: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/12.jpg)
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
![Page 13: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/13.jpg)
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!"
![Page 14: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/14.jpg)
Getting started mruby.
3rd step: compile $ mrbc hello.rb –ohello.mrb $ mruby –b hello.mrb "Hello, mruby!"
![Page 15: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/15.jpg)
Getting started mruby.
もっと難しいコードは?
Rubyistじゃないので書けません。
![Page 16: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/16.jpg)
Getting started mruby.
制限いろいろ
-Bignumありません -Threadありません -Processありません -Fileありません -Signalありません -他にもいろいろありません
![Page 17: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/17.jpg)
mruby on Android
mruby +
Android
![Page 18: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/18.jpg)
mruby on Android
Androidからmrubyを使うには
1. Android用にbuildしたmrubyをAPKに含める
2. mrubyをlibraryとして
Android用にbuildし、JNIを通じてlinkする
![Page 19: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/19.jpg)
mruby on Android
mruby into APK
1. assetsにmrubyを配置 2. 実行時にassetsからmrubyを展開 3. Rubyスクリプトをコマンドライン
or 一時ファイルとして実行 4. 標準入出力をリダイレクトして結
果を取得
![Page 20: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/20.jpg)
mruby on Android
mruby into APK
![Page 21: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/21.jpg)
mruby on Android
mruby as JNI library
1. mrubyをlibraryとしてbuild 2. JNI用のラッパーコードを書く 3. ラッパーコードをbuildして
mrubyをlinkする 4. Javaから直接JNI経由でmrubyが
使える!
![Page 22: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/22.jpg)
mruby on Android
Features: mruby in APK
1. mrubyのビルドだけなのでお手軽 2. mrubyがcrashしてもJVMが死なない 3. mrubyとJVMが分離されているので、
プロセス単位のメモリ制限に 引っかかりにくい
4. mrubyをinteractiveに 実行できない
![Page 23: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/23.jpg)
mruby on Android
Features: mruby as JNI library
1. ビルドが大変 2. mrubyがcrashするとJVMも死ぬ 3. メモリ制限にひっかかりやすくなる
4. JNI書くのめんどくさい 5. mrubyをきめ細かく制御できる 6. RubyとJavaの連携が可能
![Page 24: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/24.jpg)
Java-Ruby bridge
Jamruby (Java mruby bridge)
作りました
![Page 25: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/25.jpg)
Java-Ruby bridge
Github https://github.com/crimsonwoods/jamruby https://github.com/jamruby/jamruby * 将来はjamrubyアカウントに統合する予定
ソースコード
![Page 26: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/26.jpg)
Java-Ruby bridge
できること
-RiteVM(mrubyのVM)の起動 -VM標準入出力のリダイレクト -RubyからJavaのメソッドコール -Javaの例外をRubyの例外に変換 -mruby APIのJavaラッパー提供
![Page 27: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/27.jpg)
Java-Ruby bridge
今後の予定
-Javaの機能呼び出し文法簡略化 -相互型変換のサポート拡張 -Androidの機能をサポート -VM内部のメソッドフックサポート -Android以外のプラットフォームサポート
![Page 28: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/28.jpg)
Java-Ruby bridge
課題
-JavaクラスのRubyへのExport -Javaのメソッドオーバーロード解決 -Rubyの例外ハンドリング -64bit整数型サポート
etc.
![Page 29: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/29.jpg)
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”コマンドが使用可能になっている前提
![Page 30: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/30.jpg)
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 ../
![Page 31: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/31.jpg)
Java-Ruby bridge
準備3: Jamrubyをbuildする
jamrubyからImport
NDK-Buildしたもの
![Page 32: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/32.jpg)
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
![Page 33: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/33.jpg)
Java-Ruby bridge
本番: JamrubyAppを実行する
![Page 34: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/34.jpg)
Java-Ruby bridge
本番: JAVAの関数を呼び出す
![Page 35: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/35.jpg)
Java-Ruby bridge
競合
-Ruboto (JRuby: Java + Ruby) -Rhodes (Ruby + HTML/CSS/JS) -MobiRuby (Ruby + Obj-C|Java)
![Page 36: Hello Ruby](https://reader034.vdocuments.us/reader034/viewer/2022051012/5463d83bb4af9f3f3f8b46d3/html5/thumbnails/36.jpg)
Fin.
About Jamruby
URL: http://jamruby.org/ Mail: jamruby(at)jamruby.org Twitter: @jamruby_org
コンテンツはまだ用意できていません。 ごめんなさい(´;ω;`)