Développement

Frameworks. Ruby on Rails et Seaside concurrencent PHP pour développer des applications web 2.0 interactives et offrant une grande richesse de fonctionnalités.
L'essor du Web 2.0 a stimulé le recours à de nouveaux outils de développement. Parmi ces derniers, les librairies Ajax bien sûr, Seaside, une plate-forme écrite en Smalltalk, et surtout Ruby, un langage interprété orienté objet, ainsi que Ruby on Rails, un framework basé sur le modèle MVC (Modèle Vue Contrôleur). Ce dernier rencontre un tel succès qu’une conférence, Paris on rails, lui a été entièrement dédiée en novembre dernier
Ruby, l’essayer c’est l’adopter
Conçu par le Japonais Yukihiro Matsumoto, dit «Matz», le langage Ruby plaît tant aux développeurs qu’ils ne tarissent pas d’éloges à son propos dès qu’ils y ont goûté. Responsable du développement de MNC, une entreprise lausannoise active dans la fourniture de services mobiles qui compte la TSR, PostFinance et la ligue de hockey parmi ses clients, Guillaume Cottenceau emploie Ruby depuis 2001. Et en est, lui aussi, extrêmement satisfait.
«D’après moi, les forces principales de Ruby sont son expressivité, sa souplesse et son élégance. Il est expressif parce qu’un programme Ruby est compact – la manipulation des données est facilitée grâce à la présence de beaucoup de sucre syntaxique - tout en restant lisible. Il est souple parce qu’on peut programmer dans un style procédural, fonctionnel ou objet (ou le plus souvent dans un mélange des trois, en choisissant ce qui convient le mieux au cas précis). Il est élégant parce que tout est objet en Ruby, même les types primitifs tels que les nombres. Les programmes sont donc très cohérents du point de vue des données.»
Il lui reconnaît néanmoins encore quelques faiblesses dues à la relative jeunesse du langage qui n’a que dix ans, soit moitié moins que Perl, par exemple. «On peut citer essentiellement un manque de documentation dans quelques domaines, et une certaine lenteur. Mais ces deux aspects sont susceptibles d’être corrigés rapidement.» Ainsi, la communauté Ruby place de grands espoirs dans l’écriture d’un nouvel interpréteur bien plus performant, qui devrait être disponible en 2007 avec la sortie de Ruby 1.9.
Un groupe romand d’utilisateurs Ruby
Guillaume Cottanceau est très actif aussi dans la communauté Ruby elle-même et participe à un projet qui se propose de créer des «bindings» Ruby pour GTK2 dans le cadre du projet Ruby-Gnome. Il a créé aussi Pleac, qui visait à reprogrammer dans divers langages de programmation le contenu du fameux Perl Cookbook de O’Reilly, et Booh, un générateur d’album web statique pourvu d’une interface utilisateur très orientée vers la productivité. Plus près de chez nous, il est le principal instigateur du groupe romand d’utilisateurs Ruby qui s’est créé fin novembre, compte déjà une quinzaine de membres et accueille aussi les développeurs de France voisine.
L’agilité de Ruby on Rails
Spécialisée dans le développement d’applications en favorisant la pratique des méthodologies Agiles et l’intégration de produits Open Source, la société genevoise Hortis, qui emploie 32 ingénieurs, a choisi Ruby on Rails pour effectuer le développement des applications web. Elle dispense des formations avec la collaboration de Richard Piacentini, fondateur de railsFrance, traducteur de l’ouvrage de référence «Agile web development with rails» et organisateur de la conférence «Paris on Rails» dont elle sera un des sponsors pour l’édition 2007 aux côtés d’IBM et de Telecom Italia… Elle s’apprête aussi à mettre en ligne le portail communautaire Suisseonrails.
Avec RoR, Hortis a développé notamment une application web de relevé d’activité pour un département de ressources humaines. Elle prépare aussi un plugin RoR Open Source pour l’archivage et l’analyse de métriques du code source (couverture de code…), dans l’objectif d’une certification CMMi.
Simon Brandhof, consultant senior RoR, souligne que la prétention du framework de permettre de développer des applications web de qualité est mission réussie. «Plutôt que d’être une solution générique pensée par des comités qui veulent régler 100% des besoins (J2EE), RoR est une réponse pragmatique et Open Source aux problèmes rencontrés dans la majorité des applications web. Il ne tombe pas pour autant dans l’extremisme du développement “quick and dirty” à la PHP.
»Pour cela RoR applique scrupuleusement des valeurs et des pratiques agiles. La première valeur est la simplicité. La concision et l’expressivité du langage Ruby sont couplées à une architecture MVC (Modele Vue Controller) simple et structurée. Le mapping objet/base relationnelle (ORM) devient quasiment trivial avec la librairie ActiveRecord. De même, le système de template RJS (Remote JavaScript) et l’intégration des librairies “prototype” et “script.aculo.us” permettent de développer des applications Ajax sans écrire une seule ligne de Javascript!
»L’application de pratiques comme DRY (Don’t Repeat Yourself) ou Convention over Configuration (configuration minimale, réduite à quelques paramètres) favorisent la concision et la maintenance du code. On trouve par exemple un tutorial d’Eyrolles pour réaliser, en 62 lignes de code, une plate-forme de blog complète incluant la gestion des commentaires, le tout avec une base de données. Or, on sait, depuis des dizaines d’années, que le nombre de bugs est proportionnel au nombre de lignes de code…
»L’application est d’autant plus maintenable que RoR force l’écriture des tests unitaires et des tests fonctionnels (avec par exemple la pratique du Test Driven Development, qui consiste à écrire les tests avant le code). Les tests sont directement exécutés dans un environnement séparé – initialisé par des “fixtures” – qui ne rentre pas en conflit avec l’environnement de développement.
»RoR est également focalisé sur la productivité du développeur. De nombreux outils automatisent les tâches les plus classiques comme la génération du squelette de l’application, la création de formulaires, la gestion de la base de données, des erreurs ou des logs. Une première version de l’application est visible en très peu de temps, même avec des développeurs peu expérimentés.
»Ce framework intègre des solutions de mail, de web services (REST), d’ORM et de logging. D’ailleurs, on a rarement vu un environnement aussi complet (tests, logs, debuggeur, e-mail, web-services REST…). Il reste toutefois extensible grâce au nombre impressionnant de plug-ins Rails (comme le Single SignOn) et de librairies ruby (XML, SNMP…).
»RoR bénéficie également du support d’une communauté de plus en plus grande. Les blogs et les forums complètent une documentation déjà très complète (avec la visualisation directe du code source de RoR).»
Plus performant qu’on veut bien le dire
Simon Brandhof balaie d’un revers de la main la critique, si souvent formulée, portant sur la lenteur d’exécution de RoR. «Il existe de très gros sites comme www.basecamphq.com, madame.lefigaro.fr, www.scoopeo.com ou www.eins.de, qui délivrent en moyenne 1,2 million de pages par jour. Les serveurs applicatifs comme mongrel ou lighttpd tiennent très bien les montées en charge et peuvent être configurés en cluster pour la gestion des pannes (fail-over).»
Il regrette toutefois qu’il y ait si peu de compétences RoR sur le marché suisse et reconnaît que les solutions d’hébergement ne sont pas légion, du moins en Europe. «Les précurseurs sont Telecom Italia, typhon (en France) ou SwissCenter. A noter que les applications RoR pourront bientôt être déployées dans les serveurs applicatifs J2EE (avec JRuby), pour une adoption plus simple en entreprise.»
En résumé, conclut-il, «le développeur RoR se concentre sur le développement des fonctionnalités et laisse les détails techniques au framework. Il en résulte des sites qui proposent des interfaces riches en fonctionnalités, pourvues d’une forte interactivité, illustrant bien les services dits “Web 2.0”. J’ajouterai enfin que l’usage de cet outil s’envisage plus facilement sur de nouveaux projets que sur des projets existants dont on veut réutiliser la base de données.»
Seaside, un environnement de développement complet
Auteur, en 2003, de la première présentation européenne de Seaside, Lukas Renggli a découvert ce framework à l’Université de Berne, dans le cadre d’un Master. Il avait projeté initialement d’écrire une interface utilisateur. Devant l’ampleur de la tâche, il a jugé préférable de réduire ses ambitions et choisi de collaborer plutôt au développement du code de Seaside, un framework écrit en Smalltalk par le Canadien Avi Bryant pour ses propres besoins.
«J’ai tout de suite été emballé par ce framework, commente-t-il. Seaside vous permet de développer vos applications sous la forme d’une arborescence de composants objets, chacun d’entre eux encapsulant une partie de la page, pouvant s’appeler comme des sous-routines et pouvant être réutilisés dans d’autres pages ou dans d’autres applications. Seaside vous permet aussi d’exprimer un workflow complexe multipage en une seule méthode. Il modélise toute la session utilisateur dans du code contrôlé par un flux naturel et linéaire.
»Cette plate-forme intègre les technologies web 2.0, dont Ajax, Comet et RSS, et un environnement de programmation complet incluant des outils de débogage. Les développeurs disposent en outre d’un mode de visualisation spécial qui leur permet d’inspecter les composants d’une page et de les modifier depuis un navigateur internet, sans devoir lancer manuellement la recompilation ou faire redémarrer le serveur.
»Ainsi, Seaside permet de développer des applications web avec énormément d’efficacité. On a davantage l’impression de créer une interface utilisateur qu’une application web avec tous les inconvénients inhérents à ce type de développement.»
La richesse de l’outil se paie au prix fort en termes de ressources. «Suivant l’application, il faut prévoir 2 Mo de mémoire par session utilisateur», précise-t-il.
De nombreux développements
Depuis qu’Avi Bryant est occupée à bâtir DabbleDB, un gestionnaire de base de données pour Seaside, Lukas Renggli est considéré comme un expert dans la communauté. Et travaille dur avec cette équipe pour pouvoir sortir la version 2.7. Il a collaboré aussi au développement de Pier, un CMS reposant sur Seaside, du framework Magritte qui permet de générer automatiquement des vues, des rapports, etc., d’une couche Comet pour Seaside, ainsi qu’à l’intégration de la bibliothèque Javascript script.aculo.us.
Depuis plus de trois ans, il est employé par netstyle.ch, une ssii bernoise qui effectue tous ses développements d’applications web avec Seaside, en particulier pour des banques, des compagnies d’assurances, des imprimeurs et des universités. Avec ESUG, le groupe des utilisateurs de Smalltalk, netstyle.ch a mis en place un plan d’hébergement Seaside gratuit pour les sites à but non lucratif.
PHP conserve des atouts
Les développeurs qui restent fidèles à PHP sont prompts à souligner que leur environnement conserve de sérieux atouts. Ainsi, l’offre d’hébergement est nettement plus étoffée, très bien échelonnée sur le plan des tarifs et des performances et livrée clés en main dans tous les plans mutualisés. De même, le bassin de développeurs déjà formés est beaucoup plus vaste, tout comme la bibliothèque de scripts que l’on peut intégrer aisément à une application.
A leurs yeux, le langage lui-même est plus versatile puisqu’il permet d’allier des approches objet et procédurales. Il ne cesse de surcroît d’évoluer grâce à l’apport d’une communauté très dynamique. Des frameworks, dont Zend Framework, Cake PHP, Symf ony, Seagull et Zoop, ont vu le jour. Ils se conforment, eux aussi, au modèle MVC et supportent, pour certains d’entre eux, le mapping ORM. En réalité, leur nombre s’accroît si vite que ce pourrait être un handicap si aucun ne parvenait à faire l’unanimité autour de lui.
Marie-José Jones
www.mjjones.net