Yuichiro MATSUI Ruby fun
Ruby on Rails tutorial movie in Japanese
どこでもプログラミングやってる生活(主に風呂で)
mobirubyでandroidアプリケーションを作る
ミイル(onAndroid)
mruby
mruby is ruby for less resources
リソースが少ない環境で実装できる
crubyと違って、パソコン以外の環境での実装を想定している
CRuby subset Not included File, Socket, Thread and more ext libraries
OS / CPU Independent 新しいCPUのたびにRubyのことについて考えないといけないが、ポンコツなCPUでも動く
Not required POSIX, only C99
Drop off unncecessary features(必要のない機能は取りさることが出来る)
parser / compilier
struct time math stdio regexp sprintfなどをオミットできる(色々オミットしまくって軽いrubyを実現できる)
table algorithm hash or list(遅いけどメモリ使用量を少なくできるようにアルゴリズムを選択できる)
NaN Boxing
mruby target
embedded
digital appliance
Game console
Vendor machine
Bundle with applications(アプリケーション組み込み エディタマクロとかを動的にプログラミングできる)
エディタを動的に拡張できたりできる
apacheのconfigurationをmrubyで書ける
今までcでmoduleを書いていたのをmrubyで置き換えることが出来るのだ
mruby internals
VM structure multi VM instance (virtual machineで動く)
Cのグローバル変数を使わない(別途ググれ)
generational incremental GC(Mark&Sweep)
development
2010春から開発
2012/4/22 publish to github
mrbgems
@bovi created extension package feature and at end of Nov 2012
Easy to install from Github
Supported cross build
Already provided 40+ gems
(CRubyに比べると機能は少ない)
1ライブラリにつき5人くらいの開発者
モジュールひとつにしても、気軽に開発が出来るため、敷居が低い
高性能ではないが、シンプルだから
CRubyは、沢山のひとが開発に関わっており、もう既に鉱脈が掘りつくされて開発に参加しづらい状態
What's MobiRuby
iOS app development kit on mruby
MIT licence
Have plan for Android version
can access native functions(Objective-Cでできることをかなりmobirubyで出来るようにした)
Already released MobiRuby based app
Search "mobiruby" in AppStore on iOS
新しいversionをサブミットしましたよっと
mobirubyの目指すところ
Rubyの秘めたる力を携帯電話へ
メタプロがRubyの闇の力
Objective-Cの代わりにRubyを使う
class Cocoa::MyAlertView < Cocoa::UIAlertView define C::Void, :alertView, Cocoa::Object, .... end
Objective-Cの機能をそのままrubyとして使える
今のバージョンではとりあえずruby Objective-Cの両方が分かっていないと分からない!!
次のバージョンではよりrubyっぽく書けるようにしたい
MobiRuby stack
mrubyをベースに
mruby-cfunc
C function bridge(C言語の関数をそのままrubyで使える)
str = "STRING" CFunc::call(CFunc::Void, "puts", str) STRING
mruby-cocoa
Cocoa bridge for mruby
メソッド インスタンス…Objective-Cでできることをmrubyで使えるようにする
Manipulate Cocoa objects
Create class/instance, inherit existing classes
Garbege collection
Bridge cocoa runtime
ObjC class <- Ruby class <- ObjC class
2つの言語を相互にやり取りが可能である
(mruby-cocoa)
memory management
Mark & sweep のコードも汚いしパフォーマンスもあやしいので改善の余地あり
mobiruby-common(最初から使えるライブラリ)
will be common utilities with Android ver
requireをサポートしていない
some POSIX based functions
mobiruby-ios
mruby-cocoaなどを繋ぐパッケージ
iOS specific utilities
Bootstrap
Xcode integration
Wrapped classes
Road map
finished buillding cocoa bridge
fix bugs improvement
packaging
documentation (Q1 2013までに…しかし順調に遅れている)
bluild wrapped APIs
Current Status
Already MobiRuby based app is in AppStore
Finally released alpha 1(アルファ版リリースへ)
Can call almost iOS native functions
Writing test codes
it's only for iOS and mruby hackers
現状ではappleでmrubyが出来ること出来ないことがある
Objective-Cとmruby両方分かる人間ならイケルようにしたい
Pros.
Ruby power(現在正規表現がサポートされていないが…)
Based on Matz implemented Ruby 敷居が低く、他のフィールドで培った知識をmrubyに反映させることが出来る
mrbgems (sqlliteのモジュール)
MIT license
Compact (~4000 lines) 完成したとしてもライブラリ抜きで(~5000 lines or ~6000)
MacRubyとの違いは何?
mobirubyは無料だけど、20000円払ったほうがよい
Cons.
Unstable(不安定)
Less classes / functions (自分でコードを書かなければならない)
Don't have debugging feature (Exceptionがどこで起こっているのか分からない)
Need to understand iOS and Cocoa
Action!!
Provide Ruby Power to the world (CEOに相談したら、「面白そうだからやってみたら?」)(もう一度CEOに相談したら、「全然問題ないよ」)
Create worldwide portfolio(ちゃんとしたプロダクトを作りたいし、rubyに貢献してみたい)
Take it at one or two foreign conferences(matzと話せるし、世界中のエンジニアに発表できるお)
そもそも競合他社に使われる可能性はあるけど…
技術的な質問は@mobirubyにメンション飛ばすか、github issueに書こう
http://twitter.com/mobiruby
http://github.com/mobiruby
荒削りな状態なので、ユーザーやエンジニアの意見を募集してれぅ