CODEFLOW
Live app development for iOS
C O C O A H E A D S PA R I S
11 juin 2015
Jean-Luc Jumpertz @JLJump
créateur de cele...
DXDeveloper Experience
?
CodeFlow
Env. de développement interactif d’apps iOS
CodeFlow
Mac App
Target
iOS App
CIM
Context
Monitor
CIM
Lua
Context
E...
CodeFlow
Env. de développement interactif d’apps iOS
CodeFlow
Mac App
Target
iOS App
CIM
Context
Monitor
CIM
Lua
Context
E...
CodeFlow
Env. de développement interactif d’apps iOS
CodeFlow
Mac App
Target
iOS App
CIM
Context
Monitor
CIM
Lua
Context
D...
Interface Lua Objective-C
• Accès transparent depuis Lua à toutes les classes Objective-C
• référence à une classe ObjC vi...
Interface Lua Objective-C
• Les structs C sont vues comme des pseudo-objets (comme en Swift :)

local rect1 = struct.CGRec...
Live Resources
• Un projet CodeFlow = modules Lua + ressources : images, textes, …
• Une ressource peut être éditée dans t...
Live Resources
• Demo
On a vu :
• La mise à jour instantanée de ressources images dans l'app, en utilisant un éditeur
exte...
En guise de conclusion
• CodeFlow, c'est aussi …
• La configuration automatique du projet Xcode de l'app
• Un debugger comp...
MERCI !
Des questions ?
Jean-Luc Jumpertz @JLJump
celedev @celedevwww.celedev.com
Participez à la beta ! 😃
Téléchargez Cod...
Prochain SlideShare
Chargement dans…5
×

Code flow - Cocoaheads paris

6 237 vues

Publié le

CodeFlow permet de développer de façon interactive sur iOS. Le live-coding proposé par l'outil ressemble à la magie de l’injection de code par DyCI qui a été présentée à la session d’avril, mais pousse le concept largement plus loin. Jean-Luc Jumpertz, son auteur, viendra de Rennes pour nous présenter cette solution.

Publié dans : Logiciels
0 commentaire
0 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

  • Soyez le premier à aimer ceci

