Application NeoTag pour les transports en commun de l'aire grenobloise
Postulats
- L’application officielle des transports en commun de la région grenobloise (connue sous le nom de “Appli M” et gérée par “M réso”, la marque commerciale pour les transports en commun dans la région grenobloise sous l’égide du SMMAG) est lente. Il y a pas mal d’écrans de chargement qui durent environ 5 secondes, ce qui ne rend pas l’expérience utilisateur agréable sur téléphone. La faute à M réso qui a codé l’Appli M en Angular (framework Javascript) 1, et qui distribue sur Android et iOS des applications WebView. Cela veut dire que sur téléphone, lorsqu’on utilise l’Appli M, on lance en fait un navigateur web qui charge plein de code HTML, CSS et Javascript issus d’Angular. En d’autres termes, au lieu de coder de vraies applications Android / iOS avec les outils dédiés et optimisés pour les systèmes d’exploitation des téléphones (Java, Kotlin, Swift…), M réso a fait le choix de distribuer des applications lentes qui doivent charger un navigateur web et tout ce code Typescript d’Angular pour que l’application marche. Certes cela simplifie la tâche aux développeurs de M réso qui n’ont qu’une seule application Typescript à coder et maintenir, mais à la fin les utilisateurs ont une application non optimisée pour l’usage sur téléphone. Dommage ;
- Un bon point pour M réso est que les données du SMMAG (par exemple liste des lignes de transports en commun, horaires, itinéraires, prochains passages…) sont ouvertes au public via une API disponible sur https://data.mobilites-m.fr/donnees. La licence est permissive (ODbL) ;
- Je n’ai aucun expérience en développement d’applications iOS, et un peu avec Android Studio. Je trouve que c’est une horreur de coder des applications Android (entre autres, quasi obligation d’utiliser un IDE donné qui a besoin de pas mal de ressources) et mon langage de programmation du moment, Go, avec sa simplicité et bonne performance, m’a rendu plus ou moins allergique à Java, Kotlin ou même Dart.
Conséquences
J’ai codé une application Fyne qui interagit avec l’API officielle de M réso. Fyne est un framework Go permettant de coder des interfaces utilisateurs dans ce langage de programmation. Mon application ressemble à cela :
Le code source est disponible ici.
NeoTag n’est pas performante sur téléphone
Je n’ai pas réussi à combler les problèmes mentionnés ci-dessus :
- Mon application est lente et lag lorsqu’elle affiche les itinéraires. Je ne suis pas sûr de la cause mais je pense que cela vient des nombreux objets géométriques (cercles, rectangles de couleurs…) ;
- Ma solution utilise un framework externe et non les langages officiels pour coder une application Android / iOS ;
- Il manque beaucoup de fonctionnalités dans mon application qui ne fait que rechercher des itinéraires.
Un espoir avec d’autres applications déjà existantes ?
- J’aime beaucoup l’UI de Transportr mais depuis quelques temps elle ne marche pas pour les réseaux de transports en commun français ;
- Bimba est une autre application Android avec laquelle on peut utiliser l’API de Transitous (agrégateur de données de transports en commun incluant Grenoble entre autres). Dommage que lorsqu’on recherche un arrêt, Transitous cherche dans la liste de tous les arrêts que l’API connaît, et il y en a énormément (ne se limite pas à l’aire grenobloise).