Slide 1

Slide 1 text

RubyMotionʹ͍ͭͯ 2013-06-25 גࣜձࣾϛΫγΟ @ainame

Slide 2

Slide 2 text

RubyMotion

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

RubyMotionͱ͸ RubyMotion is a revolutionary toolchain for iOS. It lets you quickly develop and test native iOS applications for iPhone or iPad, all using the awesome Ruby language you know and love.

Slide 5

Slide 5 text

Warning

Slide 6

Slide 6 text

ຊൃදΛߦ͏@ainame͸iOS։ൃΛ ຊ֨తʹۀ຿Ͱߦ͏͜ͱແ͘ ࠓ೥ͷ3݄ࠒ͔ΒRubyMotionΛܦ༝ͯ͠ iOS։ൃ஌ࣝΛಘͨͷΈͷएഐऀͰ͢ɻ ຊൃද͸Objective-C΍Titanium mobile΍PhoneGapΛ ᩫΊΔҙਤ͸શ͍͘͟͝·ͤΜɻ ෆద੾ͳൃݴ͕ग़ͯ͠·͏͜ͱ΋ ͋Δ͔΋͠Ε·ͤΜ͕·͕ྃ͢͝ঝԼ͍͞ɻ

Slide 7

Slide 7 text

ࣗݾ঺հ @ainame / Satoshi Namai גࣜձࣾϛΫγΟ - ϓϩάϥϚ झຯRubyͰձࣾͰ͸PerlΛॻ͍͍ͯ·͢ ࠷ۙεϚϗΤϯδχΞͬΆ͕͞ग़͖ͯͨ emacsͷ֦ு motion-mode.el ࡞ͬͯ·͢

Slide 8

Slide 8 text

ࠓ೔ͷ࿩୊ RubyMotionͱ͸ ✔ ࣗݾ঺հ ✔ RubyMotion vs Titanium mobile/Phone Gap RubyMotion vs Objective-C RubyMotionʹΑΔiOS։ൃͷՄೳੑ ·ͱΊ

Slide 9

Slide 9 text

RubyMotion vs Titanium mobile/PhoneGap ͲͪΒ΋Objective-CҎ֎ͰiOSΞϓϦॻ͚Δ ͦ΋ͦ΋ͪΌΜͱ࢖͑Δͷʁ Titaniumͱ͔Phone Gapͱ͸Կ͕ҧ͏ͷʁ

Slide 10

Slide 10 text

RubyMotionͷ͕͜͜ҧ͏ Objective-CͷRuntime্ʹ࣮૷͞ΕͨRuby ϒϦοδͰͳ͍ ଎͍ Objective-Cͱ௚઀ϦϯΫͰ͖Δ ࣮ફRubyMotion(@naoya_ito) ΑΓ https://speakerdeck.com/naoya/shi-jian-rubymotion

Slide 11

Slide 11 text

No content

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

పఈൺֱ!! ࢓૊Έ ࢖༻ݴޠ ։ൃ؀ڥ औΓר͘ ؀ڥ Android ରԠ Ձ֨ RubyMotion Titanium Mobile Phone Gap ωΠςΟϒ ΞϓϦ Ruby shell + editor or RubyMine(IDE) rubygems cocoapods ☓ $199 ϋΠϒϦο υΞϓϦ ΄΅ JavaScript Titanium Studio (Eclipseϕʔε) Appcelerator Platform ʢ༗ঈʣ ̋ $0 ༗ঈ൛ ͋Γ Webϕʔε ϋΠϒϦο υΞϓϦ HTML5 + JavaScript shell + editor deploy→Xcode jQueryMobile ౳ͷ ϥΠϒϥϦ ̋ $0 ˎRubyMotionҎ֎͸ٸᬎௐ΂ͨͷͰෆਖ਼͔֬΋͠Ε·ͤΜ

Slide 17

Slide 17 text

ൺֱ·ͱΊ Pros ωΠςΟϒΞϓϦ CocoaPods࢖͑Δʂʂʂʂʂʂ CocoaTouchΛ஌ͬͯΕ͹ॻ͚Δ JSΑΓΦϒδΣΫτࢦ޲Ͱॻ͖΍͍͢ Cons Android͸࢖͑ͳ͍ ࠷ॳ͔Β༗ྉ

Slide 18

Slide 18 text

ࠓ೔ͷ࿩୊ RubyMotionͱ͸ ✔ ࣗݾ঺հ ✔ RubyMotion vs Titanium mobile/Phone Gap ✔ RubyMotion vs Objective-C RubyMotionʹΑΔiOS։ൃͷՄೳੑ ·ͱΊ

