Est-il raisonnable aujourd'hui de réécrire entièrement son app iOS en Swift, le tout nouveau langage de développement dévoilé par Apple en juin 2014 ? Lyft a tenté l'aventure et se dit aujourd'hui satisfait du résultat.
Lyft est un système de covoiturage payant. Lancé à San Francisco en 2012, il est présent maintenant dans 60 villes américaines de 30 États. C'est le numéro 2 du secteur derrière Uber. Les conducteurs et leurs passagers se mettent aussi en relation au moyen d'une app pour iPhone.
Lyft a raconté à FastCompany son voyage en Swift, sans entrer dans les arcanes techniques du langage mais plutôt pour relater le déroulement de cette opération. Chris Lambert, le directeur technique de Lyft, a d'abord observé d'un oeil circonspect l'arrivée de ce langage et la perspective de l'utiliser pour l'app « Au tout début, on a vu ça sous l'angle d'une expérimentation, de quelque chose de très risqué ».
Évaluation en septembre
Un an plus tard, l'app a été revue de fond en comble à l'intérieur et elle fonctionne sans accroc majeur. Lyft a adopté Swift à 100% et juge son processus de développement plus efficace.
Initialement, un développeur de l'équipe a jaugé la faisabilité de cette reconversion et conclut qu'il était possible d'avoir une app réécrite de zéro, et fonctionnelle, avec les outils existants.
L'éditeur n'a pas réalisé cet effort pour la simple beauté du geste, c'était aussi un moyen de remettre à neuf une app dont les fondations se faisaient vieillissantes. Lyft est né en 2012, sur la bases d'un précédent service de covoiturage lancé plusieurs années auparavant. Une app iOS a donc été conçue en 2012 et reçu plusieurs évolutions au fil de la croissance de l'entreprise et de ses services.
Nous étions une entreprise très différente en 2012 lorsqu'on a commencé à travailler sur ça. On a, grosso modo, bricolé Lyft à deux en l'espace de 15 jours. Une bonne partie des "péchés capitaux" qui datent de cette époque nous suivent encore aujourd'hui. Mais c'est toujours ainsi que l'on commence.
Durant ces trois dernières années, la plupart du code avait été réécrit, explique Chris Lambert, le directeur technique, « toutefois certains gros morceaux essentiels faisaient de la résistance. On aurait fait une app très différente si on avait tout repris depuis le début. »
Le basculement sur Swift pouvait être l'occasion de le faire et de gommer les défauts accumulés dans l'app. Mais il n'y avait pas d'assurance absolue que cela fonctionne. Un développeur qui venait d'être embauché — Martin Conte Mac Donell — a donc été affecté à ce projet en septembre 2014.
Feu vert en janvier
Il a fait ses premières armes avec Swift et obtenu un prototype au bout d'un mois. Une version sommaire de l'app qui permettait de commander une voiture. Un premier jet qui s'est avéré aussi surprenant que prometteur « J'ai été capable d'être vraiment très productif sur une période temps assez réduite » dit-il.
Forte de la bonne impression de son développeur, la direction de Lyft a décidé, en janvier, de poursuivre l'aventure et d'y mettre plus de moyens. En mars, des développeurs supplémentaires ont été affectés au projet. Les deux versions Objective-C et Swift ont reçu en parallèle les mêmes nouvelles fonctions.
Basculement au printemps
En juin dernier, tous les développeurs iOS de l'entreprise — leur nombre n'est pas donné — travaillaient sur la version en Swift. Il a fallu 2 à 3 semaines en moyenne à chacun pour qu'il s'acclimate à ce langage (depuis l'année dernière, Apple y a aussi apporté de multiples améliorations et lancé la version 2 à la WWDC 2015, ndr).
Pendant cette période, l'application Lyft a été réaménagée pour améliorer son fonctionnement lorsqu'on avait réservé un véhicule. Ce qui a occupé quelques personnes pendant un peu plus d'un mois, a pu être effectué en Swift par un seul ingénieur en une semaine, constate Martin Conte Mac Donell.
La précédente app représentait environ 75 000 lignes de code tandis que sa cousine en Swift, pour les mêmes fonctions, a été ramenée à un moins d'un tiers de ce volume. Un allègement bénéfique pour la relecture et la maintenance du logiciel.
Apple a suivi de près cette opération de réécriture, les concepteurs de Swift travaillaient avec leurs homologues chez Lyft : « On était l'un des plus gros projets de réécriture en Swift, ce qui nous a naturellement confrontés aux plus gros écueils » poursuit Martin Conte Mac Donell.
Les gens d'Apple ont utilisé les retours sur ce projet pour corriger au fur et à mesure leur propre langage. Il y avait des échanges réguliers entre Lyft et Apple lorsque quelque chose bloquait. Une assistance toute particulière dont tous les éditeurs engagés dans le même processus ne peuvent évidemment bénéficier.
Une fois l'app suffisamment avancée, elle a commencé à être testée par des passagers et conducteurs (conducteurs parmi lesquels se trouvent justement des salariés de Lyft qui mettent ainsi du beurre dans les épinards tout en testant leur service). Un bêta-test à petite échelle qui a permis de repérer quelques bugs ici ou là.
L'étape suivante était la plus périlleuse puisqu'il s'agissait de mettre la nouvelle app entre les mains de tous les utilisateurs. Un quitte ou double, explique Chris Lambert en comparant avec son expérience sur Android.
L'une des problématiques c'est que vous ne pouvez pas distribuer la mise à jour d'une app iOS de manière graduelle. Android a un petit avantage sur ce point, vous pouvez décider de lancer auprès de 1%, 5% ou 10% des utilisateurs. Avec iOS, c'est tout ou rien. Si c'est disponible, ça l'est pour tout le monde. Ce qui met une pression importante sur les ingénieurs. Tous les utilisateurs qui ont activé la mise à jour automatique recevront la nouvelle app dans l'heure qui suit.
La version Swift de Lyft — 3.1 — a été lancée le 16 juillet, avec comme seule indication que tout avait été refait mais sans citer spécifiquement le langage. Aucun problème majeur n'est venu entacher ce lancement, à en croire ses auteurs.
L'app suit un rythme de révisions quasi hebdomadaire. Les notes de versions des 7 dernières mises à jour montrent qu'il s'agit uniquement de correctifs. Cependant, c'était déjà le cas avant cette mouture en Swift. Les nouvelles versions de Lyft ne se reposaient jamais très longtemps sur l'App Store. La refonte n'a pas empêché cette stratégie de révisions rapides.
Désormais que Lyft a son app en Swift, le plus gros du travail est fait, estime Conte Mac Donell. L'entreprise est maintenant sur les rails pour suivre la direction qu'entend donner Apple : «Utiliser des outils modernes nous ouvre les portes pour tout ce qu'Apple a en tête — nouvelles plateformes, nouveaux appareils. Tout va tourner autour de Swift ». Pour cet éditeur, il ne sera pas nécessaire de courir pour se mettre au diapason de ces éventuelles nouveautés.
Source : FastCompany