Meet-up
< < Articles

Nouveau meet-up BEST sur le State Management le 10 mars prochain chez ekino Bordeaux

03/03/2020

Le 10 mars prochain se déroulera la 9e édition du meet-up Bordeaux Engineers Share & Talk (BEST) dans les locaux d’ekino Bordeaux. Un nouveau rendez-vous de partage de connaissances, placé cette fois-ci sous le thème du State Management et plus particulièrement des States Machines.

Plusieurs experts d’ekino Bordeaux prendront la parole : Yohan Siguret, Ingénieur Java introduira le concept de State management à travers une brève satire de ce terme un peu fourre-tout. Jérôme Raffin et Marine Petit, Ingénieurs Front présenteront un sujet pour vous aider à “Créer une interface utilisateur robuste grâce aux states machines” et Nicolas Perrussel, Architecte PHP proposera un sujet back “De la State Machine au Workflow”. Marine Petit nous en dit un peu plus sur ce meet-up. Interview.

Peux-tu nous expliquer ce que sont les States Machines ? State Management?

Le state management est une notion assez vague qui regroupe beaucoup de concepts très différents dans plusieurs domaines et qui englobe notamment les states machines. Les states machines sont à la base, un modèle mathématique de calcul. Il existe deux types de machines à état : la machine à état infini, qui peut avoir un nombre incalculable d'états (mais elle ne se prête pas au développement d’interfaces utilisateur) et la machine à état fini. Durant ce meetup, nous allons plutôt vous expliquer qu’est-ce qu’une machine à état fini et plus particulièrement le modèle de Mealy.

En quoi cela peut-être utile pour créer une interface plus robuste ?

Les projets front actuels se basent sur des transitions pour passer d’un état à un autre. Par exemple, avec Redux, lorsque je clique sur un bouton je déclenche une action qui peut déclencher une cascade d’autres actions ! Que se passe-t-il si je clique plusieurs fois sur le bouton ? Je relance plusieurs actions ? Je fais plusieurs appels à une API ? Comment je gère les erreurs ? Les states machines nous permettent de penser notre application par état, et de gérer tous les comportements inattendus. On peut résumer donc un bouton en 3 états : un état initial, un état de chargement et un état d’erreur. Chaque état est déterminé, tant que mon bouton est à l’état de chargement, l’utilisateur ne peut pas modifier l’état.

Ce modèle est-il mis en place chez ekino ? Si oui, de quelle manière ?

Ce modèle est actuellement mis en place sur deux projets en production : Sköda Laurin et La Mutuelle Générale. Ces projets sont des formulaires en plusieurs étapes et donc beaucoup d’états possibles ! Pour appliquer les states machines, nous avons utilisé la librairie XState qui nous permet de gérer les données front de l’application, les appels à l’API, les changements de vues, les états de chargement et d’erreur et la persistance des données.

À qui s’adresse ce meet-up placé sous le thème des States Machines ?

Le meetup BEST s'adresse à tous les acteurs du web bordelais. Notre volonté est d’avoir un événement récurrent avec des formats/contenus de présentation rassemblant le plus grand nombre. Depuis quelque temps, nous essayons de trouver un thème commun aux présentations, le dernier meetup était sur la blockchain par exemple.

Pourquoi venir à ce meet-up ?

On a tous une idée différente du state management, je pense que c’est intéressant de confronter nos idées durant ce meetup et découvrir une autre approche de la gestion d’état d’une interface utilisateur avec les states machines.

Un dernier mot ?

La difficulté à gérer l'état de nos applications est l'une des principales raisons pour lesquelles elles deviennent complexes (utilisation de beaucoup de booléens et de variables sémantiques). Les machines à état me semblent un bon outil pour le front car elles permettent un découpage clair du fonctionnement de l'application, la logique est regroupée à un seul endroit ce qui rend les tests plus faciles, évite les effets indésirables et permet de gagner en lisibilité dans l’écriture des composants.

Il reste encore des places pour vous inscrire ici : http://bit.ly/2HQkurs