Multiplication des séminaires Microsoft !

Voici les 2 derniers séminaires sur les technologies Microsoft qu’Objet Direct vient d’animer:

15 Octobre 2013, co-organisé avec Microsoft dans leur locaux à Lyon:
Profitez du Cloud Windows Azure pour commercialiser vos applications SaaS Slides ici

5 novembre 2013, à Grenoble: Industrialisez vos développements avec les nouveautés de l’ALM Microsoft, sur un fond de Windows Azure pour profiter du tout Slides ici

Formation architectures mobiles : principes et implémentation

Définir une architecture mobile nécessite, d’une part, de prendre en compte la pluralité des plates-formes mobiles dans les choix techniques afin de maîtriser les coûts de réalisation et de maintenance, d’autre part à concevoir finement la couche de médiation entre l’application mobile et le système d’information de l’entreprise.

Objet Direct propose une formation Architectures Mobiles du 2 au 4 octobre à Toulouse !

Cette formation présente les concepts et les bonnes pratiques indispensables pour :

  • Définir une architecture REST : centrée sur les données, sans état, scalable et sécurisée,
  • Cibler les principales plates-formes mobiles (Apple, Android, Windows Phone, BlackBerry) avec un unique développement HTML5 / PhoneGap,
  • Intégrer les exigences techniques : push, mode déconnecté, débit réseau souvent limité,
  • Exploiter les fonctionnalités mobiles : GPS, gestes, orientation, caméra, etc,
  • Publier les applications mobiles : interne à l’entreprise ou grand public (markets).

Programme complet et inscription sur notre site : http://www.objetdirect.com/formation/architectures-mobiles-principes-et-implementation

Livre Blanc : Le Web Mobile de A à Z par Objet Direct !

Objet Direct propose au téléchargement gratuit son dernier livre blanc sur le Web mobile ! Ce dernier répondra à toutes les questions que vous vous posez sur le Web Mobile :

  • Les différents moyens de concevoir des applications mobiles.
  • Les avantages de la solution dite « Web mobile », tout en ne dissimulant pas les inconvénients de celle-ci.
  • Enfin, une fois fait le choix de partir sur la solution « Web mobile », le livre blanc expose les points importants à connaître, et à aborder, tels que : la sensibilisation sur les plateformes à viser, la conception de son ergonomie, mais aussi l’architecture de son projet et les outils / frameworks incontournables.

 

Pour télécharger le Livre blanc Objet Direct, rendez-vous sur notre site : http://www.objetdirect.com/livre-blanc-le-web-mobile-de-z-par-objet-direct

DroidCon Paris 2013, j’y étais ! (partie 2)

Dans mon article précédent, je vous avais détaillé mon planning sur la première journée de la DroidCon Paris 2013. Je continue aujourd’hui avec la liste des conférences que j’ai suivi le deuxième jour :

Facebook vs Square
Fabien Devos (Facebook) et Pierre-Yves Ricau (Square)
Présentation croisée des méthodes de travail des équipes Android chez Facebook et Square . Ecriture du code, intégration, livraison, tous les process y ont été décrits. On ne dirait pas comme ça, mais la quantité d’outils qu’ils utilisent est assez énorme.

Genymotion
Cédric Ravalec (Genymobile)
Les équipes de Genymobile ont profité de la DroidCon pour la sortir la première version de leur émulateur Genymotion. Il s’agit d’un émulateur Android qui se démarque de celui de Google par ses performances et son outillage. Celui-ci gère plutôt bien l’accélération OpenGL, et fournit des « widgets » pour contrôler le GPS et la batterie (d’autres sont prévus).

Secure your app: Fight the leaks! (slides)
Eyal Lezmy (Samsung)
Présentation axée sur la sécurité : permissions, stockage des données, chiffrage. J’ai bien aimé le conseil à la fin : trop de sécurité tue la sécurité ! Explication : il ne faut pas aller trop loin dans la sécurité car cela nuit généralement à l’expérience utilisateur. Résultat, il va vouloir contourner le système, ou pire, il ne va plus utiliser votre application…

