Hello Ruby

  • 5,068 views
Uploaded on

 

More in: Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
5,068
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
22
Comments
0
Likes
5

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Hello, Ruby! 2012/06/23 NSEG feat. Kosenconf @crimsonwoods
  • 2. About MeName: 紅林 隆浩(@crimsonwoods)Age : 28 (Generation 83)From: Silent Hill / TokyoJob : Freelance Software EngineerHobby: Bicycle / Photo / Alcohol etc.Technology: Android / Linux / Windows MPU / FPGA C / C++ / C# / Java
  • 3. Kosenconf in Numazu / Photo:@earth2001y(Daichi, OBINATA)
  • 4. NSEG 勉強会 feat.高専カンファレンス
  • 5. Which Ruby? CRuby? JRuby?
  • 6. Which Ruby? mruby
  • 7. About mruby Lightweight Ruby implementation forEmbedded Platform
  • 8. About mruby - Open Source (MIT license) - ISO Compliant - C Language
  • 9. About mrubyNewshttp://itpro.nikkeibp.co.jp/article/NEWS/20120420/392541/http://el.jibun.atmarkit.co.jp/rails/2012/04/rubymruby-2004.htmlGithubhttps://github.com/mruby/mruby
  • 10. Getting started mruby.1st step: makerequired: make, gcc, bison$ git clone https://github.com/mruby/mruby.git$ cd mruby$ make$ export PATH=$PATH:$(pwd)/mruby/bin$ mruby --help
  • 11. 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!"
  • 12. Getting started mruby.3rd step: compile$ mrbc hello.rb –ohello.mrb$ mruby –b hello.mrb"Hello, mruby!"
  • 13. Getting started mruby.もっと難しいコードは?Rubyistじゃないので書けません。
  • 14. Getting started mruby.制限いろいろ -Bignumありません -Threadありません -Processありません -Fileありません -Signalありません -他にもいろいろありません
  • 15. mruby on Android mruby + Android
  • 16. mruby on AndroidAndroidからmrubyを使うには 1. Android用にbuildしたmruby をAPKに含める 2. mrubyをlibraryとして Android用にbuildし、JNIを 通じてlinkする
  • 17. mruby on Androidmruby into APK1. assetsにmrubyを配置2. 実行時にassetsからmrubyを展開3. Rubyスクリプトをコマンドライン or 一時ファイルとして実行4. 標準入出力をリダイレクトして結 果を取得
  • 18. mruby on Androidmruby into APK
  • 19. mruby on Androidmruby as JNI library1. mrubyをlibraryとしてbuild2. JNI用のラッパーコードを書く3. ラッパーコードをbuildして mrubyをlinkする4. Javaから直接JNI経由でmrubyが 使える!
  • 20. mruby on AndroidFeatures: mruby in APK1. mrubyのビルドだけなのでお手軽2. mrubyがcrashしてもJVMが死なない3. mrubyとJVMが分離されているので、 プロセス単位のメモリ制限に 引っかかりにくい4. mrubyをinteractiveに 実行できない
  • 21. mruby on AndroidFeatures: mruby as JNI library1. ビルドが大変2. mrubyがcrashするとJVMも死ぬ3. メモリ制限にひっかかりやすくなる4. JNI書くのめんどくさい5. mrubyをきめ細かく制御できる6. RubyとJavaの連携が可能
  • 22. Java-Ruby bridge作りました Jamruby (Java mruby bridge)
  • 23. Java-Ruby bridgeソースコードGithubhttps://github.com/crimsonwoods/jamrubyhttps://github.com/jamruby/jamruby* 将来はjamrubyアカウントに統合する予定
  • 24. Java-Ruby bridgeできること -RiteVM(mrubyのVM)の起動 -VM標準入出力のリダイレクト -RubyからJavaのメソッドコール -Javaの例外をRubyの例外に変換 -mruby APIのJavaラッパー提供
  • 25. Java-Ruby bridge今後の予定 -Javaの機能呼び出し文法簡略化 -相互型変換のサポート拡張 -Androidの機能をサポート -VM内部のメソッドフックサポート -Android以外のプラットフォーム サポート
  • 26. Java-Ruby bridge課題-JavaクラスのRubyへのExport-Javaのメソッドオーバーロード解決-Rubyの例外ハンドリング-64bit整数型サポート etc.
  • 27. 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”コマンドが使用可能になっている前提
  • 28. Java-Ruby bridge準備2: JamrubyをNDK-Buildする$ cd jni$ ndk-build$ cd ../$ ls libs/*/*.solibs/armeabi/libjamruby.solibs/armeabi-v7a/libjamruby.solibs/x86/libjamruxy.so$ cd ../
  • 29. Java-Ruby bridge準備3: Jamrubyをbuildする jamrubyからImport NDK-Buildしたもの
  • 30. 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
  • 31. Java-Ruby bridge本番: JamrubyAppを実行する
  • 32. Java-Ruby bridge本番: JAVAの関数を呼び出す
  • 33. Java-Ruby bridge競合-Ruboto (JRuby: Java + Ruby)-Rhodes (Ruby + HTML/CSS/JS)-MobiRuby (Ruby + Obj-C|Java)
  • 34. Fin.About Jamruby URL: http://jamruby.org/ Mail: jamruby(at)jamruby.org Twitter: @jamruby_org コンテンツはまだ用意できていません。 ごめんなさい(´;ω;`)