Alors oui j'entends de ci, de là "oui tes API c'est bien mais qu'est ce que ça peut m'apporter pour mon site qui ne parle que de Nancy (il se reconnaitra) ? Alors oui c'est vrai, j'ai foncé tête baissé (et je continuerai) à vous proposer et à vous montrer des exemples de services qui peuvent vous apporter une réelle plus value sur vos différents sites (ou applications Androïd/iPhone) web, mais jusque là, nous n'avons jamais véritablement parlé d'un autre "truc" que l'on peut trouver sur le web : les jeux de données.

C'est quoi ? quelle différence

Définition : Un jeu de données (Data Set) est une collection d'éléments connexes de données associées entre elles et accessibles individuellement ou de façon combinée, ou gérées comme une entité.


Super simple, encore faut-il comprendre. Imaginez vous que vous souhaitez créer une application concernant les arrêts de bus à Nancy (toute coïncidence avec une idée que j'ai eu serait véritablement fortuite.... ou pas ?). Les arrêts (et leurs propriétés, restons dans une optique de programmation orientée objet) ne sont pas des données qui changent tous les jours. Aussi, est-il plus simple, du coté du détenteur des données, de créer un fichier "normé" (au format CSV, TXT ou encore JSON) et le mettre à la disposition des développeurs. Lorsqu'un nouvel arrêt est suppprimé (euh oui, en ce moment ca va plutôt dans ce sens, le service public), le propriétaire du fichier le met à jour, le redépose sur son serveur et le remet à la disposition de la communauté. Le développeur ayant écrit une module de test sur la version du fichier sur lequel il s'appuie, pourra le faire automatiquement télécharger par son application. Il est plus facile et rapide de faire ainsi que de développer, même en REST, un outil retournant les données attendues.
En revanche, imaginez vous gérer ceci avec des données météo : vous vous rendez compte de la manipulation de données, des upload de fichiers, de la fréquences de ces upload ? Et des donwnload coté utilisation des données ? En un mot, IMPOSSIBLE. (pauvres serveurs...)

Mais des jeux de données publiques, ca se trouve ?

Bah oui, sinon je n'aurais pas écrit cet article. Je vous en cite quelques un. N'hésitez pas à m'en fournir d'autres en m'envoyant un message si vous en connaissez. Parmi les sites recencés qui proposent des jeux de données, je peux citer :

C'est bien beau mais.... j'en fais quoi

La philosophie est effectivement un peu différente de l'API. Là où cette dernière permet véritablement à utiliser l'interrogation d'un serveur afin de "poser une question", le jeu de données retourne à l'utilisateur un ensemble complet et fini de données. La finalité est généralement plus "statistique" : on manipule plusieurs données d'un coup.
Alors oui, effectivement, la philosophie pour vos programmes est vraiment différente : au lieu d'intérroger sur une question, vous programmes devront dans un premier temps télécharger le jeu de données afin de pouvoir, dans un deuxième temps, les manipuler, là où l'API donne généralement l'accès au(x) résultat(s) déjà traité(s). Mais mettez vous dans la peau du détenteur du jeu de données : c'est juste un fichier à mettre à la disposition et basta. Beaucoup plus simple !
En revanche, si vous développez une application pour smartphone non connectée, il suffit de lancer un téléchargement de temps à autre et votre appli marche ... sans internet (juste une connexion wifi de temps à autre). C'est le cas, pour ce que j'en sais, de l'application de gestion de bus à Nancy : à chaque changement hivernaux ou estivaux, on retéléchage le jeu de données et tout tourne en local. Très interessant pour celles et ceux, s'ils existent encore, qui n'ont pas de connexion internet sur leur télépĥone.
Petite précision toutefois, les données sont toutes dans des formats standardisés, que ce soit des fichiers TXT, CSV, XML ou autre. Tous les langages de programmation modernes ont donc de quoi manipuler des données, et même télécharger à la volée le jeu de données. Il n'y a donc aucun obstacle à les utiliser.


J'espère vous avoir suscité des idées de développement à base de jeux de données. N'hésitez pas à m'en faire part, nous pouvons en parler dans nos "colonnes" et mettre en avant vos outils en lien avec nos articles "API".