Sneak peek preview of RhoMobile suite v4
Mark Kirstein (Motorola Solutions)
RhoMobile Suite et un ensemble d’outils permettant de développer des applications mobiles multi-OS. Les écrans sont conçus en HTML5, et le reste se fait en Ruby. Les concepteurs sont venus nous présenter la version 4 de RhoMobile et ont mis l’accent sur les performances et les services tels que RhoConnect (synchronisation de données dans le cloud), RhoElements (fonctionnalités supplémentaires payantes mais très ciblées), et RhoHub (environnement de développement en ligne).

Introduction to Google Glass!
Alain Regnier (Alto Labs)
Démonstration Google Glass par l’un des rares français (peut-être le seul ?) à avoir pu obtenir un prototype. Alain Regnier nous à décrit le système (basé sur Android 4.0) ainsi que les APIs disponibles et les pratiques à respecter pour faire une application Google Glass : n’afficher que ce qui est important, privilégier un fort contraste, et ne jamais surprendre l’utilisateur.

Donnez le pouvoir de build à votre PO (slides)
Mathieu Hausherr (OCTO), Aurélien Rambaux (OCTO)
Retour d’expérience sur un outillage mis en place dans le but de permettre au Product Owner de construire lui-même l’application quand il le souhaite. Celui-ci peut paramétrer le build (mode dev, prod, etc.), il peut donc tester l’application quand il en a besoin, et cela permet aux développeurs de ne pas être dérangés dans leur glorieux travail :-).

Pas de confiance, faites des tests! (slides)
Olivier Gonthier (Zenika)
Les tests sur Android : pourquoi, comment ? Une présentation très complète du framework de test Android ainsi que de quelques outils bien pratiques : DataFactory (génération de données de test), FEST Android (assertions), et aussi Robolectric, Mockito, Robotium, Spoon…

Bonne Pratique & Tips sur le développement Android (slides)
Jean-François Garreau (Binoned)
Quelques conseils pour débuter sur Android, notamment pour ceux qui viennent du monde Java et qui auraient tendance à appliquer les mêmes recettes à tort. Sujets abordés : performances, UI patterns, bonnes pratiques, et quelques librairies.

Musclez vos applis Android avec les outils du monde Java (slides)
Jérôme Van Der Linden (OCTO), Stéphane Nicolas (OCTO)
Une revue de outils du monde Java qui peuvent aussi être utilisés sur Android pour faire des tests et de la qualité. J’en cite quelques-uns : FEST, Mockito, Easymock, Sonar, Emma, Jacoco… Bon ok, tout ça peut être compliqué à mettre en place, mais ils ont pensé à tout et ont lancé un projet GitHub : il s’agit d’une application Android industrialisée avec tous ces outils. Vous n’avez qu’à récupérer le code, enlever ce dont vous n’avez pas besoin, et vous avez alors un bon point de départ pour votre nouveau projet Android.

Conclusion

Ces deux journées étaient bien remplies. Je fais du développement Android depuis plusieurs années, et pourtant j’étais passé à côté de plein de choses. J’ai découvert beaucoup de librairies (j’ai commencé à en utiliser certaines depuis), beaucoup d’outils, et surtout une communauté française très active.

Je pense revenir sur quelques points précis dans les semaines à venir. Je ne sais pas encore lesquels, mais il y a de quoi faire : je pense notamment à Genymotion et RoboSpice !

Brèves d’experts : comment scanner un QRCode en web mobile ?

Avant de s’intéresser à le scanner, ce QRCode, intéressons-nous à qui il est !

Vous avez sans doute déjà vu ces drôles de codes barres carrés…

QR (abréviation de Quick Response) signifie que son contenu peut être décodé rapidement après avoir été lu par un smartphone (entre autres). Il permet de stocker plus d’informations qu’un code barres classique et surtout des données directement reconnues par des applications, permettant ainsi de déclencher facilement des actions comme envoyer un mail, faire un paiement, afficher un texte et j’en passe.

Maintenant qu’on sait ce que c’est  (dans les grandes lignes), revenons au sujet du jour, à savoir comment le scanner en web mobile !

J’ai espionné quelques ODésiens qui en discutaient…

Lire la suite

DroidCon Paris 2013, j’y étais ! (partie 1)

Si vous suivez le blog, vous n’êtes pas sans savoir que je suis allé la semaine dernière à la conférence DroidCon à Paris. Il est maintenant temps de faire le bilan, je vais donc essayer de faire le tri dans mes notes pour vous résumer ce qui s’y est passé. Les présentations étaient réparties dans trois salles : une grande et deux petites. Il fallait donc souvent choisir entre trois présentations, par conséquent j’en ai raté certaines qui m’auraient sûrement m’intéressé. Je ne rentrerai pas dans les détails pour l’instant, je vais juste faire un résumé des présentations que j’ai suivi, et je ferai plus tard quelques articles pour parler plus en détails de certains sujets particulièrement intéressants.

Voici mon planning pour le premier jour :

PKI sur Android
Philppe Prados – OCTO
Comment distribuer des certificats à une application Android, et comment les stocker de manière sécurisée.

Android in a Web of Things: NFC, Barcodes, Arduino and the Cloud!
Dominique Guinard – EVRYTHNG
Vue d’ensemble de ce qu’il est possible de faire avec Android et ce qu’on appelle l’Internet des objets : codes-barres, NFC, Arduino, etc.

Soyez productifs dans votre developpement sous android!
Alexandre Thomas – Excylis, contributeur AndroidAnnotations, AndroidKickstrartR
Trucs et astuces pour développer rapidement : librairies, templates de projets, raccourcis Eclipse, etc.

Barcamp
Le principe : n’importe qui peut venir pitcher pendant 2 minutes la présentation qu’il souhaite faire, et selon l’accueil du public des intervenants sont retenus ou non pour faire leur présentation l’après-midi. En l’occurrence il y avait une quinzaine de personnes, et il y avait de la place quasiment pour tout le monde. J’ai pu assister aux présentations suivantes :
– Franz Haslbeck est venu nous parler de deux concours organisés par l’agence spatiale européenne,
– Une présentation des montres intelligentes i’m Watch avec les bonnes pratiques à respecter quand on développe pour des montres,
– Une présentation de la librairie RoboSpice par son créateur Stéphane Nicolas (OCTO)
Il y a eu ensuite quelques démos d’applications en tout genre, comme Oopost et TestFairy.

Democamp
Le democamp est une session durant laquelle des jeunes entreprises viennent présenter leur projet en quelques minutes devant des investisseurs potentiels. Ces derniers désignent ensuite un gagnant parmi les candidats (je ne plus ce qu’il gagne, d’ailleurs – au minimum ça leur fait une bonne pub). Le gagnant : Pixowl, éditeur de jeux social/casual pour mobiles.

…et c’est déjà pas mal pour ce premier jour. Je vous parlerai de la deuxième journée dans un article à venir très bientôt, avec notamment l’intervention des développeurs de Facebook et Square, la présentation de Genymotion, un nouvel émulateur Android ultra-performant lancé pour l’occasion, et la démo de Google Glass !

On cherche un nom pour ce petit monstre, n'hésitez pas à nous faire part de vos suggestions !

Site DroidCon Paris 2013
Photos de l’événement sur G+ 

DroidCon Paris 2013, c’est parti !

La DroidCon Paris se tiendra les 17 et 18 juin. Les conférences DroidCon, qui ont pour but de rassembler les développeurs et les entreprises travaillant autour d’Android, existent depuis 2009 et ont été tenues dans différents pays (principalement en Europe), mais c’est la première fois qu’elle a lieu en France, et OD sera de la partie ! Je vous ferai part dans les jours qui viennent de ce que j’y aurai vu…

Petit tour d’horizon des outils du temps réel

Après m’être rendu fin avril à Lyon pour assister à l’excellente session 2013 de la Realtime Conference Europe, et comme il est d’usage dans pareil cas, je m’apprêtais à délivrer à chaud, sans latence, un compte-rendu circonstancié d’un évènement qui se sera avéré riche d’enseignements. Mais voilà, mon cerveau n’opérant pas, et croyez bien que je le regrette, en temps réel, je préfère finalement profiter de l’occasion pour dresser un petit état des lieux de ce qui sera comme nous l’avions pressenti en lançant le projet Hubiquitus il y’a deux ans un des principaux sujets d’innovation des années à venir dans l’univers du digital.

Mais de quel temps réel parle-t-on ici lorsque l’on évoque le temps réel ?

Supprimer les latences indésirables 

En informatique, la notion de temps réel fait traditionnellement référence à des « systèmes pour lesquels le respect des contraintes temporelles dans l’exécution des traitements est aussi important que le résultat de ces traitements ». L’important réside donc dans la prédictibilité temporelle, ce qui permet d’envisager des systèmes synchrones avec leur environnement, en général le monde physique, avec de nombreuses applications critiques (pilote automatique d’un Airbus par exemple). On parle aussi de temps réel strict ou « dur » (hard real time).

Mais dans l’écosystème du digital, le vocable « temps réel » est plutôt employé dans son acceptation courante, humaine du terme, soit « l’absence de latence perçue dans une interaction », comme par exemple dans la vidéoconférence ou dans le jeu en réseau. C’est ce que l’on appelle le temps réel souple ou « mou » (soft real time).

En fait, le temps réel dont nous parlons désigne deux choses distinctes:

  • la suppression de toute latence indésirable perçue par l’utilisateur
  • la fraîcheur des données utilisées

Ne pas trop en faire

Une attention toute particulière doit donc être portée à l’ergonomie des interfaces des applications temps réel. Notons au passage que la réactivité d’une interface peut être mal perçue. Si la sensation d’instantanéité améliore généralement  l’expérience utilisateur (c’est particulièrement le cas quand elle est implicitement recherchée comme dans la messagerie instantanée), à contrario une interface temps réel mal pensée peut également la dégrader: un rafraichissement trop rapide des données en empêchant la lecture ou encore des notifications interrompant l’utilisateur à tout bout de champ auront plutôt tendance à perturber voire exaspérer ce dernier. Si les latences indésirables doivent disparaître, conserver voire introduire d’autres latences (un effet de transition entre deux écrans par exemple) amélioreront l’expérience générale.

Penser « hors ligne »

Cela peut paraître curieux de parler du mode hors ligne dans un article sur le temps réel, mais c’est finalement bien la première des contraintes à prendre en compte à l’heure où nous utilisons toujours plus nos applications en mobilité. Parce que les réseaux mobiles ne sont pas un cadeau : couverture incomplète, débit pratique très loin du théorique, latence parfois effarante, frais d’itinérance confiscatoires, sont autant de réalités avec lesquelles il faut composer.

Le temps réel est une « perception », rappelons-le encore. L’interface d’une application temps réel doit donc être aussi réactive connectée que hors ligne. Cela signifie qu’il faut concevoir des interfaces qui exploitent le réseau de façon asynchrone :

  • En effectuant toutes les interactions réseau en tâche de fond
  • En stockant certaines données en local de façon à les rendre toujours disponibles pour l’utilisateur
  • En autorisant la modification hors ligne de ces données (écrire un mail par exemple)
  • En resynchronisant l’état de l’interface en tâche de fond lorsque la connexion est rétablie

Penser « messages »

La façon dont nous concevons usuellement les applications digitales est dominée par les interactions synchrones de type « requête-réponse » : une interface cliente émet une requête auprès d’un serveur distant qui lui renvoie après traitement une réponse. Dans ce modèle, l’utilisateur est souvent contraint d’attendre que la réponse lui parvienne en retour pour poursuivre son utilisation.

Ce modèle ne permet pas d’atteindre la perception du temps réel. Si un évènement temporel survient, le serveur n’est pas en mesure d’en avertir l’interface et doit attendre qu’elle émettre une nouvelle requête, ce qui introduit une latence indésirable. Il est bien sûr possible de gommer cette latence perçue en augmentant la fréquence des requêtes (ce que fait par exemple un site web comme lequipe.fr) mais cela n’est guère satisfaisant.

Pour parvenir à une réduction significative de la latence perçue, il nous faut pouvoir notifier l’interface sans attendre une nouvelle requête : il faut pouvoir lui envoyer un message.

Utiliser les protocoles adaptés