Slide 19

Slide 19 text

RubyMotion vs Objective-C Θ͔Γ΍͘͢͢ΔͨΊ vs Objective-Cͱݴ͍·ͨ͠ πʔϧνΣΠϯͱݴޠͷൺֱ͸ਖ਼͘͠ͳ͍ XcodeʴObjective-CΛ༻͍ͨඪ४తͳ։ൃͱͷൺֱ ൺֱ߲໨ 1. ࢖༻͢ΔݴޠɿRuby vs Objective-C 2. ։ൃ؀ڥ ɿShell + Editor vs Xcode 3. ҆৺ײɹɹɹɿϥΠϒϥϦ΍αϙʔτͳͲ

Slide 20

Slide 20 text

Ruby vs Objective-Cͦͷ̍ Objective-CͰग़དྷΔ͜ͱ͸RubyͰ΄΅ग़དྷΔ Rubyͷඪ४Ϋϥε͸NSObjectΛϕʔεʹ࡞ΒΕͯΔ ऑࢀরɺϙΠϯλɺGCD΋ઐ༻ΠϯλʔϑΣΠε͋Γ ϝϞϦ؅ཧ Objective-C: ARC, MRC RubyMotion: ARC෩ͷಠࣗ؅ཧ Πϯελϯεม਺ʹ୅ೖ͢ΔͱΧ΢ϯτ͞ΕΔ౳

Slide 21

Slide 21 text

Ruby vs Objective-Cͦͷ̎ ܕ෇͚ Objective-Cɿ੩తͳܕνΣοΫ͋Γ RubyɿϏϧυ࣌ͷνΣοΫ͸ͳ͍ ϝλϓϩάϥϛϯά Objective-CɿΠϯετϩϖΫγϣϯ, performSelector, method swizzling RubyɿΠϯετϩϖΫγϣϯ, send, define_method, instance_eval, alias_method, ΦʔϓϯΫϥε, ԋࢉࢠ(=ϝιου)Φʔόʔϩʔυ,...

Slide 22

Slide 22 text

Ruby vs Objective-Cͦͷ̏ จࣈྻૢ࡞ Objective-Cɿେมͦ͏ Rubyɿڧྗͳϝιου͕๛෋

Slide 23

Slide 23 text

Ruby vs Objective-Cͦͷ̐ Ϧςϥϧදه Objective-CɿਐԽͯ͠Δʂ Rubyɿγϯϓϧ

Slide 24

Slide 24 text

ݴޠൺֱ·ͱΊʢྑ͍ॴʣ Objective-C ੩తͳܕνΣοΫ ೔ʑਐԽͯ͠ྑ͘ͳͬͯΔ Ruby γϯϓϧͳϧʔϧͰϝϞϦ؅ཧͰ͖Δ CRuby༝དྷͷڧྗͳϝλϓϩɾ૊ΈࠐΈͷϝιου

Slide 25

Slide 25 text

Objective-Cͷ։ൃ؀ڥ Xcode ิ׬όονϦ InterfaceBuilder / StoryBoard breakpoint / LLDB ׬੒౓ߴ͍ͱΑ͘ฉ͖·͢ ʢ͋·Γ࢖ͬͯͳ͍Ͱ͢...ʣ

Slide 26

Slide 26 text

RubyMotionͷ։ൃ؀ڥ ࣗ༝ʹΤσΟλબ୒ emacsͳΒmotion-mode.elͰิ׬ͱ͔͍Ζ͍Ζग़དྷΔ RubyMineʢIDEʣͰϒϨʔΫϙΠϯτଧͯΔ γΣϧ rakeʢRuby൛makeʣͰϏϧυ Interactive DebuggerʢRubyMotionͷREPLʣ guardʢϑΝΠϧมߋݕ஌gemʣͰࣗಈςετ ib ͱ͍͏gemΛ࢖͏ͱInterfaceBuilder΋࢖͑Δʂ

Slide 27

Slide 27 text

҆৺ײ Objective-C ຊՈͷ։ൃ؀ڥ CocoaPodsͰίʔυ࠶ར༻ ࠔͬͨͱ͖ʹ৘ใଟ͍ RubyMotion ຊՈͰ͸ͳ͍΋ͷͷiOSͷΞοϓσʔτʹ͸ଈ೔ରԠ CocoaPods΋ʢRubyMotionઐ༻ͷʣRubygems΋࢖͑Δ ϝΠϯ։ൃऀʹ೔ຊਓʢ@watson1978͞Μʣ

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

←WWDC։࠵தͷ 2013-06-12

Slide 30

