読者です 読者をやめる 読者になる 読者になる

by shigemk2

当面は技術的なことしか書かない

MobiRuby #devsumiA

勉強会

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は、沢山のひとが開発に関わっており、もう既に鉱脈が掘りつくされて開発に参加しづらい状態

iPhoneandroidを開発するためのmruby=mobiruby
matzとのやりとりから本格的に開発を開始

UI Imageを利用したiPhoneアプリ
Ruby + iOS = super awesome!!

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を使う

Hello world

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

荒削りな状態なので、ユーザーやエンジニアの意見を募集してれぅ