Plusieurs protocoles de messagerie temps réel ont ainsi vu le jour permettant d’activer un canal de messagerie bidirectionnel persistant entre un client et un serveur, et parfois directement entre deux clients :

  • Comet: Comet désigne une famille de protocoles qui détournent HTTP de sa fonction première pour émuler une connexion bidirectionnelle ; très utilisés car compatibles avec pratiquement tous les navigateurs web, ces protocoles induisent cependant une surconsommation importante en ressources qui les rend peu adaptés à un usage en mobilité.
  • XMPP. Standard de la messagerie instantanée, XMPP est le pionnier des standards du temps réel; les clients peuvent communiquer directement entre eux à l’aide de messages XML via une passerelle serveur. XMPP s’appuie sur un protocole de transport spécifique (deux connexions TCP persistantes, une pour le trafic montant et l’autre pour le trafic descendant) mais peut également être employé sur le web à l’aide d’un protocole de type Comet appelé BOSH.
  • WebSockets. Standard supporté par la majeure partie des navigateurs web modernes, WebSockets est le plus simple de ces protocoles ; les clients se connectent simplement à un serveur à l’aide d’une unique connexion TCP bidirectionnelle (full-duplex) qui permet de transmettre des messages descendants et montants.
  • WebRTC: standard émergent pour la communication audiovisuelle sur IP à l’aide d’un simple navigateur web sans plugin, WebRTC privilégie quant à lui des connexions paire-à-pair directe entre clients destinées à véhiculer des flux binaires et non des messages (WebRTC inclut cependant un canal data complémentaire pour ce besoin spécifique).
  • MQTT: issu du monde du M2M, ce protocole est maintenant utilisé par certains acteurs du digital comme Facebook qui l’exploite notamment pour ses applications mobiles (Facebook Messenger); il ne peut pas être exploité sur le web.

Parmi tous ces protocoles, WebSockets est à ce jour le protocole qui remporte le plus d’adhésion de la part de la communauté qui plébiscite sa simplicité et ses excellentes performances. Supporté nativement par les navigateurs web, il peut d’ores et déjà être employé pour construire les applications digitales temps réel d’aujourd’hui, qu’il s’agissent de webapps ou non.

Pour autant, WebSockets se heurte à un environnement réseau pour le moins hostile:

  • Proxies et firewalls bloquent environ dans 1 cas sur 4 les connexions WebSockets
  • Les réseaux cellulaires interdisent très souvent son utilisation, ce qui le rend difficilement exploitable en mobilité

C’est là que des frameworks comme SocketIO ou SockJS interviennent. Ces bibliothèques réseau multi-protocoles sélectionnent dynamiquement la meilleure option de façon transparente pour le développeur qui n’aura qu’une seule API à implémenter: lorsque la liaison WebSocket ne fonctionne pas, des techniques de contournement basées le plus souvent sur Comet sont employées (Flash polling, XHR polling, HTTP Long polling, JSON padding, etc.).

Se constituer un framework temps réel

Disposer d’un protocole temps réel pour pousser des messages aux utilisateurs ne suffit  pas à concevoir une application temps réel.

L’architecture d’une application temps réel doit être centrée sur le traitement et la propagation sans latence de flux d’évènements, ce qui nécessite d’employer des solutions différentes de celles que nous avons l’habitude d’utiliser.

On trouve ainsi sur le marché de plus en plus de solutions, souvent open source, qui intègrent spécifiquement cette contrainte du temps réel :

  • Des bibliothèques réseau (ZeroMQ, Boost.io, Netty, Mina)
  • Des middlewares de messagerie (ejabberd, RabbitMQ)
  • Des caches de données (Redis, Memcached)
  • Des framework orientés flux d’évènements (Esper, Storm, S4, Dempsy, Hubiquitus)
  • Des serveurs web asynchrones (NodeJS, Mongrel2)
  • Des framework web temps réel (SocketStream, XSockets)

Qu’on se le dise : l’architecture des applications temps réel n’aura plus grand chose à voir avec celle des applications web et mobiles des années passées !

Conclusion

L’écosystème du temps réel progresse à grande vitesse et il ne fait aucun doute que la profusion des outils désormais disponibles a réduit significativement le coût d’implémentation de ses applications.

Pour autant, les applications temps réel ne sont pas légion. Le terrain nous l’a montré, la problématique du temps réel réside désormais moins dans la difficulté technique qu’elle occasionne que dans la capacité des développeurs à imaginer des cas d’usage pertinents…et à convaincre leurs utilisateurs.

On en reparle l’année prochaine pour la session 2014.

Premiers essais avec Android Studio

