Transcript
Page 1: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

TIRER PARTI DES PÉRIPHÉRI-QUES MOBILES DANS UNE

APPLICATION WEBQui a dit qu’il fallait coder plusieurs versions natives ?

Christophe Porteneuve @ Paris Web 2010

Page 2: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

LE WEB MOBILEEn passe de foutre sa claque au web desktop…

Page 3: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Les applis natives ?Pas besoin pour…

• L&F similaire au natif (CSS + JS, les gars ! Et iUI, Jo, Sencha Touch…)

• Géolocalisation (fournie par le navigateur)

• Sons (HTML5 <audio> pawa)

• Stockage persistent côté client (localStorage, Web Storage, Web SQL Database, Lawnchair, PersistJS…)

• Notifications « push » avec l’appli ouverte (Web Sockets)

Page 4: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

En revanche, besoin des applis natives pour…

• Contacts

• Envoi de SMS/MMS

• Enregistrement de son/vidéo

• Photos (prise, modification et accès bibliothèque)

• Accéléromètre / Magnétomètre / Vibreur…

• Notifications « push » avec l’appli fermée

• D’une manière générale, les capacités du périphérique

Page 5: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

4 Approches

• Appli 100% web

• Appli « 95% web »

• Appli native basée HTML+CSS+JS : « hybride »

• Appli native basée SDK plate-forme : 100% native

Page 6: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Applis 100% web

• HTML permet la structure qu’on veut

• CSS permet l’aspect qu’on veut

• JS permet le comportement qu’on veut

• On a la géolocalisation

• On a le son

• Pourquoi changer ?

Page 7: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

100% web : les outils

• HTML5, CSS3 (dont Transforms, Animations, Transitions), JS

• CSS Media Queries

• XUI, ZeptoJS

• Jo, Wink, Sencha Touch

• Web Storage, Web SQL Database, Lawnchair, PersistJS

• Web Sockets, Socket.IO

Page 8: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Un mot sur CSS Media Queries

• Une vraie démo concrète qu’elle est bien

• En natif sur Saf3+, FF3.5+, Chrome, Opera 7+, IE9+

• Utilisable sur Saf2+, FF, Chrome, Opera 7+, IE5+ avechttp://code.google.com/p/css3-mediaqueries-js

// http://www.w3.org/TR/css3-mediaqueries/

// La CSS entière :<link rel="stylesheet" type="text/css" href="…" media="screen and (min-device-width: 800px)" />

// Fragment dans une CSS :@media screen and (min-device-width: 800px) { …}

Page 9: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Web mobile : souvenez-vous…

• JS va moins vite (voire beaucoup moins vite !)

• La bande passante est plus petite

• Le cache est très sélectif (limites de taille, etc.)

Y’a pas de mouseover / mouseout / :hover

• Mais on a (en général) HTML5, CSS3, DOM2, SVG…

Page 10: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Frameworks JS pour le mobile

• On oublie Prototype, jQuery, Dojo, YUI, MooTools, ExtJS…

• XUI

• ZeptoJS

• iUI

• Jo, Wink, Sencha Touch

• Et en complément, Lawnchair, PersistJS, Socket.IO…

Page 11: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

100% web : pour/contre

• Avantages

• Que des choses qu’on aime déjà

• Développement dans ton navigateur !

• Pas d’App Stores, de validations, de déploiement…

• Inconvénients

• Pas d’accès à la majorité des capacités des périphériques

Page 12: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Applis « 95% web »

• Lorsque les technos web suffisent à l’aspect, mais que le comportement requiert 1+ fonctions du périphérique

• Cas les plus fréquents :

• Notifications « push »

• Vibreur

• Accéléromètre

Page 13: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

95% web : les outils

• Les mêmes que pour le 100% web…

• …plus les SDK natifs ou leur enrobage « unifié » (voir approche suivante)

Page 14: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

95% web : pour/contre

• Avantages

• Presque tous ceux du 100% web

• Accès à toutes les capacités des périphériques

• Inconvénients

• App Stores, soumission + acceptation, déploiement, etc.

• Il faut se farcir les différentes plates-formes ciblées

Page 15: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Applis natives baséesHTML+CSS+JS : « hybrides »

