Première run sur un produit politique

Tous les jours, je lis le quotidien LeMonde pour me tenir informé des actualités nationales et internationales. Lire des articles poussés sur des sujets me permet de mieux comprendre ce qui m’entoure et de m’aider à construire une opinion.

En 2024, Emmanuel Macron décida de dissoudre l’Assemblée nationale entraînant une tripartite de la vie politique et un blocage de nos institutions. Peu après je suis tombé sur un article de ce journal parlant des différents modes du scrutin de nos pays voisins. Par exemple au Royaume-Uni, les élections de la chambre des communes (l’équivalent de notre assemblée nationale) se déroulent en un tour.

Après avoir lu cet article, je me suis challengé pour créer une application qui à partir des données des élections législatives de 2022 et 2024 et des règles d’élections d’autres pays détermineraient la composition de notre chambre des députés.

À la fin de cette run, j’aurai créé un site internet qui permettra de voir la composition de notre chambre des députés en fonction des différents modes d’élections. Je vous propose de commencer par vous présenter les différents modes d’élections utilisées dans ma future simulation.

Quelles règles pour la simulation de ces élections législatives choisir?

À partir des résultats des précédentes élections législatives, nous allons simuler la composition de notre assemblée nationale avec trois systèmes de votes différents :

  1. Élections à un tour
  2. Proportionnelle au niveau national
  3. Proportionnelle au niveau départementale

Puis nous comparerons chacun des résultats obtenus avec notre propre assemblée élue lors de ces élections.

De plus pour chaque résultat, les deux critères ci-dessous seront notés :

  1. Stabilité
  2. Représentativité

Stabilité

Cette note répondra à la question suivante : « Est-ce que dans la nouvelle assemblée simulée, on arrivera facilement à obtenir une majorité ? »

Si un seul parti a la majorité ou si des partis alliés (ex : RN et UDR) ont la majorité alors la note de la stabilité sera haute. Par contre s’il faut trois partis de différentes sensibilités pour avoir une majorité alors la stabilité est faible.

Représentativité

Cette note répondra à la question suivante : « Est-ce que dans la nouvelle assemblée nouvellement élue, les choix des électeurs ont été respectés ? »

Si un parti obtient 30% des votes, mais a seulement 5% des députés alors on peut dire que l’assemblée n’est pas représentative du choix des électeurs. Par contre si un parti obtient 30% des votes et 28% des sièges des députés alors on peut dire que l’assemblée est représentative du choix des électeurs.

Elections à un tour

Les électeurs britanniques utilisent ce système de vote pour désigner leur représentant siégeant à la Chambre des Communes. Dans chaque circonscription, le candidat ayant reçu le plus de voix lors d’un tour unique remporte l’élection. Il devient le nouveau représentant.

Ce système de vote permet d’avoir plus facilement une majorité et ainsi être plus gouvernable, mais diminue la représentativité. Par exemple au Royaume-Uni, en 2024, les travaillistes ont eu 34% des votes, mais ont gagné 63% des sièges. La représentation de la composition de la chambre des communes ne correspond pas aux votes des électeurs. Les experts soulignent un manque de vraie représentativité du corps électoral.

Dans notre cas, pour les élections de 2022 et de 2024, les résultats du premier tour de chaque circonscription seront pris et analysés. Ils détermineront quel candidat a remporté l’élection et est devenu député. À partir de ces résultats, la composition de la chambre des députés sera calculée.

Proportionnelle au niveau national

Les Pays-Bas élisent leurs représentants en faisant une élection proportionnelle au niveau national. Chaque parti produit une liste de X (X égale le nombre de sièges) candidats. Les électeurs votent pour une liste. À partir des votes, chaque parti remporte un nombre de sièges.

Chaque parti possède bien un nombre de pourcentages de siège égal à son pourcentage de voix. Cependant comme les candidats se retrouvent dans une liste nationale, ils perdent le lien avec les territoires. De plus, la nouvelle assemblée risque d’être plus divisée donc plus difficilement gouvernable.

Dans notre cas, chaque parti aura une liste composée des candidats qu’il aura présentée dans chaque élection. Pour simuler les résultats des deux élections avec ces règles, les voix du premier tour de tous les candidats d’un même parti seront additionnées pour ainsi déterminer le % des voix reçu par ce parti. Ensuite, la formule suivante sera faite :

D = P * 577 /100 où D est le nombre entier de députés obtenu, P des voix de l’élection.

Par exemple, si le parti Y a obtenu 12.5% des voix sur une chambre des députés comportant 577 sièges. Dans ce calcul, il aura 72,125 députés. Comme on parle de personnes entières, D est toujours arrondi en dessous.

Si un parti à moins de 5% des votes, il n’aura pas de députés.

À cause des arrondis inférieurs et des partis éliminés avec moins de 5% des votes, il restera des sièges non attribués. Ils seront distribués à chaque parti. On commencera par le parti ayant le plus de voix pour terminer par celui qui en a eu le moins, mais ayant fait plus de 5%. S’il reste encore des sièges à affecter, on bouclera jusqu’à avoir tout épuisé.

Proportionnelle départementale

En 1986, pour éviter une débâcle lors des élections législatives, le président socialiste Gilbert Mitterrand fit mettre en place une  élection proportionnelle au niveau départementale. Elle devait limiter la défaite de son propre camp. En Espagne, ce système existe où chaque « circonscription » a un nombre défini de siège et les députés sont élus à la proportionnelle au niveau de la circonscription. Par exemple, la circonscription de Madrid possède 37 sièges tandis que celle de Barcelone 32.

