Pocket Agile – Une application AIR multi-plateforme connectée au cloud
Il y a quelques semaines lors de Back From MAX Paris, j'ai pu découvrir l'application Pocket Agile pendant un lightning talk de 10 minutes. 10 minutes, ce n'est pas beaucoup et contrairement à moi, Guillaume a réussi a nous montrer son application ainsi que quelques détails croustillants sur sa conception.
J'ai été assez impressionné par cette application, qui malgré son aspect simple, va bien plus loin qu'un prototype.
Pour pouvoir le laisser en parler un peu plus, et pour ceux qui n'étaient pas là à BFM, on a décidé de faire cela sous forme de petite interview.
Salut Guillaume, tout d'abord, peux-tu te présenter, ainsi que Axones par la même occasion?
Bonjour à tous, dur de ne pas passer directement à la dernière question concernant l’annonce d’Adobe sur Flex. Je suis architecte chez AXONES au sein de l’équipe Etudes Avancées. Après l’obtention de mon master en informatique j’ai développé en Java/JEE pendant 1 an. Et cela fait maintenant 2 ans que je fais du Flex avec comme back-end du Java. AXONES est une SSII de 200 personnes qui possède un important pôle de R&D en technos Web et Mobile. Autour de nos communautés d’experts, nous réalisons régulièrement des soirées de rencontres techniques. La recherche de meilleures solutions techniques est une des valeurs importantes d’Axones. C’est cet état d’esprit qui m’a permis de développer toute notre activité Flex avec de très belles réussites à la clef. D’ailleurs, AXONES recrute … avis aux intéressés …
L'application Pocket Agile que tu as présenté lors de BFM Paris permet de réaliser un planning poker. Pour ceux qui ne connaissent pas, peux-tu expliquer le concept?
La démo de Pocket Agile :
Il s’agit d’une étape dans la réalisation de projet en méthodes Agile. L’ensemble des intervenants sur le projet (clients, architecte, développeurs, …) se réunissent puis évaluent la complexité des tâches les unes après les autres. Pour plus de détails le planning poker :
Le wiki http://en.wikipedia.org/wiki/Planning_poker
Ainsi qu’une vidéo très sympa: http://youtu.be/0FbnCWWg_NY
Pocket Agile t'as permis de participer au Adobe Mobile Challenge et de finir dans le top 15 des applications récompensées. Le but était de publier son application sur Android / iOS / Playbook. Quelle a été la plateforme la plus difficile à dompter selon ton expérience?
Je pense que la Playbook est ce qui est le plus problématique. Mais j’avais participé au concours pour gagner une tablette (mon application : PriorityFeed) ce qui m’a permis d’avoir une première approche et de faire face aux difficultés qui peuvent intervenir.
Voici un schéma d’architecture de Pocket Agile :
Pour la synchronisation des "rooms", tu as utilisé LCCS (LiveCycle Collaboration Services), un service proposé par Adobe dans le cloud. Pour l'avoir testé, je trouve que LCCS n'a pas été assez mis en avant par Adobe. Que penses-tu du potentiel de ce produit? de son pricing?
Pour moi, il y a un énorme potentiel pour cette solution. Le travail collaboratif et social est une des avancées majeures à laquelle devra faire face le monde des intégrateurs et des logiciels sur mesure. Mais je pense que le marché n’est pas encore prêt pour repenser sa manière de travailler dans ce sens. Il est troublant de voir les difficultés que l’on peut rencontrer chez certains client pour passer d’un fichier Excel à une application. Il faudra attendre que de grands éditeurs montrent au plus grand nombre les possibilités et le confort qu’amènent ce push de data. Lorsque l’on ne devra plus faire F5 sur Facebook ce sera génial. Concernant les tarifs je n’ai jamais atteint les 15$ par mois, alors pour l’instant cela me convient.
Pour le back-end, tu as utilisé des services REST sur Google App Engine. Comment s'est passé cette partie server-side?
Super bien ! Je reste un très gros utilisateur de Java, mais je m’attendais à plus de difficultés pour prendre en main la nouvelle API à utiliser. La première approche sur la persistance des données est assez troublante mais une fois que l’on a compris c’est très agréable à manipuler.
As-tu utilisé des librairies / frameworks pour la réalisation de Pocket Agile ? Quels sont tes outils privilégiés?
En ce qui concerne le back-end, Restlet prévoit une librairie pour Google App Engine et Google propose GSON pour la manipulation en JSON : cela fait parfaitement ce qu’on attend très simplement, que demander de plus ! Pour le front, j’utilise Parsley que j’aime beaucoup pour les commandes et l’inversion de contrôle. J’ai sauté de joie le jour où j’ai découvert l’annotation [Init] (pas très mise en avant dans la documentation) qui permet de lancer des traitements après que les éléments aient été injectés à la vue.
Quel futur pour Pocket Agile? D'autres projets?
Une refonte graphique ! Antoine Villieu, un de nos designers, étudie un nouveau design, et peut-être ajouter une notification pour prévenir du daily scrum (point quotidien rapide). Le code est accessible sur pocket-agile.googlecode.com. Sinon je travaille actuellement à plein temps sur une boutique en ligne mobile en Flex. Et plus personnellement, j’ai des idées de projets mobiles pour gens/sites comme « norman fait des vidéos ».
Pour finir, car difficile de ne pas évoquer cette question, que penses-tu de l'avenir de Flex après les différentes annonces d'Adobe de la semaine dernière?
Quelles annonces ? J’étais à fond sur BattleField 3 la semaine dernière, je n’ai pas vu grand-chose.
Plus sérieusement.
Pour Flash Mobile, je me demande pourquoi cela n’a pas été abandonné plus tôt. A l’annonce de Microsoft que Windows mobile 8 ne supportera pas Flash, je ne suis pas le seul à avoir réalisé que Flash sur mobile n’était pas intéressant.
Pour Flex, cela fait un bon moment que je me demande pourquoi ce n’est pas un projet complètement open source. Le SDK devient tellement énorme et les demandes tellement diverses (industrialisation, performance, nouveaux composants, etc.) que je ne voyais pas Adobe continuer tout seul longtemps. Lorsque j’ai vu la nouvelle cela m’a semblé tout à fait naturel et une bonne chose. Ils ont racheté PhoneGap et l’ont transmis directement à la fondation Apache, je trouve normal que Flex suive le même chemin.
La phrase de Deepa que tu cites :« In the long-term, we believe HTML5 will be the best technology for enterprise application development » ne m’a finalement pas tant surpris que ça puisque c’est ce que souhaite l’industrie. Cette phrase permet donc à Adobe de retrouver la place qu’elle mérite (par ses ingénieurs et son passé) d’acteur clé dans l’avancé et la mise en place des standards du marché.
Ce qui m’a réellement inquiété, c’était de savoir comment Adobe envisageait la donation de son Framework et de connaître son implication concrète dans la suite du projet. La nouvelle mise à jour de l’article de Deepa répond à ces questions et me rassure sur la viabilité du Framework pour réaliser des applications en AIR pour mobile et pour desktop et encore pour quelques temps dans le navigateur.
Concernant le développement dans le navigateur à long terme, je me dis qu’avec un tel déploiement de ressources chez Adobe pour faire du HTML5, un bon Framework et des outils qui vont avec ne devraient pas tarder à arriver.
N’hésitez à me contacter : ggaulard@axones.fr
Petit résumé des liens
Pocket Agile : http://pocketagile.axones.com/
La démo à Back From Max : http://youtu.be/1UQSkoRvv9g
Et les sources : http://code.google.com/p/pocket-agile/
Le site d’axones : http://www.axones.com/
Sortie de Flash Player 11, AIR 3, Flex / Flash Builder 4.6 et Adobe MAX!
Si vous vivez dans une cave ou que vous n'êtes pas sur Twitter, vous n'avez peut-être pas entendu les dernières annonces faites par Adobe. Voici donc un petit récapitulatif.
Flash Player 11 et AIR 3 ont été annoncé pour "early October". Petit rappel en passant, Adobe Max, c'est du 1er au 5 Octobre. Même si vous n'êtes pas très fort en devinette, je pense que vous avez compris le message
.
Flash Player 11
Même si les dernières versions de Flash Player (10.1, 10.2 et 10.3) étaient notées comme des versions mineures alors qu'elles apportaient de grosses modifications comme StageVideo, on a ici affaire à une version majeure qui vaut son pesant d'or.
Petit aperçu des fonctionnalités:
- Player 64-bits sur Linux, Mac et Windows. Vous pouvez donc utiliser la version 64-bits de votre navigateur sur votre système 64-bits avec Flash Player. Il y avait eu la version "Square" sur les labs pendant un moment. Le support des systèmes 64-bits est maintenant direct
- Stage3D "MoleHill": Des APIs bas niveau permettant de profiter de l'accélération graphique de votre GPU. Il devient ainsi possible de créer des jeux de qualité (démo http://goo.gl/DJKzs). Notez que vous n'allez pas vraiment utiliser MoleHill directement mais des API plus haut niveau comme Flare3D, Alternativa 3D et les autres qui finissent en 3D
- Support natif du JSON: Amélioration (très importante) des performances de parse des données au format JSON.
- … bien d'autres : http://www.adobe.com/devnet/flashplayer/articles/whats-new-flash-player11.html
AIR 3
- Tout ce qui a été évoqué pour Flash Player 11
- Stage3D pour le Desktop seulement (le mobile devrait arriver plus tard)
- Extensions de code natif: Sûrement la plus grosse amélioration sur AIR depuis longtemps. Vous pouvez accéder aux API du système de manière directe, sans être bridé par les APIs proposées par AIR. Cela se passe en écrivant du code natif sur la plate-forme (C++ sur Windows, Objective-C sur iOS ou Java pour Android). Notez que ces librairies peuvent être partagées, il y aura donc bientôt de nombreuses librairies natives crées par la communauté et vous n'aurez qu'à les utiliser dans vos projets, sans jamais vous occuper du code natif qui est derrière. Les possibilités sont illimitées et vont repousser ce que AIR sait faire sur mobile. On peut ainsi penser aux notifications, à l'accès aux contact, au NFC, …
- Captive Runtime: là aussi, grosse amélioration puisqu'il est possible de livrer une application avec le runtime AIR en un seul package. Plus d'installation nécessaire, plus de runtime partagé, vous pouvez donc transporter votre application sur un clé USB etc. Disponible sur Android et Desktop (déjà disponible sur iOS depuis la sortie de AIR 2.6)
- Background Audio Playing sur iOS: Lecture d'audio en background sur iOS pour des applications de type station radio par exemple
- StageVideo pour mobile
- Support de la caméra frontale (iOS et Android)
- Champ text natif (iOS et Android): Permet d'avoir de vrais champs texte natif, avec par exemple la gestion du copier/coller sur Android ou les réglettes de sélection
- … bien d'autres http://www.adobe.com/devnet/air/articles/air3_whatsnew.html
Flex et Flash Builder 4.6
Au menu de ce Flex 4.6, principalement de nouveaux composants pour mobile:
- SplitViewNavigator qui permet d'avoir deux ViewNavigator côte à côte pour des applications dédiées aux tablettes. Le SVN contient certaines APIs qui vous permettent d'automatiser certains comportements comme la gestion portrait / paysage ou l'affichage du VN de gauche dans un Callout (pop-up)
- Callout & CalloutButton : Composant générique qui permet de faire une sorte de pop-up contextuelle (très utilisée sur iOS)
- SpinnerList & SpinnerListContainer: Composant qui fait une liste avec un "wrap" c'est à dire une liste au défilement infini. Le composant SpinnerListContainer permet de skinner facilement la SpinnerList pour lui donner une forme de "rouleau"
- DateSpinner: Composant à rouleaux permettant de choisir une date (très iOS). Possibilité de customiser facilement le composant, pour notamment le passer en français
- ToggleSwitch: Sorte de CheckBox avec un état ON et un état OFF (très iOS)
- … avec quelques screenshots http://www.adobe.com/devnet/flex/articles/whats-new-flex-flash-builder-46.html
Si vous étiez au Flex User Group à Bordeaux il y a quelques jours, vous avez pu voir ces composants en exclusivité !
Et sinon:
- De meilleures performances
- Compatibilité avec les prochaines versions des plateformes mobiles, notamment iOS5
- Support des Native Extensions et de l'export en Captive Runtime directement sous Flash Builder
- Support du Network Monitor pour les applications mobiles depuis Flash Builder ainsi que des tests unitaires avec FlexUnit
- Une super Welcome page dynamique
Inscrivez-vous à la pre-release
Flex / Flash Builder 4.6 ne sont pas encore de la partie mais vous pouvez vous inscrire à la pre-release qui va démarrer bientôt. Pour tous les développeurs Flex, je vous conseille *très* fortement de vous inscrire, c'est une très belle opportunité de contribuer avec la communauté avec un forum très actif:
Inscription au programme de pre-release Flex et Flash Builder
Adobe MAX
Adobe MAX approche à grands pas (1-5 Octobre) avec certaines annonces un peu téléphonées et d'autres qui restent surprise. On a appris il y a quelques temps la sortie d'un framework nommé Starling, développé par Thibault Imbert (Chef Produit sur la Flash Platform) dont personne n'avait entendu parler. Juste pour en toucher 2 mots, ce framework permet de faire de la 2D (Sprites) accélérée par le GPU, avec donc de très bonnes performances.
Bref, préparez-vous à en prendre plein les mirettes!
Si vous voulez suivre l'évènement en streaming, veuillez vous inscrire à cette adresse:
http://www.max.adobe.com/online/
Perso, je serai en vacances au soleil (et oui), je ne pourrais donc pas vous faire un rapport live comme l'an dernier. Et si vous voulez tout savoir, vous pouvez aussi participer à "Back from MAX" le 27 Octobre à Paris:
AIR Mobile – Lancer une application native depuis une page web avec une Custom URI
Ce billet va parler des Custom URI. Sous ce nom se cache une fonctionnalité qui va vous permettre d'ouvrir une application native directement depuis un lien URL. Ce lien URL peut être présent dans une page web ou un email par exemple.
Un exemple dans la vraie vie : Doodle
Doodle est un service vous permettant de voir les disponibilités de vos amis pour décider d'une date. Service très intéressant qui dispose aussi d'une application mobile.
Quand vous accéder à Doodle.com > Exemple depuis votre mobile, vous arriverez sur une page comme celle-ci:
On vous propose d'ouvrir ce Doodle directement dans l'application native, et pas sur le site HTML classique. Cela se fait grâce au mécanisme de Custom URI.
Custom URI? Ça me dit quelque chose …
Ce mécanisme n'est pas nouveau. En fait, si vous suivez flex-tutorial, vous vous souvenez peut-être de ces billets au moment où AIR pour Android était encore en beta:
AIR pour Android – Ouvrir une application depuis une URI avec arguments
Voilà, depuis cette version beta, les fichiers descripteur (*-app.xml) n'ont plus la même structure et à l'époque, AIR pour iOS n'existait pas. Il est donc temps de faire un petit récapitulatif.
Custom URI = URI avec votre pseudo-protocole à vous
Une Custom URI, ce n'est rien d'autre qu'une URL qui utilise autre chose que "http" à la place du protocole. Vous allez en fait utiliser un préfixe à vous. Lorsque le système ne va pas reconnaître ce protocole, il va aller chercher dans la liste de ses applications, pour voir si l'une d'entres déclare que ce protocole est le sien. Si oui, il va lancer l'application en question en lui passant les éventuels paramètres que vous avez passé à votre URL (voir le tutorial sur URI avec arguments)
AIR Mobile – Application Pokémon (18) – Tester l'application sur Android
On a à présent une bonne version de notre application Pokémon, avec une vue liste, une vue de détail et la possibilité de naviguer entre les évolutions d'un certain Pokémon.
Il est venu le temps de tester notre application sur un vrai smartphone/tablette. En effet, cela peut nous permettre de détecter des erreurs dues à la taille de l'écran, à la résolution, au changement d'orientation, …
Pour commencer, on va tester sur un portable Android. Tout d'abord parce que c'est de loin le plus simple et parce que j'ai un Galaxy S sous la main
.
Création d'un certificat .p12 pour Android
La principale raison pour laquelle la publication Android est simple, c'est que vous n'avez pas à créer N certificats en 48 étapes pour 8 types de développement. Vous créez un certificat vous-même au format .p12, directement dans Flash Builder et vous pouvez l'utiliser aussi bien pour le développement que pour la production. Vous verrez que c'est le jour et la nuit par rapport à d'autres plate-forme, notamment iOS qui est bien plus complexe à mettre en oeuvre.
Rendez-vous dans les propriétés du projet (clic droit > Properties) puis dans Flex Build Packaging > Google Android:
Cliquez sur Create… puis entrez un publisher name et un password. Choisissez ensuite où sauvegarder ce fichier. Je vous conseille de le mettre dans votre application, dans un dossier "cert" par exemple et de ne pas le perdre.
C'est tout ce qu'il vous faudra comme certificat pour Android
Connexion d'un device Android par USB
Pour pouvoir effectuer le déploiement directement sur un mobile Android, il faut que celui-ci soit reconnu. Et pour qu'il soit reconnu, la plupart du temps il vous faudra installer les drivers "ADB interface". Testez quand même la ligne de commande d'après pour voir s'il y a besoin des drivers ou pas.
Ceux-ci peuvent être trouvés assez facilement sur le net, souvent sur le site du constructeur. Par exemple, pour un HTC Desire, les drivers sont là:
http://www.flex-tutorial.fr/2010/08/04/air-android-drivers-usb-pour-htc-desire-adb-interface/
Sinon, Flash Builder intègre certains des drivers dans :
C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\utilities\drivers\android
Donnez ce chemin quand Windows vous demande où sont vos drivers, cela peut fonctionner!
Pour tester si votre appareil est bien reconnu, ouvrez un invite de commande et naviguez vers:
C:\Program Files (x86)\Adobe\Adobe Flash Builder 4.5\sdks\4.5.1\lib\android\bin
Puis tapez "adb devices". Si vous avez réussi votre coup, vous aurez un numéro de série qui va s'afficher:
Lancement depuis Flash Builder
Une fois que votre device est bien détecté, rendez-vous dans Flash Builder. Sélectionnez votre projet puis Run > Run Configurations… Sélectionnez "Google Android" comme "Target Platform" puis "On Device":
Cliquez ensuite sur Run pour lancer l'application sur votre appareil Android. Idem pour Debug, rendez-vous dans Debug > Debug Configuration et suivez le même cheminement.
Si votre Debug n'arrive jamais à se connecter, pensez à ajouter Flash Builder aux exceptions de votre pare-feu.










