Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
iOS、AndroidアプリをRubyで
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Watson
March 05, 2016
520
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
iOS、AndroidアプリをRubyで
RubyMotionの内部について、Hirosima Ruby Conferenceで発表した資料です。
Watson
March 05, 2016
More Decks by Watson
See All by Watson
クラウドネイティブ時代に 進化し続けるFluentd
watson
0
33
RMagick, migrate to ImageMagick 7 #RubyKaigi #RubyKaigi2019
watson
0
10k
Magick
watson
0
12k
Improve JSON Performance
watson
2
1.1k
fastlane 奮闘記
watson
0
98
How to optimize Ruby internal.
watson
3
3.1k
RubyMotion 2.0
watson
6
2.9k
Differences CRuby/MacRuby/RubyMotion
watson
5
5.8k
Featured
See All Featured
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
640
Rails Girls Zürich Keynote
gr2m
96
14k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Utilizing Notion as your number one productivity tool
mfonobong
4
570
Design in an AI World
tapps
1
300
Abbi's Birthday
coloredviolet
3
9.7k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
990
The SEO Collaboration Effect
kristinabergwall1
1
550
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2k
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
570
The Power of CSS Pseudo Elements
geoffreycrofte
82
6.5k
Between Models and Reality
mayunak
4
440
Transcript
iOSɺAndroidΞϓϦΛRubyͰ HipByte ౻ా ੩உ
ࣗݾհ • 2012͔ΒHipByteࣾͰRubyMotionͷ։ൃɾ αϙʔτ • ͨ·ʹɺRubyͷόάΛݟ͚ͭͨΓ
RubyBiz ಛผ
࣮
RubyMotion ͱʁ
ɺԯͷεϚʔτϑΥϯ͕ग़ՙ
RubyMotion ͱʁ http://www.rubymotion.com/download/ ແྉ
RubyMotion ͱʁ • ωΠςΟϒΞϓϦΛ Ruby Ͱ։ൃՄೳ • iOS, OS X,
tvOS, watchOS • Android • ίϯύΠϥɺϏϧυγεςϜɺϥϯλΠϜ͔Β ͳΔπʔϧνΣʔϯ
• ίϯύΠϥ • Rubyίʔυ͔ΒωΠςΟϒͳόΠφϦΛग़ྗ • ϏϧυγεςϜ • ίϯύΠϧ͞ΕͨόΠφϦɺϥϯλΠϜɺը૾ͳͲ ͷϦιʔεϑΝΠϧΛΞϓϦέʔγϣϯʹ·ͱΊΔ •
ϥϯλΠϜ • DispatcherɺϝϞϦཧɺΈࠐΈΫϥε
; Function Attrs: uwtable define internal i64 @"rb_scope__application:didFinishLaunchingWithOptions:__"(i64 %self, i8*
%sel, i64 %application, i64 %launchOptions) #11 { MainBlock: %argv1 = alloca i64, i32 2 call void @llvm.dbg.declare(metadata i64 %self, metadata !20, metadata !77), !dbg !81 %0 = alloca i64* %1 = alloca i64 store i64* %1, i64** %0 store i64 %application, i64* %1 %2 = alloca i8 store volatile i8 0, i8* %2 call void @llvm.dbg.declare(metadata i64 %application, metadata !21, metadata !77), ! dbg !81 %3 = alloca i64* %4 = alloca i64 store i64* %4, i64** %3 store i64 %launchOptions, i64* %4 %5 = alloca i8 store volatile i8 0, i8* %5 call void @llvm.dbg.declare(metadata i64 %launchOptions, metadata !22, metadata !77), ! dbg !81 LLVM-IR όΠφϦ ϥϯλΠϜ ը૾ ΞϓϦ ίϯύΠϥ ϏϧυγεςϜ
RubyMotion Runtime
"OESPJE4%, %BMWJL"35 3VCZ.PUJPO +/* +BWB J044%, 0CKFDUJWF$SVOUJNF 3VCZ.PUJPO 0CKFDUJWF$ iOS
Android
RubyMotion ϥϯλΠϜ %JTQBUDIFS ϝϞϦཧ ΈࠐΈΫϥε
Dispatcher
Dispatcher entry_point: ; preds = %MainBlock %6 = load i8**
@3 %7 = load i8** @4 %8 = load i32* @1 %9 = load i8** @5 %10 = load i32* @6 %11 = load i8** @2 %12 = call fastcc i32 @vm_get_const(i32 %8, i8* %9, i32 %10, i32 1, i8* %11), !dbg !97 %13 = call fastcc i32 @vm_dispatch(i32 %self, i32 %12, i8* %7, i8* null, i8 0, i32 0, i32* null), !dbg !97
Dispatcher • ίϯύΠϧ͞Εͨશͯͷϝιουݺͼग़͠ Dispatcher Λܦ༝ • Ruby શͯΦϒδΣΫτ • Objective-C
ΦϒδΣΫτҎ֎ʹ C ݴޠ༝དྷͷ int, double, char, long ,… ͳͲܕ͕͋Δ ϝιουݺͼग़͠ɺϦλʔϯ࣌ʹม
Dispatcher • มॲཧͷ༰ίϯύΠϧ࣌ʹຒΊࠐΉ
ϝϞϦཧ ɿ iOS • Objective-C • ίϯύΠϧ࣌ʹɺΦϒδΣΫτ͕ෆཁʹͳΔՕॴ ʹ release ॲཧ͕ຒΊࠐ·ΕΔ
• RubyMotion • ࣮ߦ࣌ʹɺෆཁͳΦϒδΣΫτΛ release ͍ͯ͠Δ
ϝϞϦཧ ɿ iOS • Objective-C • ίϯύΠϧ࣌ʹɺΦϒδΣΫτ͕ෆཁʹͳΔՕॴ ʹ release ͢Δॲཧ͕ຒΊࠐ·ΕΔ
• RubyMotion • ࣮ߦ࣌ʹɺෆཁͳΦϒδΣΫτΛ release ͍ͯ͠Δ ͍ͬͯΔ͜ͱಉ͡
ϝϞϦཧ ɿ Android • RubyMotion • ΦϒδΣΫτશͯ Java ΦϒδΣΫτ •
Java ͷ GC ͕దʹॲཧ͢Δ 3VCZ.PUJPOԿ͍ͯ͠ͳ͍
Ruby? • Ruby1.9 ϕʔε • No GVL
RubyMotion • Objective-C Java Ͱ։ൃ͢ΔͷͱḮ৭͕ͳ ͍ύϑΥʔϚϯεͷΞϓϦΛ։ൃՄೳ • ϓϥοτϑΥʔϜ API
Λࣗ༝ʹ༻Մೳ http://www.rubymotion.com/download/
• iOS ͱ Android ͰίʔυΛ͍ճͤΔʁ
Cross-platform libraries
motion-game • cocos2d-x Λར༻ͨ͠ɺΫϩεϓϥοτϑΥʔϜήʔϜ ΤϯδϯϥΠϒϥϦ
Flow • ΫϩεϓϥοτϑΥʔϜͳɺωοτϫʔΫͳͲར༻ස ͷߴ͍APIΛఏڙ
http://www.rubymotion.com/ download/