hello ruby

Post on 12-Nov-2014

5.609 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

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

コンテンツはまだ用意できていません。 ごめんなさい(´;ω;`)

top related