Aujourd’hui, on peut s’approcher de plus en plus des capacités des applications dites « natives » grâce à HTML5. Il y a 2 manières pour atteindre ce but. Utiliser les capacités intrinsèques d’HTML5 en faisant un site web moderne ou étendre ses capacités avec des frameworks comme PhoneGap. Mais ce n’est pas tout. Il y a ensuite de nombreux défis à relever : gestion du tactile, identité visuelle de chacune des plateformes, performances très différentes du desktop, etc. Nous verrons comme adresser certains de ces points via des exemples parfois issus du monde du jeu vidéo pour égayer cette présentation !
http://conf2013.web-5.org/speaker/david-rousset-les-defis-dune-application-mobile-multi-peripheriques-avec-html5/
Les défis d’une application mobile multi-périphériques avec HTML5
1. Les défis d’une application
mobile multi-périphériques
avec HTML5
David Rousset
Technical Evangelist
Microsoft France
Web-5 Conference 2013 - Béziers
@davrous
http://aka.ms/davrous
2. • Introduction 5’
• Créer une application mobile pure HTML5
35’
– Les spécifications disponibles
– Quelques défis retenus et quelques suggestions de
solutions
• Plus loin avec PhoneGap et Sencha Touch
5’
Agenda
Agenda
4. HTML, CSS & JS : une
seule équipe pour toutes les plateformes
en réutilisant
certaines parties sur plusieurs plateformes
pour accéder
entièrement à la plateforme
Pourquoi faire du HTML5 sur mobiles & tablettes ?
5. IDC - http://www.idc.com/getdoc.jsp?containerId=prUS23480612 (Madame IRMA Corp)
de périphériques mobiles équipés de
navigateurs modernes en 2013
de développeurs Web en 2013
de développeurs d’applications mobile
s’intéressent à HTML5
des applications mobile utiliseront du HTML5 en
2015
Quelques chiffres intéressants
6. :
– Ergonomie et design
– Concept de SPA (Single Page Application)
– Gestion de l’offline possible
– Gestion de la performance à des endroits différents
:
– Profils développeurs d’apps JS encore rares
– Faire attention aux fuites mémoires, à l’optimisation du
code, aux patterns modernes, etc.
Apps vs Sites
9. Défi 1 : relever le challenge du tactile
• Outre les , nous avons un
problème technique :
– Touch Events créés par Apple mais non membre de la
spécification W3C (patents)
: pour la souris et pour le tactile
– Faire attention aux « gestures »
10. Un solution possible: Pointer Events
• Ecrivez votre pour le tactile, le
stylet et la souris
• Les sites écrits uniquement pour la souris fonctionne
automatiquement
• Patterns connus d’évènements DOM de la souris, avec
des extensions pour le touch
12. Défi 2 : gérer la connexion des mobiles
• Pas toujours de connexion : train, tunnel, campagne,
trou noir, etc.
• Vitesse de connexion inférieure et plus chère : éviter
de télécharger à chaque fois
13. • Cache basé sur un pour des scenarios
déconnectés
• Choisissez les : HTML, CSS, JS &
vos ressources
• Permet de rendre disponible vos
HTTP
via une MAJ du
manifeste
Solution : HTML5 application cache
16. Solution : IndexedDB
• Stockage, et recherche de données
• Stockage de paires « » à la NoSQL
• Indexation en utilisant un
• Pas de dépendances vis-à-vis de l’implémentation du
navigateur
18. Défi 3 : faire attention aux perfs et à la mémoire
• Mauvaises nouvelles :
(au moins !)
– RAM PC >= RAM Mobile * 4 minimum (sans parler de la RAM
Vidéo)
– Certains limitent les perfs de la WebView
• Bonnes nouvelles :
– CPU ARM sont
– GPU mobiles utilisés pour (CSS3, Canvas)
sur mobiles sont récents et donc
– Tout le monde ne limite pas les perfs ;-P
19. Idées de solutions pour les performances
à privilégier aux
animations JS (jQuery ou autre)
• Ne pas abuser du pattern de Promise
• Essayez d’utiliser les pour taper dans
les différentes cœurs voir des shaders pour taper dans
le GPU
• Faites vos pour :
– Niveler vers le bas
– Adapter dynamiquement les perfs à la plateforme
20. Attention aux perfs de certaines WebView
0
500
1000
1500
2000
2500
3000
3500
4000
IE10 (WP8) HTML5 APP (WP8) IPHONE 5 SAFARI IPHONE 5 HTML5 APP
SUNSPIDER 0.9.1 SCORE
LOWER IS BETTER
21. Idées de solutions pour la mémoire
• Savoir bien coder
– Réutilisation d’objets, identifier les « memory leaks »
– Virtualisation des données
• Attention aux contenus de type image
– SVG : le vectoriel c’est cool mais ça charge le DOM
– Faites attention aux résolutions des images
• Utiliser des profileurs
25. Résultats des performances de traitement
0 5000 10000 15000 20000
Blur with Monothread
Blur with Workers
Blur with GPU
SnapDragon (2 CPUs) - 1280x720
0
2000
4000
6000
8000
10000
12000
14000
16000
18000
Blur with Monothread Blur with Workers Blur with GPU
Snap Dragon ARM vs Intel Core i7 (HD4000)
Core i7 - HD4000 - 1280x720 SnapDragon (2 CPUs) - 1280x720
26. Défi 4 : les codes de Design de chaque plateforme
• Une application prévue pour Windows Phone
/Android/Firefox OS
• Le niveau actuel de support de CSS sur mobile vous
permet de refaire vous-même l’expérience des apps
natives mais en partant de zéro…
• … ou alors utilisez et leurs thèmes
adaptés !
27. Références vers les guides de design
• Windows 8 : http://design.windows.com
• Windows Phone 8 : dev.windowsphone.com/design
• iOS : iOS Human Interface Guidelines
• Android 4.x : http://developer.android.com/design
• Firefox OS : UI Guidelines for Firefox OS
ont leurs propres univers
T + 5 min Démos www.msn.com sur Tablet et WP8 dans les simu puis Larousse sur Win8 RT
T+8 min
T+11 min Démo : mousemove, puis CSS touch-action puis MSPointerMove puis HandJS
T+15min
T + 18 min : démo platformer sur WP8 (online/offline)
T+20 min
T+22 min : démo SnapyX sur IE10 classique et expliquer problèmes ergo pour le tactile
T+25 min
T+28 min
T+29 min
T+31minDémo 60 FPS sur WP8 et sur le PC
T+33min
T+34Démo filtres image sur Surface RT avec application caméra
T+36
T+37
T+38
T + 39Projet déjà setupé. Démo avec thème WP et sans thème (iOS)
T + 40 min
Démo du projet PhoneGap complet (accès caméra, contacts, etc.) sur le téléphoneDémo de SenchaTouch dans IE10: http://cdn.sencha.io/touch/sencha-touch-2.2.0/examples/kitchensink/index.html?platform=ie10#demo/overlays et dans Chrome : http://cdn.sencha.io/touch/sencha-touch-2.2.0/examples/kitchensink/index.html#demo/overlays