Entwicklung für OS X und iOS mit Ruby

Preview:

DESCRIPTION

German talk on OS X and iOS development with Ruby.

Citation preview

Entwicklung für OS X und iOS mit Ruby

Boris Bügling (@NeoNacho)

Macoun 2012

Freitag, 26. Oktober 12

Wozu?• Rapid Prototyping

• Sharing von Backend Code

• Glücklicher ohne Xcode

• Lerneffekt

• Spaß

Freitag, 26. Oktober 12

Ruby• interpretiert, dynamisch typisiert

• alles ist ein Objekt

• blocks

• Meta-Programmierung

• gems

Freitag, 26. Oktober 12

Ruby

• 5.times { print "Hello world!" }

• exit unless "restaurant".include? "aura"

• ['toast', 'cheese', 'wine'].each { |food| print food.capitalize }

Freitag, 26. Oktober 12

Wie?

• MacRuby

• RubyMotion

Freitag, 26. Oktober 12

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

Technik• Keine Bridge

• Neuimplementierung mit CoreFoundation

• Nutzt die Objective-C Runtime und LLVM

• Hohe Performance

• Kompatibilität

Freitag, 26. Oktober 12

Freitag, 26. Oktober 12

Entwicklung

• Kein Xcode sondern Texteditor und Terminal

• Rake

• Interaktive Konsole (REPL)

• App Store kompatibel

Freitag, 26. Oktober 12

Features

• Unterstützung für spezielle Gems

• Testing

• Tooling: IB, Storyboards, Crash Reports, Instruments

Freitag, 26. Oktober 12

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

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

Demo: Shell

Freitag, 26. Oktober 12

BeispieliOS "Hello World" -> Twitter Client!

Freitag, 26. Oktober 12

• Rakefile - ersetzt .xcodeproj

• app - Code

• resources - Resourcen

• spec - Test Spec (BDD ist in RubyMotion integriert)

Freitag, 26. Oktober 12

Zugriff auf Twitter

• Ganz einfach dank Gems!

• :( - leider nicht, Gems müssen an RubyMotion angepasst werden

Freitag, 26. Oktober 12

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

Twitter ViewController

• IB, Storyboards

• Cocoa, ggf. mit Auto-Layout

• sugarcube

Freitag, 26. Oktober 12

Demo

Freitag, 26. Oktober 12

Testing• Bringt eigene Variante des BDD-Frameworks

Bacon mit

Freitag, 26. Oktober 12

Demo: Testen mit RubyMotion

Freitag, 26. Oktober 12

Beispiel 2OS X Twitter Client

Freitag, 26. Oktober 12

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

Demo

Freitag, 26. Oktober 12

Fragen?

Freitag, 26. Oktober 12

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

Recommended