Nombre d’applications ne font rien d’autre que de présenter des données envoyées par un serveur. Le développeur sait qu’il devra écrire le front-end, c’est-à-dire son application iOS, en Objective-C ou en Swift. Mais il n’a que l’embarras du choix pour le back-end, c’est-à-dire le composant serveur. PHP, Python, RoR… mais pourquoi pas du Swift aussi ? C’est l’idée derrière le projet Perfect.
Perfect fournit un framework permettant de développer des services REST en Swift, et donc d’utiliser — du moins en théorie — un seul et même langage pour le back-end comme le front-end. Il fonctionne avec son propre serveur HTTP, ou sous la forme d’un module FastCGI avec Apache 2.4, et offre un mécanisme de chargement des modules Swift au démarrage, ainsi qu’une interface entre ces modules et un système de mise en forme du type Mustache.
Le premier de ces modules Swift est celui proposé par Perfect, qui contient notamment un connecteur vers les principaux systèmes de gestion de base de données, des API pour la manipulation de données et la gestion des connexions au réseau, ou encore un encodeur/décodeur JSON. Car application et serveur s’échangent leurs données avec des fichiers JSON (ou XML) — de ce point de vue, Perfect ne réinvente pas la roue.
Perfect ne peut réussir qu’à condition d’être compatible avec GNU/Linux… ce qui n’est pas encore le cas. PerfectlySoft promet toutefois que ce sera le cas dès qu’Apple tiendra sa promesse de rendre Swift open-source. En attendant, les différents composants du projet sont déjà disponibles sur Github : la librairie Perfect, le serveur, et quelques exemples.