ようちゃんのブログ

ようちゃんのブログはこちらです!

RubyKaigi: Inside RubyMotion for Android

FRENGLISH sorry

2001からRubist まだ20歳でした。

Perlが好きでした。
PerlでWebアプリを書いてました。
ある日デバッグをしてPerlへの愛がなくなりました。(すいません。Perlよく知らなくて何が起こったのかわかりませんでした。なんかminifyされたようなコードが…)

Pythonを試そうとしたけどIRCで誰かがRubyがいいよって教えてくれました。

Programming Ruby

Rubyが好きな言語になりました。
(パチパチ)

ありがとうMatz

RubyMotion iOS

Hello World in Ruby

not Bridge

Builtin Classes

  • Objct <-> NSObject
  • String <-> NSMuutableString
  • ...

Not an interpreter

  • evalはつかえない
  • ruby -> AST LLVM IR -> ? -> machine code

だんだん早口になってわからなくなった

RubyMotion で開発されたプロダクト

  • Frontback
  • A Dark Room
  • iOS8 Support
  • arm64 support comming soon
  • iphone6 maybe

RubyMotion Android

  • Smartphone Market Share
  • Tablet Market Share

どちらもandroidiOSを抜いている

Public beta Available yesterday

simple command line interface
  • Create a new project

% motion create ...

  • Rake Tasks

% rake -T

  • Run in Emulator
  • Create a release build

% rake release

などなど

Keep using your favorite editor
Eclipse使わなくていい

Demo

How does it work?

Runtime
  • Brand-new implementation of Ruby
  • Unified object model Java
    • JNIからRubyMotionを呼び出している
Object model

Builtin classes based in core java

Memory management

Android Garbage Collector

  • Generational
  • Concurrent
  • Per-thread allocation pool
Grobal reference object

@x = Object.new

Compiler
  • Static compilation to machine code for JNI
  • Creates DEX Instruction
  • Emits DWARF metadata
    • dwarfdump

このへんの話は理解できなかった

REPL

LLVM JITAndroidで動かない
dlsym()
シンボルとアドレスを取ってきてMacで実行みたいな感じ?(わからなかった)

Let's Recap
Share code across platforms