Swift/SwiftUI : le langage natif d’Apple

Swift est le langage de programmation lancé par Apple et permettant de développer des applications iOS, Mac, Apple TV et Apple Watch. Il a été présenté par Apple en 2014 lors de la Worldwide Developers Conference (WWDC). Bien qu’elle en reste le principal contributeur, la firme à la pomme annonçait un an plus tard le passage de Swift en open source.
En 2019, lors de la présentation d’iOS 13, Apple a officialisé la publication de SwiftUI, un framework qui complète le langage en permettant de construire ses interfaces graphiques en Swift en se basant sur le paradigme de programmation déclarative.
Nous aborderons donc, dans le cadre de cet article, les avantages et inconvénients du combo Swift/SwiftUI.
Les avantages de Swift/SwiftUI
Les avantages de Swift
Depuis sa création, le langage de programmation Swift a démontré de nombreux avantages qui justifient son succès auprès des développeurs mobiles :
- Un langage plus simple: Swift est plus facile à utiliser et plus « user friendly » qu’Objective-C. Plus récent, il bénéficie des facilités des nouveaux langages. Il est également plus rapide : avec le « sucre syntaxique », le développeur a moins à écrire pour un résultat identique : le gain de temps et de performance sur l’application est réel.
- Un langage open source : comme tous les langages en open source, Swift est gratuit (il ne nécessite pas d’achat de licence). Une documentation très fournie est disponible et bien qu’Apple reste le principal contributeur, la communauté participe à l’évolution du langage.
- Une compatibilité avec l’écosystème d’Apple : développé par Apple, Swift est donc compatible avec toutes les plateformes de la marque :
- iOS (téléphone) ;
- iPadOS (tablette) ;
- watchOS (montre connectée) ;
- tvOS (boitier TV) ;
- macOS (ordinateur).
Les avantages de SwiftUI
SwiftUI apporte des bénéfices supplémentaires, notamment en termes de code et de simplicité pour le développeur :
- Une programmation déclarative, qui permet de construire les interfaces utilisateurs en décrivant « ce que l’on souhaite » et non « comment la construire ». Prenons un exemple plus parlant : lorsque vous commandez un burger dans un restaurant, vous décrivez au serveur ce que vous souhaitez (« un cheeseburger, avec supplément bacon et du ketchup » et non comment le faire (« entre deux tranches de pain, mettre un steak, une feuille de salade… »).
- Un code plus léger: basé sur une logique de code « less boilerplate », SwiftUI facilite l’écriture du code pour le développeur, assurant ainsi un gain de temps notable.
- Live Preview : SwiftUI offre la possibilité de voir le rendu de l’interface sans avoir à exécuter l’application.
- Un partage des interfaces facilité : auparavant, l’UI se faisait principalement via l’Interface Builder de Xcode générant automatiquement le fichier XML de l’écran. Il était donc compliqué de travailler à plusieurs simultanément sur celui. Désormais, le code n’étant plus généré par l’outil mais par le développeur, cela facilite la création des interfaces par plusieurs développeurs et la résolution des potentiels conflits car le code est maitrisé.
Les inconvénients de Swift/SwiftUI
Comme toutes les technologies, Swift et SwiftUI présentent malgré tout quelques inconvénients à avoir en tête.
Swift est encore un langage relativement récent et nécessite de ce fait quelques ajustements et améliorations très attendues (par exemple, l’ajout de async/await intégré « seulement » depuis la version 5.5 sachant que la version courante est la 5.5.3). SwiftUI quant à lui a encore une utilisation limitée car il n’est supporté que sur les dernières versions des systèmes d’exploitation Apple :
- iOS, iPadOS et tvOS 13 et versions suivantes
- watchOS 6 et suivants
- macOS 10.15 et suivantes
Recommandations de Cellenza sur l’utilisation de Swift/SwiftUI
Si vous souhaitez faire du natif, plusieurs options s’offrent à vous, mais Objective-C est de plus en plus délaissé au profit de Swift.
Lors de la rédaction de cet article, le développement d’applications pour l’écosystème Apple se trouvait encore dans une phase de transition : c’est particulièrement le cas pour la partie interface utilisateur.
Il vous est bien sûr possible de construire vos écrans avec la version « classique » UIKit/Interface Builder mais nous vous recommandons dès à présent, si les contraintes techniques le permettent, de le faire avec SwiftUI. En effet, les versions les plus anciennes (non supportées par SwiftUI) des systèmes d’exploitation seront de plus en plus rares et d’ici deux ou trois ans, le duo Swift/SwiftUI deviendra la norme pour le développement d’applications natives pour Apple.
Cas pratique : retour sur la création d’une application avec Swift/SwiftUI
Nous partageons aujourd’hui avec vous notre retour d’expérience sur un projet d’application mobile développée par des experts Cellenza avec Swift/SwiftUI et permettant l’apprentissage de vocabulaire dans une langue étrangère. L’application se base sur une répétition des mots à retenir avec un rythme spécifique permettant d’apprendre durablement. Des écrans de statistiques assure le suivi des progrès : nombre de mots en cours d’apprentissage, nombre de mots retenus, nombre de réussites et d’échecs, etc. Dans un second temps, l’application proposera des challenges entre utilisateurs, des récompenses, le partage de mots ou encore la mise en place de dictionnaires de mots thématiques.
Sur le plan technique, l’application a nécessité 4 semaines de développement.
Captures d’écrans de l’application
Choix de la technologie pour le développement de l’application mobile
Comment s’est fait le choix de la technologie ? C’est tout d’abord l’aspect sécurité qui a prévalu. En effet, contrairement à Flutter qui est un framework porté par la communauté, le choix a été fait d’opter pour un langage natif qui supprime donc tout risque de disparition en garantissant que le langage ne sera pas abandonné.
Entre Kotlin (sur Android) et Swift/SwiftUI (sur iOS), nous avons finalement opté pour le langage natif d’Apple, qui permet une plus grande simplicité pour le développement de certains éléments. En effet, iOS ayant une flotte de devices limitée, le rendu de l’UI est optimal sur tous les appareils. Sur Android, le nombre de devices étant très important (en raison du nombre conséquent de constructeurs à l’échelle mondiale), il est très difficile de tester et d’adapter le rendu pour tous les types d’écrans.
Quelles difficultés avons-nous rencontrées ?
Comme pour toute technologie nouvelle ou récente, un temps de prise en main a été nécessaire. Dans ce cas précis, venant du monde Xamarin, nous étions habitués à dessiner les écrans avec « l’ancien combo » UIKit/ViewController. Avec cette technologie, nous avons donc dû opter pour une nouvelle façon de faire qui a nécessité de nous poser des questions que nous savions résoudre avec une autre technologie (cela a été le cas, par exemple, de la navigation).
Quelqu’un qui débute dans le développement d’applications mobiles n’aura donc pas besoin de casser ses habitudes. Pour un développeur habitué à l’ancienne façon de faire, un peu d’investissement personnel sera nécessaire pour changer de mindset et prendre en main ce nouvel outil.
Vous souhaitez en savoir plus sur les différentes technologies permettant la création d’applications mobile ? Découvrez les autres articles de cette série :
- Flutter, l’outil permettant de créer des applications iOS et Android
- Découvrir MAUI, la technologie qui remplace Xamarin Forms
- Kotlin, le nouveau Java ?
- Pourquoi créer une application mobile sur Unity
- Progressive Web App (PWA) : des pages Web devenues Mobile