Aucun téléchargement
Vues
Nombre de vues
6 237
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 102
Actions
Partages
0
Téléchargements
3
Commentaires
0
J’aime
0
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Code flow - Cocoaheads paris

  1. 1. CODEFLOW Live app development for iOS C O C O A H E A D S PA R I S 11 juin 2015 Jean-Luc Jumpertz @JLJump créateur de celedev @celedevwww.celedev.com
  2. 2. DXDeveloper Experience ?
  3. 3. CodeFlow Env. de développement interactif d’apps iOS CodeFlow Mac App Target iOS App CIM Context Monitor CIM Lua Context Exécution du code Lua Interface avec iOS Gestion du live-coding … Le code dynamique est écrit en Lua. Lua est un langage dynamique très simple, puissant, et flexible. Interface de CodeFlow pour contrôler le Lua Context
  4. 4. CodeFlow Env. de développement interactif d’apps iOS CodeFlow Mac App Target iOS App CIM Context Monitor CIM Lua Context Exécution du code Lua Interface avec iOS Gestion du live-coding … Dans l’App, il suffit d’ajouter 3 lignes de code : _luaContext = [[CIMLuaContext alloc] initWithName:@"Stocks"]; _luaContextMonitor = [[CIMLuaContextMonitor alloc] initWithLuaContext:_luaContext connectionTimeout:10]; [_luaContext loadLuaModuleNamed:@"StockViewController"];
  5. 5. CodeFlow Env. de développement interactif d’apps iOS CodeFlow Mac App Target iOS App CIM Context Monitor CIM Lua Context Démo 1 : live coding Ce qu’on a vu : • les modifications du code source se propagent immédiatement dans l’application • du simple ajustage de paramètres à l’ajout / suppression de méthodes dans une classe • live coding en multi-devices : test simultané dans différentes configurations • simplicité de connection d’un device à CodeFlow
  6. 6. Interface Lua Objective-C • Accès transparent depuis Lua à toutes les classes Objective-C • référence à une classe ObjC via la variable globale objc : 
 local UIColor = objc.UIColor • création d’une instance
 local label = objc.UILabel:newWithFrame(contentView.bounds) • appel de méthodes
 contentView:addSubview(label)
 isOk, modifDate, error = url:getResourceValue_forKey_error(NsURL.ContentModificationDateKey) • utilisation de propriété : label.backgroundColor = UIColor.clearColor • subclassing et extension des classes ObjC en Lua
 local LabelCell = class.createClass ("LabelCell", objc.UICollectionViewCell)
 local ViewController = class.extendClass (objc.ViewController) • Dans l’autre sens, le code natif appelle aussi de manière transparente votre code Lua • méthodes surchargées en Lua, action methods, méthodes de protocoles ObjC, • paramètres blocks des méthodes ObjC (à qui on passe des fonctions Lua)
 local words = {}
 local wordsCount = 0
 text:enumerateSubstringsInRange_options_usingBlock (fullRange, 
 NsString.EnumerationOptions.ByWords, 
 function(word) 
 wordsCount = wordsCount + 1
 words[wordsCount] = word
 end)
  7. 7. Interface Lua Objective-C • Les structs C sont vues comme des pseudo-objets (comme en Swift :)
 local rect1 = struct.CGRect(0, 0, 200, 400)
 local point2 = struct.CGPoint {x = 150.0, y = 80.0}
 deltaX = point2.x - rect1:getMidX() • Les autres entités C (enums, variables et fonctions globales, …) sont exposés à travers des modules Lua
 local NsString = require "Foundation.NSString"
 -- ...
 someString:enumerateSubstringsInRange_options_usingBlock
 (fullRange, NsString.EnumerationOptions.ByWords,...) • Les libraries de Bindings • Ce sont des packages qui exposent les APIs natives au code Lua • Bindings SDK exposent les APIs d'une version de SDK iOS (ou OS X) • Bindings Projet exposent les APIs de votre projet Xcode • créés en associant un projet Xcode au projet CodeFlow • configurables et mis à jour automatiquement en cas de changement dans les fichiers header du projet Xcode (live bindings !)
  8. 8. Live Resources • Un projet CodeFlow = modules Lua + ressources : images, textes, … • Une ressource peut être éditée dans toute application Mac (éditeur externe) • Lorsque l’éditeur externe enregistre les modifications, CodeFlow propage immédiatement celles-ci vers l’application cible. • Côté application cible, on utilise la fonction getResource pour créer une live resource
 au lieu de : imageView.image = [UIImage imageNamed:@"carrot"];
 on écrit : getResource("carrot", "public.image", imageView, "image") Code Flow Editeurs externes Target App Parce qu'il n'y a pas que le code dans la vie ...
  9. 9. Live Resources • Demo On a vu : • La mise à jour instantanée de ressources images dans l'app, en utilisant un éditeur externe, ou par glisser-déposer • L'utilisation de fichier nib dynamiques dans une application • Pas de limitation sur les types de ressources supportés • Une API dans CIMLua permet d'ajouter vos propres types si besoin Code Flow Editeurs externes Target App Parce qu'il n'y a pas que le code dans la vie ...
  10. 10. En guise de conclusion • CodeFlow, c'est aussi … • La configuration automatique du projet Xcode de l'app • Un debugger complet, et son interpréteur de commandes associé • La gestion de l'historique de vos modifications • ... • Status courant / Roadmap • CodeFlow est actuellement en beta publique • Prochaines étapes • Support du développement live d'apps OS X • Corrections des bugs restants • Lancement commercial !
  11. 11. MERCI ! Des questions ? Jean-Luc Jumpertz @JLJump celedev @celedevwww.celedev.com Participez à la beta ! 😃 Téléchargez CodeFlow : www.celedev.com/en/support/#downloads Vos retours seront les bienvenus !

×