Tutoriel Shiny
Partie 1: Introduction

Lise Vaudor

janvier 2018

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

Shiny, c’est un package R qui facilite la construction d’applications web interactives depuis R.

A chaque fois que l’utilisateur fournit une nouvelle valeur d’input (= paramètre d’entrée) via un widget(= window gadget), un code R est réexecuté et sa sortie est affichée.

Vous avez un exemple d’application ci-dessous. Remarquez que cette application (qui, de fait, s’affiche dans votre navigateur internet) est (surprise!) écrite en html… Par contre, on peut la produire sans connaître du tout (surprise surprise!!) le langage html. En effet, elle peut être produite exclusivement via le langage R. (Même si une connaissance de html et css reste un plus pour produire de jolies apps…).

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

Shiny, c’est un package R qui facilite la construction d’applications web interactives depuis R.

A chaque fois que l’utilisateur fournit une nouvelle valeur d’input (= paramètre d’entrée) via un widget(= window gadget), un code R est réexecuté et sa sortie est affichée.

Introduction: démarrer avec le template

Pour construire votre première appli Shiny, vous pouvez vous aider du modèle (“template”“) fourni par RStudio, en faisant File -> New project -> New directory -> Shiny web application.

Deux fichiers sont alors créés: server.R, et ui.R.

Vous pouvez ouvrir l’un ou l’autre, et activer le bouton Run App en haut à droite de la partie “script” de l’interface RStudio pour construire (et tester) l’appli.

Introduction: déploiement des applications à distance

Quand vous construisez et testez votre app, l’ordinateur qui affiche l’interface =l’ordinateur qui effectue les calculs (car dans ce cas, l’utilisateur = le développeur = vous).

En revanche, si vous souhaitez que votre app soit utilisable par un autre utilisateur que vous même, vous pouvez procéder de deux manières:

Dans le cas où vous déployez votre app sur un serveur distant, cela veut dire qu’il y a une gentille structure qui vous “offre”" gratuitement de la puissance de calcul sur son serveur… Cela n’est donc pas, généralement, totalement gratuit et/ou totalement illimité…

Construire une app (1)

ui:

server:

Construire une app (1)

ui:

server:

Construire une app (2)

Deux structures de base sont possibles pour les apps: soit avoir tout réuni dans un même script (app.R) soit séparer la partie ui et la partie server dans deux fichiers (ui.R et server.R). C’est cette deuxième solution que nous allons privilégier.

Dans l’exemple de gauche, ui est un objet de type UI issu de l’appel à une fonction -ici, fluidPage()-. Les différents éléments passés à fluidPage() sont donc des arguments (i.e. ils sont séparés par des virgules!).

Au contraire, server est un objet de type fonction, ayant pour arguments input et output. Le corps de cette fonction s’écrit donc comme un script (i.e. les commandes sont séparées par des retours à la ligne!)

Construire une app (3)

Le répertoire qui contient votre application doit être construit d’une manière qui facilite son déploiement sur un serveur distant. Le mieux ainsi d’avoir: