· ToolsAndTech,AllAboutData

Nous ne nous étendrons pas sur une présentation détaillée de R, langage de programmation très complet et principalement dédié aux statistiques (plus de détails ici), mais si vous ne connaissez pas déjà, ça vaut la peine d'y jeter un œil ;-)

Nous allons ici parler d'un package R en particulier, package très utile car il permet le calcul et la publication de résultats statistiques dynamiques sur le web : il s'agit du package "shiny".

Shiny : qu'est-ce que c'est ?

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.

Sa grande force est le fait qu’il n’y a absolument pas besoin de connaître ni HTML, ni CSS, ni JavaScript : tout est programmé uniquement en R !

C'est cela qui en fait un atout indéniable en faveur de R comme outil indispensable pour tout "data scientist" qui se respecte ;-)

Shiny : à quoi ça ressemble ?

Avant de plonger les mains dans le cambouis, voici un petit aperçu des possibilités offertes par le package "shiny" :

Shniy : comment ça fonctionnne ?

Après avoir au préalable installé le package "shiny" dans R, il faut créer son application shiny qui sera composée de deux fichiers : un fichier "ui.R" et un fichier "server.R".

  • La partie "ui" : User Interface script, contrôle la mise en page et l’apparence de l’application.
  • La partie "server" : Server script, contient les instructions dont l’ordinateur a besoin pour construire l’application.

Un premier exemple pas à pas

On commence par créer deux fichiers : "ui.R" et "server.R", dans un même dossier : appelé par exemple "mon_appli".

Pour lancer votre application en local, deux options :

  • cliquer sur le bouton "Run App" en haut à droite de l'IDE "RStudio" si vous l'utilisez,
  • ou exécuter la commande suivante : runApp("~/mondossier/mon_appli")

Voilà à quoi ressemble l'application ainsi générée :

Ce qu'il faut retenir ici c'est que les entrées seront lues depuis la partie UI, puis envoyées à la partie server pour être traitées, et le résultat de ce traitement sera ensuite restitué dans la partie UI. Tout ceci se produit de manière dynamique grâce aux fonctions réactives prévues dans "shiny", telles que par exemple :

  • renderText() : pour restituer une chaîne de caractères,
  • renderPlot() : pour restituer des graphiques de type "plot",
  • renderTable() : pour restituer un tableau,
  • etc

Pour plus de détails sur le fonctionnement de la réactivité dans "shiny", voir par exemple ici

Nous allons maintenant reprendre notre premier exemple et le modifier légèrement afin d'y ajouter notamment un histogramme créé dynamiquement.

L'application ainsi générée ressemble à présent à ceci :

Il existe un grand nombre d'éléments de contrôle tels que "textInput()" et "sliderInput()" vus ici, vous pouvez en trouver une galerie ici.

L'application que nous venons de présenter n'est qu'un exemple basique de ce qui peut être fait avec le package "shiny", afin de vous donner un avant-goût de la puissance apportée par ce package, qui permet de générer des interfaces web dynamiques uniquement en quelques lignes de code R !

Voici un autre exemple d'application "shiny" plus complexe (réalisée notamment avec le package "shinydashboard") pour vous donner un aperçu de ses immenses possibilités : demo.dacta.fr.

Et ensuite ? Passez au déploiement !

Une fois qu’on est satisfait de son appli "shiny", il va falloir procéder à son déploiement, c’est-à-dire la mettre sur internet (pour l’instant tout avait été fait en local). Pour cela plusieurs options :

  • soit passer par la plateforme "shinyapps.io" mise à disposition par RStudio (très pratique si on veut faire des tests ou partager rapidement son appli), qui propose notamment une offre d'hébergement gratuite pour 5 applications "shiny" actives. (voir exemple sur l'article de Benjamin Guedj sur le blog de artfact)
  • soit passer par l’installation d’un serveur shiny (tout à fait faisable sur une instance AWS par exemple).

Pour aller plus loin

Ce que nous avons vu ici n'est qu'un petit aperçu des multiples possibilités offertes par ce package "shiny", dont le champ d'applications est très vaste.

En effet, de nombreux packages viennent compléter son utilisation tels que par exemple des packages permettant la réalisation de graphiques dynamiques JavaScript dans R (ex: "rAmCharts", "ggvis", …) ou bien encore le package "shinydashboard" qui propose un design de "tableaux de bord" par défaut.

Il est également possible de compléter les fonctionnalités de R/shiny avec des widgets html codés en R, ou bien d'ajouter soi-même des éléments directement codés en HTML, CSS ou JavaScript.

Petite remarque assez intéressante : il est aussi possible d'intégrer facilement "Google Analytics" sur une application "shiny" déployée, afin d'analyser les différents visiteurs (voir par exemple ici).

Enfin, nous terminerons avec une liste de ressources qui pourront vous servir lors de vos futures créations d'applications "shiny" :

En espérant que cela vous aura donné envie de tester ce package, qui est pour moi un fort argument dans le choix de R comme langage pour tout projet "data". Et pour ceux qui ont déjà créé de chouettes applications "shiny", n'hésitez pas à partager vos liens dans les commentaires ! ;-)

All Posts
×

Almost done…

We just sent you an email. Please click the link in the email to confirm your subscription!

OKSubscriptions powered by Strikingly