Professional Documents
Culture Documents
Hi! Im masuidrive.
Yuichiro MASUI (masuidrive, Ichi) Open source developer, Ruby fun FrogApps, Inc. ex-Appcelerati Pukiwiki, Ruby on Rails tutorial movie in Japanese, IKEA hacker Furo-grammer (Coding in hot tub)
Whats MobiRuby?
iOS app development environment on mruby Can access native functions Have plan for Android version
Demo Apps
MobiRuby Game
Vision
MobiRuby provides Ruby power to Mobile devices DSL is most important Ruby power
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
mruby
New implementation of Ruby for embedding Built by dad Matz Less memory and storage Not required POSIX, only C99 Simple spec, Not included File, Socket, Thread and ext libraries
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
mruby-cfunc
C function bridge for mruby Call C based function directly Based on libFFI Like DL library on CRuby
mruby-cfunc
str
=
"STRING" CFunc::call(CFunc::Void,
"puts",
str) STRING
mruby-cfunc
str
=
"STRING" ptr
=
CFunc::Pointer.malloc(7) result_ptr
=
CFunc::call(CFunc::Pointer,
"strcpy",
ptr,
str) ptr.to_s ->
STRING
mruby-cfunc
class
TestStruct
<
CFunc::Struct
define
CFunc::SInt8,
:x,
CFunc::SInt16,
:y end\ test
=
TestStruct.new test[:x]
=
10
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
mruby-cocoa
Cocoa bridge for mruby Use Cocoa functions transparently Based on mruby-cfunc and Cocoa runtime Manipulate Cocoa objects Create class/instance, inherit existing classes Garbage collection
Memory management
Objective-C - Reference count mruby - Mark & Sweep Swizzled Objective-C release method
Multi-threading
MobiRuby does not support threads Because mruby does not support threads I have not touched them yet Need to implement multi VM instead of thread
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
mobiruby-ios
iOS specific utilities Bootstrap Xcode integration Wrapped classes
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
mobiruby-common
Will be common utilities with Android ver. require method Some POSIX based functions
MobiRuby stack
Your code
mrubycfunc
mrubycocoa
mobirubycommon mruby
mobirubyios
iOS
Your code
class
Cocoa::MyAlertView
<
Cocoa::UIAlertView
define
C::Void,
:alertView,
Cocoa::Object,
:clickedButtonAtIndex,
C::Int
do
|me,
index|
if
index.to_i
==
1
app
=
Cocoa::UIApplication._sharedApplication
str
=
"http://mobiruby.org"
url
=
Cocoa::NSURL._URLWithString(str)
app._openURL
url
end
end end
Your code
alert
=
Cocoa::MyAlertView._alloc._initWithTitle
"Hello",
:message,
"I
am
MobiRuby",
:delegate,
nil,
:cancelButtonTitle,
"I
know!",
:otherButtonTitles,
"What's?",
nil alert._setDelegate
alert alert._show
Road map
Finished building Cocoa bridge Fix bugs, Improvement Packaging Documentation Build wrapped APIs
Road map
Finished building Cocoa bridge Fix bugs, Improvement Packaging Documentation Build wrapped APIs
Road map
Finished building Cocoa bridge Fix bugs, Improvement Packaging Documentation Build wrapped APIs
Version 1 Q1 2013
Current tasks
Fixed crashing bugs and memory leaks Test Test Test!!! Support `long` and `long long`, define Cocoa property and more... Circular reference mruby stability
Whats difference?
RubyMotion Rhodes Ruboto RubyCocoa Titanium Mobile
Whats difference?
RubyMotion
Diversity is Good
Rhodes Ruboto RubyCocoa Titanium Mobile
Pros.
Ruby power Based on Matz implemented Ruby MIT license Compact (~3000 lines) An unexplored field
Cons.
Buggy Less classes / functions Don't have debugging feature Need to understand iOS and Cocoa
FAQ
Can I use RubyGems? Can I use meta programming? e.g., define_method, eval Can I use exists Cocoa libraries? Can I define new method to exist Cocoa class? What version iOS does it support?
Yes, mruby supports almost all dynamic programming features. But MobiRuby doesnt support eval. mruby can remove compiler. (its for Apple)
Wanted contributions
Heres your big chance! Need understanding C/Objective-C and iOS development Owned OSX and iOS developer license
Thank you
Logo design: Maylis Agniel http://mobiruby.org http://fb.me/mobiruby http://twitter.com/mobiruby http://github.com/mobiruby