Your SlideShare is downloading. ×
0
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Hello Ruby
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

Hello Ruby

5,157

Published on

Published in: Technology
0 Comments
5 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
5,157
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
23
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 コンテンツはまだ用意できていません。 ごめんなさい(´;ω;`)

×