Slide 1

Slide 1 text

RubyMotion 2.0 Shizuo Fujita 13೥5݄30೔໦༵೔

Slide 2

Slide 2 text

MacRuby 0.5 beta 13೥5݄30೔໦༵೔

Slide 3

Slide 3 text

ͱʹ͔͘Ϋϥογϡʂ 13೥5݄30೔໦༵೔

Slide 4

Slide 4 text

13೥5݄30೔໦༵೔

Slide 5

Slide 5 text

ͻͨ͢Βόάใࠂ 13೥5݄30೔໦༵೔

Slide 6

Slide 6 text

macruby committer access? 13೥5݄30೔໦༵೔

Slide 7

Slide 7 text

ຊ౰ʹܖ໿ॻΛॻ͍ͨ 13೥5݄30೔໦༵೔

Slide 8

Slide 8 text

• MacRuby committer (2010೥8݄~) • Hipbyte (2012೥9݄~) Twitter : @watson1978 Mail : watson1978@gmail.com 13೥5݄30೔໦༵೔

Slide 9

Slide 9 text

13೥5݄30೔໦༵೔

Slide 10

Slide 10 text

RubyMotion 13೥5݄30೔໦༵೔

Slide 11

Slide 11 text

class Member attr_accessor :name def say(message) puts "My name is #{name}" puts message end end 13೥5݄30೔໦༵೔

Slide 12

Slide 12 text

@implementation Kaigi -(void)join:(NSString*)name { id klass = NSClassFromString(@"Member"); id member = [[klass alloc] init]; [member setName:name]; [member say:@"Hello, RubyMotion Kaigi!"]; } @end class Member attr_accessor :name def say(message) puts "My name is #{name}" puts message end end 13೥5݄30೔໦༵೔

Slide 13

Slide 13 text

@implementation Kaigi -(void)join:(NSString*)name { id klass = NSClassFromString(@"Member"); id member = [[klass alloc] init]; [member setName:name]; [member say:@"Hello, RubyMotion Kaigi!"]; } @end Kaigi.new.join("Shizuo") class Member attr_accessor :name def say(message) puts "My name is #{name}" puts message end end 13೥5݄30೔໦༵೔

Slide 14

Slide 14 text

13೥5݄30೔໦༵೔

Slide 15

Slide 15 text

13೥5݄30೔໦༵೔

Slide 16

Slide 16 text

• Ruby͔ΒObjective-CΛɺObjective-C͔ΒRubyΛ ௚઀ݺͼग़͢͜ͱͱ͕Ͱ͖Δ • RubyͱObjective-Cͷ΍ΓͱΓͰσʔλม׵ෆཁ • Ruby == Objective-C • ΫϥεɺϝιουɺΦϒδΣΫτ͢΂ͯ Objective-C • Objective-C runtime Λར༻͠RubyΛ࣮૷ 13೥5݄30೔໦༵೔

Slide 17

Slide 17 text

# [bc, asm].each { |x| File.unlink(x) } arch_objs << arch_obj /Library/RubyMotion/lib/motion/project/builder.rb : 119 comment out 13೥5݄30೔໦༵೔

Slide 18

Slide 18 text

# [bc, asm].each { |x| File.unlink(x) } arch_objs << arch_obj /Library/RubyMotion/lib/motion/project/builder.rb : 119 comment out LLVM தؒίʔυ ΞηϯϒϦ ./build/iPhoneXXX/objs/ ΦϒδΣΫτ 13೥5݄30೔໦༵೔

Slide 19

Slide 19 text

3VCZιʔε --7.தؒίʔυ ΞηϯϒϦϑΝΠϧ ΦϒδΣΫτϑΝΠϧ ࣮ߦϑΝΠϧ ϥΠϒϥϦ J04'SBNFXPSL ϕϯμʔTUBUJD ϥΠϒϥϦ ΞϓϦ 13೥5݄30೔໦༵೔

Slide 20

Slide 20 text

3VCZιʔε --7.தؒίʔυ ΞηϯϒϦϑΝΠϧ ΦϒδΣΫτϑΝΠϧ ࣮ߦϑΝΠϧ ϥΠϒϥϦ J04'SBNFXPSL ϕϯμʔTUBUJD ϥΠϒϥϦ ΞϓϦ ωΠςΟϒʹϑϧίϯύΠϧ 13೥5݄30೔໦༵೔

Slide 21

Slide 21 text

ΞϓϦέʔγϣϯ --7. ૊ࠐΈϥΠϒϥϦ 3VCZ7. "3$ϥΠΫͳ($ 'PVOEBUJPOγεςϜϥΠϒϥϦ J04 ($% Ϗϧυ γεςϜ 13೥5݄30೔໦༵೔

Slide 22

Slide 22 text

ΞϓϦέʔγϣϯ --7. ૊ࠐΈϥΠϒϥϦ 3VCZ7. "3$ϥΠΫͳ($ 'PVOEBUJPOγεςϜϥΠϒϥϦ 049 ($% 049༻ Ϗϧυ γεςϜ 13೥5݄30೔໦༵೔

