l'open web en tant que pierre angulaire du développement multi-objets

80
L'Open Web en tant que pierre angulaire du développement multi-objets @tbassetto

Upload: thomas-bassetto

Post on 24-May-2015

1.219 views

Category:

Technology


0 download

DESCRIPTION

Présentation faire à SudWeb 2012 décrivant l'utilisation faite de HTML

TRANSCRIPT

Page 1: L'Open Web en tant que pierre angulaire du développement multi-objets

L'Open Web en tant que pierre angulaire du

développement multi-objets@tbassetto

Page 2: L'Open Web en tant que pierre angulaire du développement multi-objets

Mon parcours

• Développeur Front-End chez

• Développeur JavaScript chez

• Paris Hackers, ParisJS, PhoneGap Paris

• Représentant français pour Mozilla WebFWD

Page 3: L'Open Web en tant que pierre angulaire du développement multi-objets

Joshfire

Page 4: L'Open Web en tant que pierre angulaire du développement multi-objets

Définitions

Page 5: L'Open Web en tant que pierre angulaire du développement multi-objets

L'Open Web en tant que pierre angulaire du

développement multi-objets

Page 6: L'Open Web en tant que pierre angulaire du développement multi-objets

L'Open Web en tant que pierre angulaire du

développement multi-objets

Page 7: L'Open Web en tant que pierre angulaire du développement multi-objets

Objets connectés ?

http://fuckyeahinternetfridge.tumblr.com

Page 8: L'Open Web en tant que pierre angulaire du développement multi-objets

Multi-objets connectés

On ne laisse personne derrière (ordinateurs de bureau, ordinateurs portables, téléphones,

tablettes,TVs, etc.)

Page 9: L'Open Web en tant que pierre angulaire du développement multi-objets

Multi-objets connectés

• Multi-touch

• GPS

• Accéléromètre

• Orientation

• Microphone

• Capture video & image

• Push

• Bluetooth / RFID

• Capteurs de proximité

• Capteurs de luminosité

• Gyroscope

Page 10: L'Open Web en tant que pierre angulaire du développement multi-objets

“Open Web”

• Nous réalisons peu de sites Web

• Principalement des applications ou objets basées sur HTML/CSS/JS (hybrides)

Page 11: L'Open Web en tant que pierre angulaire du développement multi-objets

Le choix de l’hybride

Page 12: L'Open Web en tant que pierre angulaire du développement multi-objets

Application hybride

© trigger.io

Page 13: L'Open Web en tant que pierre angulaire du développement multi-objets

Une fragmentation à plusieurs niveaux

famillemarqueperfsinput

language Java .NET Objective-C JS C++

...

Page 14: L'Open Web en tant que pierre angulaire du développement multi-objets

Pourquoi ce choix ?

• Mutualisation des compétences

• Mutualisation du code

• Royalty Free

• Expérience plus complète

• Utilisation des markets

• APIs disponibles

Page 15: L'Open Web en tant que pierre angulaire du développement multi-objets

Expérience “bizarre”

Page 16: L'Open Web en tant que pierre angulaire du développement multi-objets

Accès aux APIs

Page 17: L'Open Web en tant que pierre angulaire du développement multi-objets

Qualité

Page 18: L'Open Web en tant que pierre angulaire du développement multi-objets

Partage de code

Page 19: L'Open Web en tant que pierre angulaire du développement multi-objets

Hybrides célèbres

Page 20: L'Open Web en tant que pierre angulaire du développement multi-objets

Le natif ne fait pas tout

Page 21: L'Open Web en tant que pierre angulaire du développement multi-objets

Problématiques évitées

• SEO

• Nombre de requêtes HTTP

• Plus d’accès depuis un UA inconnu

Page 22: L'Open Web en tant que pierre angulaire du développement multi-objets

Nouvelles problématiques

• Validation pour entrer dans le market

• Gestion de la perte de connexion

• Resume/pause de l’application

• Mise à jour

Page 23: L'Open Web en tant que pierre angulaire du développement multi-objets

WRITE ONCE, RUN EVERYWHERE

Page 24: L'Open Web en tant que pierre angulaire du développement multi-objets

• Adapter le layout et le comportement

• Tout en partageant le même coeur applicatif, le même contenu

Objectif

Page 25: L'Open Web en tant que pierre angulaire du développement multi-objets
Page 26: L'Open Web en tant que pierre angulaire du développement multi-objets
Page 27: L'Open Web en tant que pierre angulaire du développement multi-objets
Page 28: L'Open Web en tant que pierre angulaire du développement multi-objets
Page 29: L'Open Web en tant que pierre angulaire du développement multi-objets

