Slide 1

Slide 1 text

Entwicklung für OS X und iOS mit Ruby Boris Bügling (@NeoNacho) Macoun 2012 Freitag, 26. Oktober 12

Slide 2

Slide 2 text

Wozu? • Rapid Prototyping • Sharing von Backend Code • Glücklicher ohne Xcode • Lerneffekt • Spaß Freitag, 26. Oktober 12

Slide 3

Slide 3 text

Ruby • interpretiert, dynamisch typisiert • alles ist ein Objekt • blocks • Meta-Programmierung • gems Freitag, 26. Oktober 12

Slide 4

Slide 4 text

Ruby • 5.times { print "Hello world!" } • exit unless "restaurant".include? "aura" • ['toast', 'cheese', 'wine'].each { |food| print food.capitalize } Freitag, 26. Oktober 12

Slide 5

Slide 5 text

Wie? • MacRuby • RubyMotion Freitag, 26. Oktober 12

Slide 6

Slide 6 text

Historie • 2001: RubyCocoa • 2006: WWDC Session zu RubyCocoa • MacRuby: seit 2007 in Entwicklung • Entwickler Laurent Sansonetti (lrz) arbeitet Vollzeit bei Apple daran • 2012: RubyMotion ohne Apple Unterstützung Freitag, 26. Oktober 12

Slide 7

Slide 7 text

Technik • Keine Bridge • Neuimplementierung mit CoreFoundation • Nutzt die Objective-C Runtime und LLVM • Hohe Performance • Kompatibilität Freitag, 26. Oktober 12

Slide 8

Slide 8 text

Freitag, 26. Oktober 12

Slide 9

Slide 9 text

Entwicklung • Kein Xcode sondern Texteditor und Terminal • Rake • Interaktive Konsole (REPL) • App Store kompatibel Freitag, 26. Oktober 12

Slide 10

Slide 10 text

Features • Unterstützung für spezielle Gems • Testing • Tooling: IB, Storyboards, Crash Reports, Instruments Freitag, 26. Oktober 12

Slide 11

Slide 11 text

Rake • Ruby de-facto Build System • Rakefile ist in Ruby geschrieben • Deployment über Kommandozeile: rake simulator device_family=ipad • Ausführung von Tests: rake spec Freitag, 26. Oktober 12

Slide 12

Slide 12 text

Interaktive Shell • Zur Laufzeit beliebigen Code ausführen • -> Besseres Debugging • -> Kleinere Edits on-the-fly • Bisher nur im Simulator möglich Freitag, 26. Oktober 12

Slide 13

Slide 13 text

Demo: Shell Freitag, 26. Oktober 12

Slide 14

Slide 14 text

Beispiel iOS "Hello World" -> Twitter Client! Freitag, 26. Oktober 12

Slide 15

Slide 15 text

• Rakefile - ersetzt .xcodeproj • app - Code • resources - Resourcen • spec - Test Spec (BDD ist in RubyMotion integriert) Freitag, 26. Oktober 12

Slide 16

Slide 16 text

Zugriff auf Twitter • Ganz einfach dank Gems! • :( - leider nicht, Gems müssen an RubyMotion angepasst werden Freitag, 26. Oktober 12

Slide 17

Slide 17 text

Cocoa APIs • Werden 1:1 übernommen • Laut lrz sollen DSLs aus der Community kommen • Ruby Standardbibliotheken fehlen, daher gibt es z.B. bubble-wrap oder sugarcube • CocoaPods sind einfach integrierbar Freitag, 26. Oktober 12

Slide 18

Slide 18 text

Twitter ViewController • IB, Storyboards • Cocoa, ggf. mit Auto-Layout • sugarcube Freitag, 26. Oktober 12

Slide 19

Slide 19 text

Demo Freitag, 26. Oktober 12

Slide 20

Slide 20 text

Testing • Bringt eigene Variante des BDD-Frameworks Bacon mit Freitag, 26. Oktober 12

Slide 21

Slide 21 text

Demo: Testen mit RubyMotion Freitag, 26. Oktober 12

Slide 22

Slide 22 text

Beispiel 2 OS X Twitter Client Freitag, 26. Oktober 12

Slide 23

Slide 23 text

Unterschiede • Workflow hängt an Xcode • Besserer Support für Gems • Natürlich AppKit statt UIKit • Keine direkte Integration von Tests • Keine interaktive Shell Freitag, 26. Oktober 12

Slide 24

Slide 24 text

Demo Freitag, 26. Oktober 12

Slide 25

Slide 25 text

Fragen? Freitag, 26. Oktober 12

Slide 26

Slide 26 text

Literatur • Folien und Beispielcode: http://vu0.org/ruby • MacRuby: http://macruby.org • RubyMotion: http://rubymotion.com • Screencasts: http://pragmaticstudio.com/ screencasts/rubymotion und http:// motioncasts.tv Freitag, 26. Oktober 12