• Le périphérique est censé faire partie intégrante de l’expérience utilisateur qu’on recherche

• Mais côté UI, les technos web suffisent toujours à nos besoins.

• Besoins typiques :

• Manipulation d’images (prise de photo, accès albums…)

• Prise de son (chat audio, identification de musique…)

• Accès au carnet d’adresses

Page 16: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Hybrides : les outils

• Phonegap

• Titanium Mobile

• Unify

Page 17: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Phonegap

• API JavaScript unifiée, accessible direct dans tes pages

• Fournit un accès aux capacités locales du périphérique

• Camera / Contact / Device / Network / Notification / …

• iPhone, Android, webOS, Symbian, Blackberry, WP7 (bientôt)

• Fait par Nitobi. Open-source. Sur Github.

Page 18: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Titanium Mobile

• API JavaScript unifiée, mais pas dans les pages directement…

• Fournit un accès aux capacités locales du périphérique

• Camera / Contact / Device / Network / Notification / …

• iPhone, Android

• Fait par Appcelerator. Mix OSS/commercial.

Page 19: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Unify

• En gros, Phonegap + qooxdoo + SASS

• Maintenu par Deutsche Telekom.

• Open-source depuis JSConf.eu 2010. Sur Github.

• http://unify.github.com/unify/ (pas bien référencé encore…)

Page 20: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Un mot sur les SDK…

• Mais comme c’est trop super chiant !

• Le simulateur Android met 3 plombes à démarrer

• Le SDK Blackberry ne tourne que sur Windows (?!)

• Le SDK webOS nécessite une VM VirtualBox (bon…)

• Et puis simulateur ≠ périphérique !

Page 21: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

…mais patience !

• build.phonegap.com

• En ligne, gratuit

• Tu files ton www/, ils te sortent ton appli packagée pour chaque plate-forme prise en charge !

• Sortie prévue fin novembre 2010

• apparat.io

• Même principe, sortie théorique octobre 2010 (ahem…)

Page 22: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Hybrides : pour/contre

• Avantages

• Si on se débrouille bien, on code son appli une seule fois, et on la déploie sur l’ensemble des plates-formes prises en charge !

• Inconvénients

• Il faut quand même installer/configurer tous les SDK et outils associés…

Page 23: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Applis 100% natives

• On utilise le SDK natif de la plate-forme, son langage, son API

• On a accès à l’intégralité des API de la plate-forme, donc on peut proposer une expérience aussi riche et « native » qu’on le souhaite.

Page 24: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

100% natives : les outils

• Bin, les SDKs, quoi (tous gratuits) :

• iOS = Xcode (excellentes docs) + iPhone Developer Program pour pouvoir déployer sur périph./store ($99/an)

• Android = Eclipse + Android SDK

• webOS = SDK/PDK (basé Java + JS)

• Symbian = Aptana + SDK

• Blackberry = Eclipse + SDK (mais que Windows !)

Page 25: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

100% natives : pour/contre

• Avantages

• On peut utiliser la totale des fonctions du SDK et du périphérique

• On garantit (si on veut) un L&F natif

• Inconvénients

• On doit apprendre l’API (voire un langage), et parfois payer pour avoir le droit de déployer (Apple/iOS, $99/an).

Page 26: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

En résumé…

100%web

95%web

Hybride 100% natif

Dév. browsers browsers + EDI/outils

browsers + EDI/outils

EDI

Tests browsers browsers + sim./périph.

browsers + sim./périph.

sim./périph.

Multi-PF universel assez facile assez facile duplication d’effort

Distrib. pas besoin ! App Stores(mais pas souvent)

App Stores App Stores

Page 27: Tirer parti des périphériques mobiles dans une application web : qui a dit qu’il fallait coder plusieurs versions natives ?

Il est plus que temps !

• La consultation web sur les mobiles / tablettes / etc. est en train d’exploser celle sur desktop.

• Utiliser intelligemment les capacités du périphériques permet des passerelles sympa (réalité augmentée, media blogging, geo blogging… jusqu’où s’arrêteront-ils ?)

• Toutes les technos sont là, utilisables pour la grosse majorité du marché des smartphones ! Allez-y, bordel !