Entwicklung für OS X und iOS mit Ruby
-
Upload
boris-buegling -
Category
Technology
-
view
83 -
download
0
description
Transcript of Entwicklung für OS X und iOS mit Ruby
![Page 1: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/1.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/2.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/3.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/4.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/5.jpg)
Wie?
• MacRuby
• RubyMotion
Freitag, 26. Oktober 12
![Page 6: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/6.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/7.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/8.jpg)
Freitag, 26. Oktober 12
![Page 9: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/9.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/10.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/11.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/12.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/13.jpg)
Demo: Shell
Freitag, 26. Oktober 12
![Page 14: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/14.jpg)
BeispieliOS "Hello World" -> Twitter Client!
Freitag, 26. Oktober 12
![Page 15: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/15.jpg)
• 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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/16.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/17.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/18.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/19.jpg)
Demo
Freitag, 26. Oktober 12
![Page 20: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/20.jpg)
Testing• Bringt eigene Variante des BDD-Frameworks
Bacon mit
Freitag, 26. Oktober 12
![Page 21: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/21.jpg)
Demo: Testen mit RubyMotion
Freitag, 26. Oktober 12
![Page 22: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/22.jpg)
Beispiel 2OS X Twitter Client
Freitag, 26. Oktober 12
![Page 23: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/23.jpg)
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](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/24.jpg)
Demo
Freitag, 26. Oktober 12
![Page 25: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/25.jpg)
Fragen?
Freitag, 26. Oktober 12
![Page 26: Entwicklung für OS X und iOS mit Ruby](https://reader033.fdocuments.net/reader033/viewer/2022052906/558df0151a28ab1b7e8b472b/html5/thumbnails/26.jpg)
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