1 Introduction

1.1 Découverte de R et de Shiny

Shiny est un package R, développé par RStudio, qui permet la création de pages web interactives sur lesquelles il est possible de réaliser toutes les analyses / actions disponibles sous R.

J’ai commencé à apprendre la langage R au début de l’année 2018 dans le cadre du cours “Analyse des données” alors que j’étais en deuxième année de licence Economie et Gestion parcours Economie de l’Université d’Angers. On utilisait alors R pour réaliser les analyses factorielles telles que l’Analyse en composantes principales (ACP), l’Analyse des correspondances multiples (ACM), l’Analyse factorielle des correspondance (AFM) avec le package FactoMiner.

C’est dans les faits très récemment que j’ai commencé à apprendre Shiny, vers septembre 2019. J’apprenais sur le tas sans réellement avoir un projet spécifique en tête.
Le premier projet que j’ai réalisé avec Shiny est celui d’un moteur d’extracteur de contenu web (web scraping) du site Indeed. J’avais auparavant construit le webscraper avec Python pour mon utilisation personnelle, extraire les offres d’emplois et les stocker dans un tableau de données Pandas (librairie Python) ensuite les analyse et étudier des tendances.

J’ai vu l’intérêt de créer une interface utilisateur pour que des personnes puissent utiliser mon programme sans avoir à installer quoi que ce soit. J’ai pensé à utiliser des frameworks Python comme Flask ou Django mais créer une application avec ces frameworks nécessite une connaissance du HTML, du CSS et peut-être du Javascript et surtout il est important d’utiliser un langage de templating comme jinja pour générer dynamiquement les pages. Il était donc tout à fait enviageable de créer l’application avec ces frameworks mais le temps du développement sera grand.

J’ai donc pensé à Shiny, je pouvais donc capitaliser ma connaissance du langage R pour développer facilement une application sans avoir à me soucier de toutes les spécifications techniques qu’imposaient les frameworks Python.
J’ai donc décider de créer l’interface pour mon extracteur de contenu avec Shiny et en quelques lignes de code R le résultat est extraordinaire.

J’ai profité du riche écosystème de packages R pour développer l’application notamment du package reticulate pour faire appeler depuis R les classes et fonctions que j’aie définies en Python. C’est très bluffant ! J’ai mis sur GitHub

1.2 Motivation

J’ai décidé d’écrire ce mémoire tout d’abord pour servir de référence au futur moi quand je voudrais développer une prochaine application en shiny. Une chose que j’ai apprise avec les langages de programmation et les packages c’est qu’il est impossible de maîtriser toutes les fonctions, tous les paramètres, que prennent les fonctions, tous les détails d’implémentation … par coeur. Bien souvent lorsqu’on écrit du code, on se réfère à la documentation des packages, des fonctions pour réaliser ce qu’on veut faire.

Le problème est que si on n’utilise pas souvent ce package ou certaines fonctions on risque d’oublier comment on les utilise et on se retrouve à chaque fois à réinventer la roue : se référer à la documentation, chercher sur Google, Stackoveflow …

Il importe donc de garder des traces des cas d’utilisation qu’on a faites des packages pour vite se référer dans le futur. L’idée est de réduire le stress et de savoir que par le passé on a utilisé ce package et au besoin consulter ce qu’on fait.

L’autre motivation pour ce travail est permettre aux personnes débutant avec shiny de voir le chemin que j’ai pris pour développer une application. Bien que shiny ait une bonne documentation et une bonne Galerie d’application avec des demos j’ai trouvé assez difficile de débuter le développement de mon application à savoir par exemple faut-il partir sur un fluidPage, un navbarPage ou encore un basicPage. Bien souvent je me retrouve à adapter du code existant pour arriver à peu près à ce que je veux réaliser sans avoir l’impression que je sais ce que je fais. Ainsi le but de ce mémoire est aussi de dissiper tout doute que le débutant en shiny peut avoir. Le but n’est pas de réécrire la documentation de shiny mais plutôt de partager mon expérience et vous aider le plus possible à développer vos applications.

Aussi je trouve qu’il y a très peu de documentation en ce qui concerne la personnalisation de l’interface utilisateur. A defaut plusieurs applications shiny que je vois se contentent de l’apparence basique basée sur Bootstrap, j’aimerais donc partager mon expérience dans la personnalisation de l’interface utilisateur : création du page d’accueil en HTML, CSS, personnalisation des boutons, touches …

Au moment où j’écris cela, je ne suis pas moi-même expert en personnalisation mais ce sont des choses que j’apprendrai.

1.3 Références

Kevin Ushey, JJ Allaire and Yuan Tang (2020). reticulate: Interface to ‘Python’. R package version 1.15. https://CRAN.R-project.org/package=reticulate