Ce mode de scrutin permet de la représentativité et de l’ancrage territorial cependant ça peut augmenter la divisibilité de l’assemblée et l’iniquité des départements. Les partis qui ont un plus gros impact dans les régions rurales seront mieux représentés.

Si le département possède uniquement un siège, le scrutin se passera comme lors d’un scrutin à un tour décrit au-dessus. Si le département possède deux ou trois sièges, seuls les deux ou trois partis dominants rafleront les sièges. Cependant pour les gros départements ayant plusieurs sièges comme Paris ou la Gironde, leur système se rapproche d’une mini élection proportionnelle nationale comme décrit juste avant.

Warning

Dans la liste des élections obtenues sur le site de l’OpenData du gouvernement certains petits partis sont regroupés dans une dénomination commune. Par exemple le candidat Clément Soubise dans le fichier des résultats des élections législatives 2024 est indiqué comme lié au parti EXG signifiant « Parti d’Extrême Gauche » alors que dans les faits, il se présentait sous les couleurs du parti NPA. Pour les petits partis, il y a une différence entre les données présentées et la réalité.

Pour des raisons de temps et de facilité, je me baserai uniquement sur les données de l’OpenData. Je suis vraiment désolé pour les petits partis, mais je ne pourrai pas être exact vous concernant.

Après avoir vu la partie simulation des élections législatives, il faut comprendre comment d’un point de vue fonctionnel les différentes applications de cette run interagissent entre elles.

Comment intéragissent les différentes applications entre elles ?

La première brique importante de cet ensemble logiciel est l’application dataElectionScenario.

DataElectionScenario

A partir d’un ou plusieurs fichiers OpenData (ici des CSV), l’application dataElectionScenario va les lire pour récupérer leurs données, les traiter pour en faire un fichier json exploitable pour la prochaine application.

ElectionScenario

L’utilisateur accède au site internet Front. Il va interroger une API pour obtenir le résultat des différents scénarios des différentes élections législatives. Pour pouvoir calculer ces simulations, l’API va se baser sur le fichier Json obtenu précédemment.

Après avoir parlé du fonctionnel de notre produit et des interactions entre les différentes briques, il est temps de se pencher sur son fonctionnement technique.

Comment fonctionnent les futures brique de notre produit techno-politique ?

Front

Pour le site Web qui permettra à nos utilisateurs d’interagir avec l’ensemble du produit, le framework React JS va être utilisé. Comme cette technologie est la plus utilisée sur le marché pour faire des interfaces web moderne, j’ai décidé de l’utiliser.

Personnellement, ça fait depuis plus de 9 ans que je n’ai pas fait de Front. Il me tarde de monter en puissance sur cette technologie pour pouvoir réaliser un site de A à Z en solo.

API

L’API Back est codée en Python en utilisant le framework web Fast API.

Je n’utilise pas pour le moment le pattern  BackForFront , car je privilégie la simplicité. L’API sera uniquement consommée par ce Front.

Pour la partie API, j’ai décidé d’utiliser Fast API. J’avais déjà joué avec, sur des petits projets. Django Rest framework aurait pu être utilisé à la place. Si des lecteurs ont un retour à me faire sur ce choix ou sur une des deux technologies, je serai ravi de le lire dans vos commentaires.

Architecture Hexagonale

En ce moment, un de mes principaux objectifs est de me perfectionner dans la mise en place d’architecture logicielle et en test. Je crois que produire un code propre et maintenable permet d’aller vite en limitant les régressions.

En gros, je veux faire des mises en production SOUVENT et sans AUCUNE régression.

Pourquoi?

Notre travail se résume à vérifier des hypothèses en produisant du code. On pense que notre application sera utilisée de telle manière ou devra être fabriquée de telle manière. Mais le monde étant complexe, on se trompe la majorité du temps. Pour pouvoir remplir notre objectif, on est obligé de le modifier pour tenter d’avoir un produit utilisé.

Si nous développons comme des porcs, à chaque modification nous risquons de tout casser et de perdre un maximum de temps.

Un de mes leviers est d’avoir une architecture logicielle qui me permet d’avoir des composants indépendants et facilement testables. Si je modifie A, je ne risque pas de casser B.

Un article sera écrit et publié prochainement pour vous montrer comment l’architecture hexagonale a été mise en place dans l’API de ce projet.

Je vous ai présenté cette 1ère run en vous détaillant son fonctionnement, ses interactions avec ses différentes briques et sa tech. À l’heure actuelle, la réalisation de ce produit a déjà commencé.  DataElectionScenario  a été développé. En prenant du recul, j’aurais dû commencer à coder en premier le front. Pour que mon produit marche, l’interface utilisateur doit être utilisable et donner envie aux utilisateurs de l’utiliser. Elle devient donc la pièce maîtresse de notre run. Ne maîtrisant pas à React JS, j’ai préféré commencer par développer une brique plus simple. À l’avenir, dans les prochaines runs, les premières briques développées seront les Front. Concernant le back de ElectionScenario, celui-ci a été codé à 50%. Pour le moment, je n’ai aucune idée de comment je vais héberger ce produit.

Dans le prochain article, je vous parlerai du développement de l’application DataElectionScenario.

Add a comment

*Please complete all fields correctly

Related Blogs