Découvrez Rlinguo, une application mobile native avec du R

Author : Colin Fay
Categories : développement, javascript, mobile
Tags : innovation, mobile, rlinguo
Date :

TL;DR

Rlinguo est une application mobile révolutionnaire qui utilise R en backend pour gérer sa logique métier.

Disponible dès maintenant en téléchargement :

Oui, vous avez bien lu : le futur, c’est maintenant, et R peut tourner sur votre téléphone portable.

Il était une fois…

Je développe des applications web avec R depuis un certain temps maintenant — probablement plus longtemps que je ne voudrais l’admettre. Chez ThinkR, nous créons des applications {shiny} depuis un moment, allant de petits widgets pour les chercheurs à des tableaux de bord à grande échelle utilisés par des milliers de banquiers. Mais le développement web ne s’est pas limité à {shiny} pour nous. Nous avons également conçu des API REST, des tableaux de bord flex/quarto et des documents dynamiques générés avec R. Ces dernières années, nous avons exploré différentes façons de livrer des produits de données à nos clients, principalement via des applications {shiny}, mais aussi sous d’autres formats. Parmi tous ces formats, une plateforme nous a toujours échappé : le mobile. Oui, les applications {shiny} peuvent être optimisées pour un usage mobile, et les tableaux de bord JavaScript s’affichent correctement sur un téléphone. Mais ce ne sont pas des applications mobiles natives. Elles ne peuvent pas être installées via un store, n’ont pas accès aux API du téléphone, et les rendre fonctionnelles hors ligne reste un défi majeur.

{shiny} sur mon mobile

« {shiny} sur mon mobile » est une demande récurrente de nos clients depuis un certain temps. Et on comprend pourquoi : vous pouvez avoir un modèle extraordinaire ou un processus efficace de manipulation de données, et vous avez besoin que les gens y accèdent sur leur smartphone, même en pleine forêt sans connexion réseau (oui, c’était une demande réelle d’un de nos clients). Pourtant, notre réponse a toujours été la même : « Désolé, ce n’est pas possible. » {shiny} repose sur un serveur, et comme R ne peut pas s’exécuter directement sur un téléphone, un serveur distant est nécessaire. Cela signifie qu’une connexion internet est obligatoire. Et non, vous ne pouvez pas publier cela sur un app store.

Ces derniers mois, quelque chose de nouveau est apparu — une avancée que les passionnés de R attendaient depuis des années : R, compilé pour WebAssembly. Si vous ne connaissez pas WebAssembly, imaginez-le comme une manière d’exécuter R à l’intérieur de JavaScript. Si vous en êtes déjà familier, vous savez que c’est un peu plus subtil, mais j’épargnerai les détails techniques pour le moment. Cet outil s’appelle webR.

Le moment « Et si ? »

J’expérimente avec webR depuis plusieurs mois, principalement via Node.js. Durant cette période, j’ai développé deux outils, webrcli et spidyr, conçus pour des projets intégrant R et Node.js. Bien que ces outils soient prometteurs pour révolutionner le développement d’applications, ils restent liés à une approche web distante : R s’exécute sur un serveur, dans un processus Node.js. Il n’y a donc toujours pas de fonctionnalité hors ligne, ni de déploiement sur un app store, ni de caractéristiques natives du mobile.

Cet été, nous avons reçu une énième demande pour « {shiny} sous forme d’application mobile native ». Alors que nous nous apprêtions à répondre comme d’habitude, j’ai eu un moment « Et si ? ». Et si nous pouvions utiliser webR dans un framework JavaScript qui crée des applications mobiles ? Avec cette idée, nous avons développé une preuve de concept (PoC) : une application capable d’exécuter une ligne de code R. Une telle application n’avait jamais été réalisée auparavant, mais nous pensions que c’était possible.

Le client a finalement décidé de ne pas poursuivre le projet. Créer une application mobile nécessite des compétences allant au-delà de celles des développeurs {shiny}, et ils avaient besoin d’un logiciel qu’ils pouvaient maintenir eux-mêmes. Néanmoins, ayant créé une PoC, nous avons décidé de nous lancer pleinement dans le développement d’une application complète, conviviale, légèrement ludique et distribuable via les app stores, pour prouver que c’était faisable.

En quelques semaines, l’équipe de ThinkR a concrétisé cette vision. Margot a structuré le projet et rédigé le concept (plus d’infos dans un prochain article), Arthur a créé la maquette de l’application avec Excalidraw et Figma, démontrant ses talents exceptionnels en UI, et moi (Colin) me suis concentré sur le développement backend (principalement parce que mes compétences en design sont… limitées, et que le frontend n’est pas ma tasse de thé). Le résultat de cette aventure est Rlinguo, une application mobile native qui fait tourner R. Oui, vous avez bien lu — R peut maintenant s’exécuter sur votre téléphone, et cette application est une preuve de concept devenue réalité.

L’avenir de R

Rlinguo est un jeu amusant et décalé qui met au défi les utilisateurs d’identifier à quel package appartient une fonction R donnée. Même si cette compétence n’est pas forcément la plus pratique — savoir que mean() est dans {base} alors que median() est dans {stats} ne fera pas forcément de vous un meilleur développeur (même si cela m’irrite toujours qu’elles soient séparées).

L’application prouve plusieurs capacités innovantes :

  • R au bout des doigts, directement dans votre poche : exécution de commandes R comme sample() et runif().
  • Fonctionnement hors ligne : Rlinguo fonctionne même sans connexion internet, utile en pleine nature.
  • Flux de travail data-science : données locales stockées en SQL, traitées par R, puis affichées en JavaScript.
  • Intégration de packages R : feedback avec praise::praise() en cas de bonne réponse.
  • Expérience utilisateur soignée : une interface agréable et intuitive.
  • Déploiement sur les app stores : preuve que c’est faisable pour des applications basées sur R.

Rlinguo est disponible dès maintenant sur l’Apple Store et Google Play. C’est une première étape vers une nouvelle vague d’innovations.

Vous avez un cas d’usage ?

L’idée d’exécuter R sur un téléphone a beaucoup de potentiel. Vous avez un cas d’usage concret ? Parfait, discutons-en !


Comments


Also read