17
www.celedev.com celedev Programmation Responsive Une nouvelle façon de développer pour iOS Jean-Luc Jumpertz Octobre 2013 CocoaHeads Rennes #14

CocoaHeads Rennes #14: Programmation Responsive par Celedev

Embed Size (px)

DESCRIPTION

Xcode, c’est très puissant, mais devoir recompiler, charger et relancer son application à chaque fois qu’on fait une modification dans le code, ça devient vite fastidieux. Si les changements dans le code pouvaient s’appliquer en temps réel dans l’application, on gagnerait pas mal de temps qu’on pourrait consacrer à expérimenter des idées nouvelles et à améliorer nos apps. Un rêve ? Plus vraiment. Celedev, une startup rennaise, a développé un environnement de développement pour iOS entièrement conçu autour de cette idée de Programmation Responsive. Jean-Luc Jumpertz (créateur de Celedev) est venu nous présenter cet outil et nous faire une petite démo.

Citation preview

Page 1: CocoaHeads Rennes #14: Programmation Responsive par Celedev

www.celedev.com

cele

dev Programmation Responsive

Une nouvelle façon de développer pour iOS

Jean-Luc JumpertzOctobre 2013

CocoaHeads Rennes #14

Page 2: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Évolution des apps iOS

2008

Page 3: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Évolution des apps iOS• Des appareils mobiles de plus en plus

puissants, avec des écrans plus grands

• un OS de plus en plus riche et sophistiqué,

• un SDK de plus en plus vaste

Page 4: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Évolution des apps iOS• Des appareils mobiles de plus en plus

puissants, avec des écrans plus grands

• un OS de plus en plus riche et sophistiqué,

• un SDK de plus en plus vaste

UIKit DynamicsSprite Kit

Core Animation

Game Kit

Auto Layout

Text Kit

Page 5: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Évolution des apps iOS• Des appareils mobiles de plus en plus

puissants, avec des écrans plus grands

• un OS de plus en plus riche et sophistiqué,

• un SDK de plus en plus vaste

▶ une meilleure expérienceutilisateur (UX)

▶ des Apps plus complexes

▶ des développements plus longs

2013

2013

Page 6: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Outils de développement• Xcode est incontournable sur iOS / OS X

• un excellent et très puissant IDE

• mais son cycle de compilation / exécution reste traditionnel

1. Edit

2. Build

3. Load

4. Run

5. Setup

6. Test

7. D

ebug

Page 7: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

La vision de celedev

• La Programmation Responsive

• interactivité maximale entre le développeur et son application

• bien plus que du live coding

1. Edit

2. Test

3. Debug

Page 8: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

La vision de celedev

• La Programmation Responsive

• interactivité maximale entre le développeur et son application

• bien plus que du live coding

• Développer des apps iOS en mode responsive présente de multiples avantages

• rapidité de prototypage et de mise au point

• libère la créativité à travers l’expérimentation

• bien adaptée à la réalisation d’UX complexes

1. Edit

2. Test

3. Debug

Page 9: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Fonctionnalités• interactivité poussée entre l’IDE et l’application cible

• tous les éléments constituant l’application peuvent être mis à jour dynamiquement : code, mais aussi les ressources images, textes, …

• simplicité d’utilisation

• simplicité des APIs et performance de l’implémentation

• accès complet au SDK iOS

• connexion facile aux devices

• conçu pour s’intégrer très facilement avec le code C / Objective C et Xcode

▶ It just works.

Page 10: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Composantes du système

Application

Appareil cible

OS + SDK iOS

1. Env. d'exécution

2. Bindings iOS

SDK B

2. Bindings B

Code dynamique (Lua) Code compilé

Station de développement

OS X

3. Env. de développement 3.a. Éditeur de code Lua

3.c. Moniteur - Debugger

3.d. Gest. d’appareils

3.b. Gest. de ressources

Page 11: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Le choix de Lua• Un langage de script simple et léger

• créé en 1993 par une équipe de la PUC-Rio

• utilisé dans de nombreux domaines• jeux (WoW), web (Wikipedia), scripting (VLC), interface

utilisateur (Adobe Lightroom), embarqué (TI-Nspire), …

• avec de multiples qualités• une syntaxe simple, puissante et flexible

• une machine virtuelle performante et légère

• conçu pour être embarqué

• open sourcewww.lua.org

Page 12: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Lua : exemples de code-- defines a factorial functionfunction fact (n) if n == 0 then return 1 else return n * fact(n-1) endend

print (fact(10))

-- Tableslocal names = {"Peter", "Paul", "Mary"}local grades = {Mary = 10, Paul = 7, Peter = 8}

-- Embedded function and upvaluestable.sort(names, function (n1, n2) -- compare the grades return grades[n1] > grades[n2] end)

local list = nil

-- insert an element in the listfunction insert (v) list = {next = list, value = v}end

-- traverse the listlocal l = list while l do print(l.value) l = l.next end

Page 13: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Celedev + Lua: exemple de code

local UIView = require "UIKit.UIView"local NSText = require "UIKit.NSText"local UICollectionViewCell = objc.UICollectionViewCell

local Cell = class.createClass ("LabelCell", UICollectionViewCell)

local UIFont = objc.UIFontlocal UIColor = objc.UIColor

local function CGRectMake (x, y, width, height) return { x = x, y = y, width = width, height = height } end

function Cell:setAppearance (cellIndex, cellCount) -- ensure that params are not nil cellIndex, cellCount = cellIndex or 0, cellCount or 1 local contentView = self.contentView local contentSize = contentView:bounds().size -- Text label local label = self.label label.frame = CGRectMake(0, contentSize.height / 4, contentSize.width, contentSize.height / 2) label.font = UIFont:boldSystemFontOfSize (46.0) label.backgroundColor = UIColor.clearColor label.shadowColor = UIColor.darkGrayColor label.textColor = UIColor.whiteColorend

return cell

Page 14: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Intégration dans l’application- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{ // Create a Lua Context for this application _collectionLuaContext = [[CIMLuaContext alloc] initWithName:@"Collection Control"]; _collectionLuaContextMonitor = [[CIMLuaRemoteMonitor alloc] initWithLuaContext:_collectionLuaContext connectionTimeout:30]; // Create the application window self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; self.window.backgroundColor = [UIColor underPageBackgroundColor]; // Run the code for this Lua context [_collectionLuaContext loadLuaModuleNamed:@"CollectionControllerMain" withCompletionBlock:^(id result) { if ([result isKindOfClass:[UIViewController class]]) { self.window.rootViewController = result; } }]; [self.window makeKeyAndVisible]; return YES;}

Page 15: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Démo : live collections• Un exemple très simple, à

base de Collection Views

• écrite entièrement en Lua

• 3 classes

• view controller

• collection view cell

• collection view layout

• 2 gesture recognizers : pinch et rotation

Page 16: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

Démo : live ressources

• Une app iPhone classique avec une liste et une vue détaillée

• Le navigation controller est créé par le MainWindow.xib

• Les autres view controllers sont écrit en Lua

• L’appli intègre des ressources images, plist et Interface Builder xib

Page 17: CocoaHeads Rennes #14: Programmation Responsive par Celedev

cele

dev

En conclusion

• Disponible à la fin de l’année

• Recherche beta-testeurs !

• Pour rester informé

• www.celedev.com

• @celedev