Responsive Web Design

Le postulat de départ : même code HTML, changement de layout via des media-queries

Page 30: L'Open Web en tant que pierre angulaire du développement multi-objets

Responsive Web Design@media screen and (max-width:999px){ #extras { clear: left; float: none; margin: 0 0 0 225px; width: 550px; }}

@media screen and (max-width:480px){ #nav { float: none; width: auto; }

#extras { float: none; width: auto; margin: 0; }

.feature-image { display: none; }}

Page 31: L'Open Web en tant que pierre angulaire du développement multi-objets

Feature detection

• Par exemple, pour navigateur “moderne” :

if('querySelector' in document     && 'localStorage' in window     && 'addEventListener' in window) {     // victoire} else {     // ...    }

Page 32: L'Open Web en tant que pierre angulaire du développement multi-objets

Feature detection: Modernizr

if (Modernizr.localstorage) { // localstorage disponible} else { // on doit faire sans}

Page 33: L'Open Web en tant que pierre angulaire du développement multi-objets

Les limites

• Pas toujours suffisant

• Pas de dégradation possible, expérience complète

• Utilisation du RWD par type de familles

Page 35: L'Open Web en tant que pierre angulaire du développement multi-objets

formfactor.js(function() { /* contents of tv.js */ formfactor.register({tv: [ "tv", function() { return navigator.indexOf("Samsung") > 0; }, (navigtor.indexOf("Samsung") > 0) ]})();var formfactor = formfactor.detect([ { formfactor : "tv", resources: ["/style/tv.css", "/style/fullscreen.less", "/script/ambientsounds.js", "/script/fx.coffee" ], callbacks: function() { alert("Look mum, I am on TV!"); } },},// default callback when nothing matches.{ "resources": ["/style/plain.css", "script/plain.js"], "callbacks": function() { alert("In plain mode.");}});

Page 36: L'Open Web en tant que pierre angulaire du développement multi-objets

device.js<link rel="alternate" href="http://foo.com" id="desktop" media="only screen and (touch-enabled: 0)">

<link rel="alternate" href="http://m.foo.com" id="phone" media="only screen and (max-device-width: 640px)">

<link rel="alternate" href="http://tablet.foo.com" id="tablet" media="only screen and (min-device-width: 641px)">

<script src="device.js"></script>

Page 37: L'Open Web en tant que pierre angulaire du développement multi-objets

Frameworks UI

• jQuery Mobile

• Sencha Touch 2

• Kendo UI Mobile

• Jo

Page 38: L'Open Web en tant que pierre angulaire du développement multi-objets

Frameworks

• Backbone.js

• Ember

• Ender

• Zepto

Page 39: L'Open Web en tant que pierre angulaire du développement multi-objets

Créer son framework

• “Joshfire Framework 2”

• Basé sur Backbone.js + Require.js

• Sur GitHub, dans une branche (pas master) mais sans documentation

Page 40: L'Open Web en tant que pierre angulaire du développement multi-objets

Quelques considérations sur les différentes familles

d’objets

Page 41: L'Open Web en tant que pierre angulaire du développement multi-objets

Téléphones & Tablettes

Page 42: L'Open Web en tant que pierre angulaire du développement multi-objets

PhoneGap/Cordova

Page 43: L'Open Web en tant que pierre angulaire du développement multi-objets

Principe

• Même APIs pour accéder aux capteurs quelque soit le matériel

• Système de plugin qui permet quand même d’appeler toutes les fonctions du SDK officiel

Page 44: L'Open Web en tant que pierre angulaire du développement multi-objets

API disponibles

• Calquées sur celle du W3C

• Risque d’évolution en fonction de B2G

Page 45: L'Open Web en tant que pierre angulaire du développement multi-objets

Exemple

navigator.camera.getPicture(onSuccess, onFail, { quality: 50 });

function onSuccess(imageData) {    var image = document.getElementById('myImage');    image.src = "data:image/jpeg;base64," + imageData;}

function onFail(message) {    alert('Failed because: ' + message);}

Page 46: L'Open Web en tant que pierre angulaire du développement multi-objets

Debug mobile

Page 47: L'Open Web en tant que pierre angulaire du développement multi-objets

Weinre

Mettre les lignes de commandes qui vont bien

Page 48: L'Open Web en tant que pierre angulaire du développement multi-objets

Weinre

• $ sudo npm -g install weinre

• Insérer <script src="http://a.b.c:8081/target/target-script-min.js"></script>

• http://debug.phonegap.com

Page 49: L'Open Web en tant que pierre angulaire du développement multi-objets

Simuler les événements touch

• Options des nouveaux Chrome Dev Tools

• Touch Bookmarklet: http://louisremi.github.com/touch-devtool/

Page 50: L'Open Web en tant que pierre angulaire du développement multi-objets

Un mot sur les touch events

• Version W3C basée sur l’implémentation d’Apple

• Bloquée par Apple

• Version Microsoft

Page 51: L'Open Web en tant que pierre angulaire du développement multi-objets

TVs

Page 52: L'Open Web en tant que pierre angulaire du développement multi-objets

En commun

• Un paradigme entièrement différent

• Contexte connu (contrairement aux téléphones)

• La télécommande s’utilise comme un clavier moins souvent comme une souris

• Domaine des jeux et des médias vidéos

Page 53: L'Open Web en tant que pierre angulaire du développement multi-objets

Problèmes<link rel="stylesheet" media="screen" href="..."><link rel="stylesheet" media="tv" href="...">

User Agent String d’une LG Smart TV 2012:

Mozilla/5.0 (DirectFB; Linux; ko-KR)AppleWebKit/534.26+ (KHTML, likeGecko) Version/5.0 Safari/534.26+

Page 54: L'Open Web en tant que pierre angulaire du développement multi-objets

Samsung

• SDK Windows

• Leader incontesté

• Basé sur un vieux Firefox (peut-être plus vrai en 2012)

Page 55: L'Open Web en tant que pierre angulaire du développement multi-objets

Philips

• Moteur web basé sur Opera

• Site Web plein écran

Page 56: L'Open Web en tant que pierre angulaire du développement multi-objets

LG

• SDK Windows

• Basé sur WebKit

• On peut soumettre une URL à leur store

Page 57: L'Open Web en tant que pierre angulaire du développement multi-objets

Google TV

• Comme un Chrome (sauf le paradigme différent)

• <meta name="gtv-autozoom" content="off" />

Page 58: L'Open Web en tant que pierre angulaire du développement multi-objets

“Desktop”

Page 59: L'Open Web en tant que pierre angulaire du développement multi-objets

Peu de solutions

• QtWebKit

• MacGap

• AIR

Page 60: L'Open Web en tant que pierre angulaire du développement multi-objets

Les objets ambiants

Page 61: L'Open Web en tant que pierre angulaire du développement multi-objets

Juste un jeu d’API

Page 62: L'Open Web en tant que pierre angulaire du développement multi-objets

Serveur d’API

Page 63: L'Open Web en tant que pierre angulaire du développement multi-objets

BeagleBoneL’embarqué cible le developpeur système / C

mais si on préinstalle node et cloud9 cela change la donne

Page 64: L'Open Web en tant que pierre angulaire du développement multi-objets

Raspberry PI

Page 65: L'Open Web en tant que pierre angulaire du développement multi-objets

Le Miroir

Page 66: L'Open Web en tant que pierre angulaire du développement multi-objets

Le Miroir

Page 67: L'Open Web en tant que pierre angulaire du développement multi-objets

Le Miroir

• Micro-ordinateur

• WebKit plein écran

• Une app hybride pour en lancer d’autres

Page 68: L'Open Web en tant que pierre angulaire du développement multi-objets

Canapé

Page 69: L'Open Web en tant que pierre angulaire du développement multi-objets

Canapé

• Arduino + RFID

• Serveur node.js qui pilote une Google TV

Page 70: L'Open Web en tant que pierre angulaire du développement multi-objets

La Borne

Page 71: L'Open Web en tant que pierre angulaire du développement multi-objets

La Borne

Page 72: L'Open Web en tant que pierre angulaire du développement multi-objets

La Borne

• iPad + app hybride

• Arduino + RFID pour passer le badge

Page 73: L'Open Web en tant que pierre angulaire du développement multi-objets

Conclusion

Page 74: L'Open Web en tant que pierre angulaire du développement multi-objets

Quelques souhaits

• Plus d’implications dans les devices APIs

• De meilleurs frameworks multi-objets

Page 75: L'Open Web en tant que pierre angulaire du développement multi-objets

Two more things

Page 76: L'Open Web en tant que pierre angulaire du développement multi-objets

Joshfire recrute !http://www.notaregularcompany.com

Page 77: L'Open Web en tant que pierre angulaire du développement multi-objets

dotJS.fr — 30 Nov

Page 78: L'Open Web en tant que pierre angulaire du développement multi-objets

+ grande conférence JavaScript en France

Page 79: L'Open Web en tant que pierre angulaire du développement multi-objets

Mr doob

Tickets early birds: http://www.dotjs.fr

Page 80: L'Open Web en tant que pierre angulaire du développement multi-objets

QUESTIONS ?