Slide 30 text

҆৺ײʹ͍ͭͯͷॴײ Objective-Cͷ΄͏͕ѹ౗తͳ҆৺ײ͋Δͱࢥ͏ RubyMotionΛ࢖͓͏ͱͨ࣌͠͸ͦΕͳΓʹࣗ෼͔Β৘ใ ΛूΊΔ౒ྗΛ͠ͳ͍ͱ͍͚ͳ͍ ͨͩɺجຊతʹࠔͬͨΒObjective-CͷίʔυΛϕλҠ২ Ͱ͖ΔͷͰͦΜͳʹࠔΒͳ͍ ຊ౰ʹࠔͬͨΒαϙʔτ͔@watson1978͞Μʹ ࣭໰ͯ͠ΈΔ

Slide 31

Slide 31 text

ࠓ೔ͷ࿩୊ RubyMotionͱ͸ ✔ ࣗݾ঺հ ✔ RubyMotion vs Titanium mobile/Phone Gap ✔ RubyMotion vs Objective-C ✔ RubyMotionʹΑΔiOS։ൃͷՄೳੑ ·ͱΊ

Slide 32

Slide 32 text

RubyMotionͷՄೳੑ̍ ඇৗʹ؆ܿͳίʔυΛॻ͘͜ͱ͕ग़དྷΔ ίʔυྔ͕ݮΕ͹ϝϯςφϯείετ΋ݮΔ ࠶ར༻ੑߴ·Δ UIΛDSLͰએݴతʹίʔυΛॻ͘ελΠϧʁ ͦͷͨΊʹύϑΥʔϚϯε͸एׯ٘ਜ਼ʁ

Slide 33

Slide 33 text

NSUserDefaults

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

No content

Slide 36

Slide 36 text

RubyMotionͷՄೳੑ̎ αʔόʔαΠυͱͷ૬ੑ͕ྑ͍ʁ Railsͱ͔Sinatraͱ͔ಉ͡ݴޠͰॻ͚Δ motion-resource gem͸ActiveRecordͱಉ͡Α͏ͳ I/FͰRESTfulAPIͱͷ௨৴͕ॻ͚Δ Railsଆ΋APIΛॻͨ͘ΊͷϥΠϒϥϦ͕੔͍ͬͯ ΔͷͰׂͱ؆୯ʹαʔόʔॻ͚Δ

Slide 37

Slide 37 text

Modelఆٛ ௨৴ॲཧ

Slide 38

Slide 38 text

ࠓ೔ͷ࿩୊ RubyMotionͱ͸ ✔ ࣗݾ঺հ ✔ RubyMotion vs Titanium mobile/Phone Gap ✔ RubyMotion vs Objective-C ✔ RubyMotionʹΑΔiOS։ൃͷՄೳੑ ✔ ·ͱΊ

Slide 39

Slide 39 text

·ͱΊ RubyMotion͸iOS։ൃʹ͓͚Δબ୒ࢶͷҰͭʂʂ ͍Ζ͍Ζ͋Δ͚ͲͦΕͧΕదࡐదॴʂ ίʔυ͕؆ܿʹॻ͚ΔͷͰϓϩτλΠϓ ࡞Γ΍͍͢ͷͰ͸ʂ ޷͖ͦ͜΋ͷͷ্खͳΕʂʂʂʂʂͰؤுΔ

Slide 40

Slide 40 text

ͦΜͳ͜ΜͳͰ

Slide 41

Slide 41 text

࡞ͬͨʂʂʂʂ Shiori Shiori is a bookmark manager for github. http://github.com/ainame/Shiori ࢖ͬͨgem BubbleWrap ProMotion NanoStoreInMotion (NanoStore from cocoapods)

Slide 42

Slide 42 text

σϞ

Slide 43

Slide 43 text

͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·͢

Slide 44

Slide 44 text

ࢀߟࢿྉ RubyMotion - Ruby for iOS and OS X http://www.rubymotion.com/ ࣮ફRubyMotion // Speaker Deck https://speakerdeck.com/naoya/shi-jian-rubymotion Titanium Mobile ʙຊ౰ʹ͋ͬͨ͜Θ͍࿩ʙ http://www.slideshare.net/haradaatsea4/titanium-mobile-16371136 PhoneGapͰֶͿϚϧνεΫϦʔϯରԠϋΠϒϦουΞϓϦ։ൃ - ୈ1ճ http://itpro.nikkeibp.co.jp/article/COLUMN/20121212/443628/ RubyMotion Metaprogramming | Clay Allsopp http://clayallsopp.com/posts/rubymotion-metaprogramming/