Skip : Construire des applications natives iOS et Android à partir d'une base de code Swift unique, Skip utilise le langage de programmation moderne Swift et l'EDI Xcode.
Skip permet de construire des applications natives iOS et Android à partir d'une base de code Swift unique. En utilisant le langage de programmation moderne Swift et l'EDI Xcode, Skip gère automatiquement la version Android du code pour construire des applications véritablement natives pour iOS et Android.
Le marché des applications mobiles est divisé entre iOS et Android. Négliger l'une ou l'autre de ces plateformes revient à laisser de côté un grand pourcentage d'utilisateurs potentiels. Selon certains rapports, les applications sont généralement conçues d'abord pour iOS. Les clients demandent une application iOS, puis s'attendent à un portage sur le Play Store. Les grandes entreprises technologiques conçoivent d'abord leurs applications pour iOS, puis les adaptent à Android.
Skip est une nouvelle technologie de création d'applications natives iOS et Android conçue pour l'écosystème des applications iOS d'abord. Avec Skip, vous travaillez dans Xcode, en écrivant en Swift et SwiftUI. Pour rappel, Swift est un langage de programmation compilé de haut niveau, polyvalent et multi-paradigme, créé en 2010 pour Apple Inc. et maintenu par la communauté open-source. La version 5.10 de Swift améliore le modèle de concurrence du langage, permettant une isolation complète des données pour éviter les courses de données (data race).
L'objectif de Skip est de disparaître en arrière-plan, pour offrir une expérience de développement iOS sans compromis, tandis que son plugin Xcode gère automatiquement la version Android, en générant le code Android équivalent. Skip peut être utilisé pour des bouts de logique et d'interface utilisateur partagés, pour l'ensemble d'une application, ou pour tout ce qui se trouve entre les deux.
Voici le message d'un de ses développeurs :
Je m'appelle Marc et je fais partie de l'équipe qui a créé skip.tools. Skip est un outil qui transpose votre application iOS SwiftUI en une application Kotlin Jetpack Compose, et vous permet d'utiliser un seul langage pour créer une application complète qui atteint l'ensemble du marché mobile.
Qu'est-ce que c'est ? Skip se distingue des autres outils de développement multiplateforme tels que Flutter, React Native et Xamarin, car il permet de créer des applications véritablement natives pour les deux plateformes mobiles dominantes. Il n'intègre pas de moteur ou de runtime distinct dans votre application, mais vous permet d'utiliser Swift et SwiftUI pour créer la partie iOS de l'application (conformément aux meilleures pratiques recommandées par Apple pour la création d'applications iOS), et la transpose dans une application Kotlin et Jetpack Compose pour la partie Android (ce qui correspond aux recommandations de Google pour la création d'applications Android). Ainsi, votre application utilisera des contrôles natifs de la plateforme et bénéficiera automatiquement de tous les avantages offerts par le fournisseur de la plateforme : animations, accessibilité et évolution à l'épreuve du temps avec les mises à jour du système d'exploitation.
Fonctionnement : vous créez une application Skip à l'aide des mêmes outils que ceux utilisés pour créer une application iOS standard : Xcode, Swift et SwiftUI. Skip complète ce flux de travail avec un plugin Swift Package Manager appelé « skipstone », qui transpose votre Swift en Kotlin à chaque fois que vous créez votre application, et lance l'application Android côte à côte avec l'application iOS à chaque fois que vous exécutez l'application. La transpilation fonctionne non seulement sur votre module d'application principal, mais traite également de manière transitive tous vos modules SwiftPM dépendants, de sorte que vous pouvez décomposer des projets complexes en sous-modules testables individuellement contenant la logique commerciale ou le code de l'interface utilisateur. C'est d'ailleurs ainsi que sont structurés nos propres modules adaptateurs pour les frameworks standards : SkipFoundation adapte le framework Foundation et SkipUI adapte le framework SwiftUI, de sorte que la même API familière peut être utilisée lors de la construction de l'application. Il existe également un écosystème GitHub de modules open-source prenant en charge les frameworks les plus courants, notamment SQLite, Firebase, Lottie et bien d'autres éléments constitutifs des applications modernes.
Au cours de l'année écoulée, Skip a évolué pour devenir une solution complète permettant de créer les meilleures applications pour iOS et Android. Aujourd'hui, nous sommes ravis d'annoncer la sortie de la version 1.0, qui est donc prête à être utilisée en production.
Comment Skip peut concevoir des applications natives iOS et Android en même temps ?
Au cœur de Skip se trouve son transpileur intelligent du langage Swift vers Kotlin. Le transpileur utilise la bibliothèque SwiftSyntax d'Apple - la même bibliothèque que celle utilisée pour les macros Swift - pour analyser le code source Swift. Il convertit ensuite le code en Kotlin agréable et lisible par l'homme, en conservant les commentaires.
Grâce aux similitudes entre les langages, le résultat n'est souvent pas différent du Kotlin. Une exception notable est la transposition de SwiftUI dans Compose. SwiftUI implique une bonne part de magie du compilateur Swift, et il n'y a aucun moyen de la cacher dans la transpilation Kotlin.
En plus du transpileur, Skip fournit un convertisseur de projet Swift Package Manager (SwiftPM) vers Android Gradle. Skip regroupe ces outils dans un plugin de construction Xcode, que l'équipe de Skip surnomme SkipStone.
Traduire le code source et les paquets SwiftPM n'est toutefois pas suffisant. Les applications reposent sur des éléments de base tels que la bibliothèque standard Swift, Foundation et SwiftUI. Les bibliothèques open source Skip fournissent des ré-implémentations spécifiques à Android de parties de Swift, Foundation, Observation, SwiftUI et d'autres frameworks d'iOS, depuis les éléments fondamentaux de la couche de modèle comme URLSession et JSONDecoder jusqu'aux composants d'interface utilisateur complexes comme NavigationStack. Skip traduit et exécute les tests unitaires XCTest en tant que tests JUnit pour une parité automatique des tests unitaires sur Android ! que l'équipe de Skip surnomme cette suite de packages SkipStack.
SkipStone est propriétaire et nécessite une clé de licence, tandis que SkipStack est gratuit et open source. L'équipe de Skip continue de développer SkipStack afin de créer un solide écosystème de bibliothèques bi-plateformes.
Comparaison des avantages de Skip et de la conception de deux applications natives distinctes
À première vue, l'utilisation d'une solution multiplateforme pour vos besoins de développement mobile est une évidence. Après tout, vous pouvez littéralement réduire de moitié votre temps de développement et vos coûts de maintenance !
De nombreux développeurs expérimentés estiment toutefois que le développement multiplateforme nécessite trop de compromis pour en valoir la peine. Au final, disent-ils, vous obtiendrez de meilleurs résultats avec moins de tracas en écrivant des applications iOS et Android distinctes, en utilisant les langages, les cadres et les outils natifs de chaque plateforme.
Imaginez que vous fassiez partie d'une équipe de développement qui crée des implémentations iOS et Android distinctes d'une application mobile. Vous écrivez la version iOS en Swift et SwiftUI, et la version Android en Kotlin et Compose. Vous avez toute liberté pour créer deux applications mobiles entièrement natives.
Très vite, cependant, vous constaterez que votre équipe écrit beaucoup de code en double :
- Les mêmes types de modèles. Ils devront souvent communiquer avec les mêmes API réseau, sérialiser au même format JSON et avoir les mêmes capacités de persistance entre les plateformes.
- La même logique pour appliquer vos règles de gestion.
- Les mêmes tests unitaires pour s'assurer que votre modèle et votre logique d'entreprise fonctionnent.
- Les mêmes écrans d'accueil, écrans de paramétrage, formulaires, listes et autres interfaces utilisateur « standard ». Certaines parties de votre application peuvent nécessiter une adaptation minutieuse à chaque système d'exploitation mobile, mais une grande partie de l'expérience peut être identique sur iOS et Android.
Vous vous dites que la duplication massive des efforts et tous les frais généraux supplémentaires pour coordonner les modèles, les formats de données, la logique et les tests entre les plateformes en valent la peine. Après tout, vous ne voulez pas compromettre l'application en introduisant du code multiplateforme non natif. Cela s'accompagne traditionnellement de coûts bien réels, par exemple :
- Formation ou embauche pour un nouveau langage de programmation (JavaScript, Dart, etc.) et un ensemble de cadres d'application.
- L'application est alourdie par l'ajout d'un moteur d'exécution et/ou d'un ramasse-miettes.
- Dégradation de l'expérience utilisateur avec une interface utilisateur non native.
- Rendre le débogage extrêmement difficile.
Mais que se passerait-il si vous pouviez partager du code et des tests communs sans ces coûts ? Et si vous pouviez :
- Développer avec un langage de programmation et un ensemble de cadres que vous utilisez déjà.
- Éviter les frais généraux liés à l'ajout d'un autre moteur d'exécution ou d'un ramasse-miettes sur l'une ou l'autre plateforme.
- Produire des interfaces utilisateur entièrement natives - SwiftUI sur iOS et Compose sur Android - à partir d'un code d'interface utilisateur commun.
- Déboguer avec les outils natifs de chaque plateforme.
- Appelez l'API native à partir de votre code partagé chaque fois que vous en avez besoin, directement en ligne.
Voilà ce qu'est Skip. L'équipe de Skip veut que vous écrivez votre code partagé en Swift, en utilisant des frameworks iOS standard tels que Foundation, SwiftUI et XCTest. Sur iOS, votre code est utilisé tel quel. Sur Android, Skip traduit votre code en Kotlin et Compose, et vos tests en JUnit. Le résultat est un code entièrement natif sur les deux plateformes, avec des tests unitaires équivalents. Et parce que le code résultant est natif, cela signifie :
- Votre code Swift s'intègre parfaitement aux parties de votre application que vous choisissez de développer séparément sur iOS et Android.
- Vous n'êtes jamais limité par ce que Skip prend ou ne prend pas en charge. Vous pouvez toujours mettre en œuvre des solutions spécifiques à la plateforme et y faire appel de manière triviale, comme vous le feriez en développant des applications iOS et Android distinctes.
Skip peut vous faire gagner énormément de temps et d'efforts, sans que vous ayez à compromettre votre application.
Comparaison des avantages de Skip avec d'autres frameworks mobiles multiplateformes
Skip présenterait de nombreux avantages par rapport aux solutions multiplateformes concurrentes. Les voici selon ses développeurs :
- Véritablement native. Les applications Skip sont natives de la plateforme : Swift et SwiftUI sur iOS, et Kotlin et Compose sur Android. Elles tirent pleinement parti des nouvelles fonctionnalités de la plateforme et s'intègrent automatiquement à des fonctions essentielles telles que l'accessibilité, qui est une exigence de conformité dans de nombreux domaines. Les applications Skip ne se contentent pas d'avoir l'air natives, elles le sont réellement.
- Totalement transparentes. Avec Skip, aucune partie de votre application n'est cachée à votre vue... ou à votre débogueur. Skip transpose votre Swift directement en code source Kotlin que vous pouvez inspecter et personnaliser. Skip intègre cette source dans des projets Gradle standard pour une intégration transparente avec les IDE et les débogueurs Android. Skip n'a pas de runtime caché, et les bibliothèques de support de Skip sont entièrement open source.
- Poids plume. La partie iOS d'une application Skip peut bénéficier d'une adoption transparente, sans aucune dépendance vis-à-vis des frameworks Skip. Non seulement votre code iOS n'est pas encombré par des considérations multiplateformes, mais la taille d'installation de l'application reste minime : quelques dizaines de kilo-octets seulement pour iOS, et du côté d'Android, un chiffre relativement modeste de 4.0M. Les applications plus petites sont plus rapides à télécharger et à lancer, et plus lentes à être déchargées par le système.
- Mémoire efficace. En l'absence de surcharge d'exécution gérée ou de ramasse-miettes, les applications Skip sont aussi efficaces que possible sur les deux plateformes : bare metal sur iOS et bytecode ART sur Android. L'utilisateur bénéficie ainsi d'une expérience fluide et sans accroc avec son application. En outre, le maintien d'une faible mémoire en filigrane signifie que vos applications sont plus rapides à démarrer et plus lentes à expulser de l'appareil de l'utilisateur.
- IDE idéal. L'IDE de code partagé de Skip est Xcode, le premier environnement de développement d'applications intégré pour Swift et SwiftUI. L'éditeur de code de Xcode, associé à la transpilation automatique du plugin Skip, vous permet de créer et de maintenir l'essentiel de votre application sans jamais quitter Xcode. Et lorsque vous êtes prêt à personnaliser la partie Android du projet, vous pouvez utiliser Android Studio pour ouvrir le projet Gradle transpilé par Skip et développer en tandem.
- Plateforme parfaite. Skip génère du code Kotlin et Compose standard, de sorte que l'intégration avec les bibliothèques Android se fait sans problème. Appelez d'autres codes Kotlin et Java directement, sans passerelle.
- Ouverture fondamentale. Le transpileur intelligent Swift vers Kotlin de Skip n'est que la moitié de l'histoire. Le code iOS repose sur de nombreux frameworks intégrés, et c'est là que les bibliothèques gratuites et open-source de Skip entrent en jeu. Ces bibliothèques fournissent des ré-implémentations spécifiques à Android des éléments fondamentaux des applications iOS, tels que URLSession, JSONDecoder, Data, Date, Calendar, Logger, UserDefaults, etc.
- Convivialité de la CI. Skip transpose vos cas de test Swift XCTest en tests Kotlin JUnit. Cela signifie que vos tests unitaires s'exécutent sur les deux plateformes, garantissant que vos tests logiques fonctionnent de manière identique. Avec un seul raccourci clavier dans Xcode, vous pouvez exécuter tous vos tests XCTest et JUnit côte à côte pour comparer leurs résultats et leurs performances. Skip est également compatible avec le CI : il peut transpiler et exécuter vos tests sans tête à l'aide de SwiftPM et de Gradle, localement ou à distance, ce qui facilite les tests d'acceptation sur les différentes plates-formes.
- Ejectable. Votre code vous appartient, qu'il s'agisse des entrées Swift ou des sorties Kotlin. Vous n'êtes donc pas lié à une dépendance permanente vis-à-vis du transpileur Skip. Vous pouvez cesser d'utiliser Skip à tout moment et assurer vous-même la maintenance de vos bases de code Swift et Kotlin. En adoptant Skip en tant que partie auxiliaire de votre application iOS, vous pouvez donner la priorité et livrer une expérience iOS non encombrée tout en continuant à développer votre expérience Android.
Source : Skip Tools
Et vous ?
Avez-vous utilisé cet outil ou un outil similaire pour votre usage ou le développement d'applications, et si oui qu'en pensez-vous ?
Voir aussi :
Flutter, le framework de développement d'applications multiplateformes, est-il sur le point de disparaître ? Flutter remplit-il toujours son rôle chez Google ?
Le navigateur Ladybird commencera à utiliser le langage Swift au lieu de C++ cet automne, car Swift offre une sécurité de la mémoire et est également un langage moderne avec une ergonomie solide
Kotlin 2.0 est disponible avec un compilateur K2 stable, plus rapide et multiplateforme dès sa conception
Crux : une approche expérimentale du développement d'applications multiplateformes en Rust avec une meilleure testabilité, une meilleure sécurité et de meilleurs outils
Partager