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

Entwicklung für OS X und iOS mit Ruby

Embed Size (px)

DESCRIPTION

German talk on OS X and iOS development with Ruby.

Citation preview

Page 1: Entwicklung für OS X und iOS mit Ruby

Entwicklung für OS X und iOS mit Ruby

Boris Bügling (@NeoNacho)

Macoun 2012

Freitag, 26. Oktober 12

Page 2: Entwicklung für OS X und iOS mit Ruby

Wozu?• Rapid Prototyping

• Sharing von Backend Code

• Glücklicher ohne Xcode

• Lerneffekt

• Spaß

Freitag, 26. Oktober 12

Page 3: Entwicklung für OS X und iOS mit Ruby

Ruby• interpretiert, dynamisch typisiert

• alles ist ein Objekt

• blocks

• Meta-Programmierung

• gems

Freitag, 26. Oktober 12

Page 4: Entwicklung für OS X und iOS mit Ruby

Ruby

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

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

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

Freitag, 26. Oktober 12

Page 5: Entwicklung für OS X und iOS mit Ruby

Wie?

• MacRuby

• RubyMotion

Freitag, 26. Oktober 12

Page 6: Entwicklung für OS X und iOS mit Ruby

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

Page 7: Entwicklung für OS X und iOS mit Ruby

Technik• Keine Bridge

• Neuimplementierung mit CoreFoundation

• Nutzt die Objective-C Runtime und LLVM

• Hohe Performance

• Kompatibilität

Freitag, 26. Oktober 12

Page 8: Entwicklung für OS X und iOS mit Ruby

Freitag, 26. Oktober 12

Page 9: Entwicklung für OS X und iOS mit Ruby

Entwicklung

• Kein Xcode sondern Texteditor und Terminal

• Rake

• Interaktive Konsole (REPL)

• App Store kompatibel

Freitag, 26. Oktober 12

Page 10: Entwicklung für OS X und iOS mit Ruby

Features

• Unterstützung für spezielle Gems

• Testing

• Tooling: IB, Storyboards, Crash Reports, Instruments

Freitag, 26. Oktober 12

Page 11: Entwicklung für OS X und iOS mit Ruby

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

Page 12: Entwicklung für OS X und iOS mit Ruby

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

Page 13: Entwicklung für OS X und iOS mit Ruby

Demo: Shell

Freitag, 26. Oktober 12

Page 14: Entwicklung für OS X und iOS mit Ruby

BeispieliOS "Hello World" -> Twitter Client!

Freitag, 26. Oktober 12

Page 15: Entwicklung für OS X und iOS mit Ruby

• Rakefile - ersetzt .xcodeproj

• app - Code

• resources - Resourcen

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

Freitag, 26. Oktober 12

Page 16: Entwicklung für OS X und iOS mit Ruby

Zugriff auf Twitter

• Ganz einfach dank Gems!

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

Freitag, 26. Oktober 12

Page 17: Entwicklung für OS X und iOS mit Ruby

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

Page 18: Entwicklung für OS X und iOS mit Ruby

Twitter ViewController

• IB, Storyboards

• Cocoa, ggf. mit Auto-Layout

• sugarcube

Freitag, 26. Oktober 12

Page 19: Entwicklung für OS X und iOS mit Ruby

Demo

Freitag, 26. Oktober 12

Page 20: Entwicklung für OS X und iOS mit Ruby

Testing• Bringt eigene Variante des BDD-Frameworks

Bacon mit

Freitag, 26. Oktober 12

Page 21: Entwicklung für OS X und iOS mit Ruby

Demo: Testen mit RubyMotion

Freitag, 26. Oktober 12

Page 22: Entwicklung für OS X und iOS mit Ruby

Beispiel 2OS X Twitter Client

Freitag, 26. Oktober 12

Page 23: Entwicklung für OS X und iOS mit Ruby

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

Page 24: Entwicklung für OS X und iOS mit Ruby

Demo

Freitag, 26. Oktober 12

Page 25: Entwicklung für OS X und iOS mit Ruby

Fragen?

Freitag, 26. Oktober 12

Page 26: Entwicklung für OS X und iOS mit Ruby

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