Comme chaque année, la conférence Google I/O apporte son lot de surprises. Je ne vais pas faire la liste des nouveautés annoncées mais uniquement vous parler du nouvel environnement de développement intégré pour Android, annoncé hier lors de la keynote : Android Studio. Ce nouvel EDI n’est plus basé sur Eclipse, comme c’était le cas avec ADT, mais sur IntelliJ, ce qui ravira pas mal de développeurs qui le connaissent déjà. En effet l’inertie d’Eclipse commençait à être un frein pour de nouveaux ajouts et la plate-forme IntelliJ apporte un peu de fraîcheur et de nouvelles possibilités.

Android Studio est disponible dès aujourd’hui en version 0.1 « early access preview », c’est-à-dire qu’il s’agit d’une version incomplète et potentiellement instable, mais qui permet de se faire une idée de ce dont il s’agit.

Après quelques tests (version Windows), voici ce que je peux en dire :

Une fois l’installation passée, petite déception, l’appli ne se lance pas. Une petite recherche sur Google+ et j’apprends qu’il faut déclarer une variable d’environnement « ANDROID_STUDIO_JDK » qui pointe sur le JDK (màj 22/05 : fonctionne aussi avec JAVA_HOME ou JDK_HOME). Ceci réglé  l’appli démarre bien, et je peux enfin commencer à jouer. Ayant utilisé un peu IntelliJ 12 dans sa version de base avec le plugin Android, je remarque quelques différences visuelles. Globalement l’intégration d’Android est visuellement mieux « finie » sur Android Studio que sur IntelliJ, même si au premier abord les différences sont peu visibles.


Je lance l’éditeur de layout, et là les changements se montrent : la vue de prévisualisation du layout ressemble enfin à un vrai appareil Android, les icônes de la palette sont plus lisibles, et en un clic je peux voir le résultat simultanément sur plusieurs tailles d’écran représentatives. C’est aussi le cas quand on passe en mode d’édition XML grâce à la vue « preview » qui s’affiche sur le côté.

Le seul point négatif que je peux soulever concerne le debugger : celui-ci ne fonctionne pas car le debugger n’arrive pas à se connecter au processus. Mais ceci est pardonnable étant donné qu’il s’agit d’une version 0.1 signalée comme étant incomplète, et ce sera sûrement résolu dans les semaines à venir. C’était parce-que j’avais un autre IDE ouvert qui prenait le pas sur la connection ADB :-). Donc en fait, je n’ai pas de point négatif à soulever, il faut juste bien vérifier qu’il n’y a pas un Eclipse/IntelliJ qui tourne en arrière-plan.

Pour le reste, cela fonctionne bien. Pour que la transition avec ADT soit moins douloureuse, vous pouvez configurer les raccourcis comme dans Eclipse. Si vous ne vous sentez pas prêts à utiliser un EDI incomplet mais que vous voulez préparer votre transition, vous pouvez commencer par utiliser IntelliJ, et prévoir de passer à Android Studio dès qu’une version finale sortira. En plus, le thème Darcula est classe !

Je vous invite à jeter un oeil à la keynote (34è minute), certaines fonctionnalités sont assez bluffantes.

Pour finir je précise qu’Android Studio, tout comme ADT, sera distribué à la fois sous forme de bundle stand-alone, ou sous forme de plugin intégré à IntelliJ 13. D’ailleurs ce dernier a aussi été rendu disponible en version « early access preview ».

Android Studio : http://developer.android.com/sdk/installing/studio.html
IntelliJ 13 : http://blogs.jetbrains.com/idea/2013/05/intellij-idea-13-early-preview-is-out

Formation HTML5 et PhoneGap : Développement Web Mobile

Objet Direct propose une formation HTML5 et PhoneGap du 17 au 19 juin à Toulouse !

Cette formation vous permettra d’assimiler et de maîtriser les points suivants :

  • Les fonctionnalités mobiles prises en charge (GPS, gestes, orientation, caméra, …),
  • La compatibilité des téléphones et tablettes avec HTML5 et PhoneGap,
  • Les cas d’usage optimaux de cette solution,
  • Le packaging d’applications natives avec PhoneGap,
  • La conception de plugin pour PhoneGap,
  • La conception d’interfaces mobiles (IHM) avec jQuery Mobile,
  • Les stratégies alternatives pour créer des applications multi-plateformes.

Programme complet et inscription sur notre site : http://www.objetdirect.com/formation/html5-et-phonegap-developpement-web-mobile