À la découverte de Shiny

Shiny, shiny, vous avez-dit “Shiny” ? Késako ? Rassurez-vous, vous êtes au bon endroit : même si cela sonne comme le nom d’un shampooing pour cheveux brillants, Shiny est à l’heure actuelle un must-know du “R World”. Focus sur ce package incontournable.

Shiny, qu’est-ce que c’est ?

Envie de partager vos plus beaux projets R ? Ah, ce que l’on vous comprend ! Eh bien, bonne nouvelle : les équipes de RStudio ont développé Shiny, un package qui vous permet de créer des applications dynamiques pour le web… incontournable pour partager avec le monde entier ! Facile d’accès dans sa version “basique” (aka, sans trop mettre la main dans le design), ce package crée des applications web, sans avoir à toucher au HTML, ni au CSS..

Shiny, comment ça marche ?

Bon, c’est bien beau tout ça, mais concrètement, comment ça se passe ? Tout commence par l’installation (à noter que le package est préinstallé dans RStudio) :

install.packages("shiny")
library(shiny)

Une fois la librairie chargée, vous découperez votre application Shiny en deux éléments, une partie “ui” (pour User Interface, soit tout ce qui sera affiché à l’utilisateur), et une partie “server” (qui contiendra toutes les commandes qui s’opèreront côté serveur, dans R).

Commençons par la partie “ui”. Il s’agit de la portion de votre code qui contiendra les éléments graphique de l’interface de votre application Shiny : d’abord les éléments de mise en page (titre, nombre et taille des éléments, boutons et sliders, etc.). Mais surtout, cette partie contiendra les composantes de votre application : des objets qui communiqueront avec la partie serveur, pour venir afficher ces éléments (tableaux, dataviz, code…) dans votre interface graphique.

UI

On ne vous le répétera jamais assez : rien de mieux qu’un exemple pour bien comprendre ! Alors, pour découvrir Shiny, nous allons travailler ensemble sur la création d’une application (très simple) qui vous permet de voir les X premières lignes d’un des jeux de données proposés, X étant un chiffre entré par l’utilisateur. Commençons par UI :

# Définition de l'interface utilisateur de notre application 
ui <- shinyUI(fluidPage(
  
  # Le titre de votre application
  titlePanel("Aperçu d'un dataset"),
  
  #Indiquer le 'layout' de votre application : autrement dit le squelette visuel de l'application 
  sidebarLayout(
    #Composants de la région gauche de l'application 
    sidebarPanel(
      #Ici, nous insérons un champ pour entrer un chiffre, ainsi qu'un menu déroulant
      textInput(inputId = "lignes", 
                  label = "Combien de lignes voulez-vous voir ? ", 
                  value = 10), 
      selectInput(inputId = "labs", 
                  label = "Dataset", 
                  choice = c("cars","rock","beaver1", "sleep")
                  )
    ),
    
    #Ici, nous indiquons l'élement qui sera présent dans la fenêtre principale : l'element "dataset", qui est un graph 
    mainPanel(
      tableOutput("dataset")
    )
  )))

Server

Penchons-nous maintenant sur la partie serveur. C’est ici que vous entrerez tout votre code R, qui s’exécutera avant tout affichage de votre application. Autrement dit, c’est lui qui crée les éléments qui seront affichés dans l’interface. C’est dans cette partie que sont appelées les composantes.

server <- shinyServer(function(input, output) {
  #On retrouve ici l'élement "dataset", qui communique avec ui par 'output'. 
  output$dataset <- renderTable({
    #Nous imprimons les éléments d'après les données en entrée : ces derniers sont appellés avec `ìnput` puis le nom de la composante de ui (ici 'labs' et 'lignes')
   if(input$labs == "cars"){
     print(head(cars, input$lignes))
   } else if(input$labs == "rock"){
     print(head(rock, input$lignes))
  } else if(input$labs == "sleep"){
     print(head(sleep, input$lignes))
  } else {
     print(head(beaver1, input$lignes))
   }
  })
})

Enfin, pour voir votre application en local, c’est très simple.

shinyApp(ui, server)

Une fenêtre s’ouvre, et vous pouvez désormais admirer votre application !

Shiny, un peu plus loin

Vous vous en doutez, il est possible d’aller beaucoup plus loin que cette première application, notamment en terme de design (mais pour cela, il faudra peut-être mettre un peu les mains dans le HTML et/ou dans le CSS). Vous pouvez également charger des thèmes préfaits, par exemple pour réaliser des tableaux de bords. Et bien sûr, au delà du visionnage en local, il est possible de déployer votre application sur le web : soit en passant par https://www.shinyapps.io/, soit en installant votre propre serveur — une solution de choix en contexte pro. Mais tout ça c’est une autre histoire, peuplée de Shiny Server et de Shiny Proxy… et nous en reparlerons plus tard !

Vous avez envie de créer vos apps, mais vous êtes un peu perdu ? La solution : appelez-nous, nous vous proposerons une solution de développement Shiny sur-mesure. Et, si vous tenez à le faire par vous même, nous avons la formation qui vous convient ! Et surtout, n’oubliez pas d’imprimer, de plastifier et de garder toujours sous le coude notre Cheatsheet en français 😉 !


À propos de l'auteur

Colin Fay

Colin Fay

Data scientist & R Hacker


Commentaires


À lire également