Slide 23

Slide 23 text

RubyMotion 2.0 • OS X Support • Project Template • Command-Line Plugin • Common Build Directory • Weak Reference 13೥5݄30೔໦༵೔

Slide 24

Slide 24 text

OS X support (RubyMotion vs MacRuby) • ࣄલʹωΠςΟϒʹϑϧίϯύΠϧ • MacRuby ͸JITͰ࣮ߦ࣌ʹม׵ɺىಈʹ͕͔࣌ؒΔ • ελςΟοΫϥΠϒϥϦʔ͕࢖͑Δ • MacRuby ͸ίʔυमਖ਼ + OS X ͷ GC Λ༗ޮʹͯ͠ ίϯύΠϧඞཁ͕͋Δ • require ͱ evalɺඪ४ϥΠϒϥϦʔ͕࢖͑ͳ͍ ύϑΥʔϚϯε͕ 2ഒ͘Β͍ྑ͘ͳΔ 13೥5݄30೔໦༵೔

Slide 25

Slide 25 text

Project Template 13೥5݄30೔໦༵೔

Slide 26

Slide 26 text

Project Template • ϢʔβಠࣗͷςϯϓϨʔτ • ~/Library/RubyMotion/template/ ΁௥Ճ ௥Ճͨ͠ϑΝΠϧ 13೥5݄30೔໦༵೔

Slide 27

Slide 27 text

Project Template • motion create --template=ςϯϓϨʔτ໊ ΞϓϦ໊ ࢀߟɿ/Library/RubyMotion/lib/motion/project/template ௥Ճͨ͠ϑΝΠϧ 13೥5݄30೔໦༵೔

Slide 28

Slide 28 text

Command-Line Plugin • motion ίϚϯυͷશ͕ͯϓϥάΠϯԽ • account, activate, create,,,, 13೥5݄30೔໦༵೔

Slide 29

Slide 29 text

Command-Line Plugin • ϢʔβಠࣗͷίϚϯυ • ~/Library/RubyMotion/command/ ΁௥Ճ ௥Ճͨ͠ϑΝΠϧ 13೥5݄30೔໦༵೔

Slide 30

Slide 30 text

Command-Line Plugin ࢀߟɿ - /Library/RubyMotion/lib/motion/project/command - https://github.com/Watson1978/motion-doc ௥Ճͨ͠ίϚϯυ 13೥5݄30೔໦༵೔

Slide 31

Slide 31 text

Common Build Directory 13೥5݄30೔໦༵೔

Slide 32

Slide 32 text

Common Build Directory • rake clean ͢ΔͱશͯϏϧυ͠௚͠ • gem ϥΠϒϥϦ͸खΛՃ͑ͨΓ͠ͳ͍ͷͰɺҰ ౓ίϯύΠϧͨ͠Β࢖͍ճ͍ͨ͠ Ϗϧυͨ͠ϑΝΠϧ ֤ΞϓϦͰ࢖͍ճͤΔ΋ͷΛ ~/Library/RubyMotion/build ʹΩϟογϡ 13೥5݄30೔໦༵೔

Slide 33

Slide 33 text

Weak Reference • ஋Λอ࣋͢Δ or ผͷϝιουͰར༻͢ΔͨΊʹɺ Πϯελϯεม਺ʹΦϒδΣΫτΛ֨ೲ → ڧࢀর • RubyMotion 1.xͰ͸ɺ • Πϯελϯεม਺Λհͨ͠ऑࢀর͕Ͱ͖·ͤΜͰͨ͠ 13೥5݄30೔໦༵೔

Slide 34

Slide 34 text

Weak Reference class MyController def initialize(delegate) @delegate = delegate end def do_something # ... @delegate.did_something end end @delegateΛ࢖͍ऴΘͬͨޙɺ@delegateʹผͷΦϒδ ΣΫτ (nil౳) Λ֨ೲ͠ࢀরΛ੾Βͳ͍ͱɺ@delegate ͷࢀরݩΦϒδΣΫτ͕ղ์͞Εͳ͍ (॥؀ࢀর) 13೥5݄30೔໦༵೔

Slide 35

Slide 35 text

Weak Reference class MyController def initialize(delegate) @delegate = WeakRef.new(delegate) end def do_something # ... @delegate.did_something end end WeakRef.new WeakRef.new Λ࢖ͬͯऑࢀরͰ͖ΔΑ͏ͳͬͨ 13೥5݄30೔໦༵೔

Slide 36

Slide 36 text

Ruby४ڌ language core 94.21% 96.05% (with MacRuby, RubySpec) 13೥5݄30೔໦༵೔

Slide 37

Slide 37 text

http://rubymotion.jp/ ೔ຊޠʹ༁ͨ͠υΩϡϝϯτ Λੋඇ͝Ұಡ͍ͩ͘͞ʂ 13೥5݄30೔໦༵೔