Connexion
Abonnez-vous

Chez Apple, un programme chargé pour Swift, SwiftUI et Swift Playgrounds

Avec de vrais morceaux de CI/CD dedans

Chez Apple, un programme chargé pour Swift, SwiftUI et Swift Playgrounds

Notre dossier sur les nouveautés logicielles d'Apple de la rentrée 2021 :

Le 30 août 2021 à 11h37

Si la WWDC 2021 a été douce sur les plateformes, la situation est différente pour les développeurs. Loin des feux de la rampe, les nouveautés proposées sont importantes et nombreuses, d’un flux CI/CD pour Xcode aux améliorations de SwiftUI, en passant par la réalité augmentée.

Beaucoup ont jugé la WWDC 2021 « mollassonne » cette année. Et pour cause, les nouveautés annoncées pour iOS/iPadOS 15, macOS 12 Monterey, tvOS 15 et watchOS 8 manquent d’éclat.

Pour la plupart, on est dans l’amélioration de fonctions existantes, la répercussion des fonctions d’iOS sur d’autres systèmes et la création de synergies. Même si ces dernières sont bienvenues, elles s’adressent avant tout aux personnes ayant déjà un pied solidement ancré dans l’univers Apple.

Mais le plus intéressant est intervenu loin des projecteurs du grand public. Quand le temps de « l’esbroufe  » est passé, le programme des nouveautés pour les développeurs est nettement plus savoureux. Dans ce domaine, Apple a fait plusieurs annonces majeures, notamment pour Xcode et Swift, sans parler des nouvelles API.

Xcode Cloud, le CI/CD hébergé par Apple

C’est clairement l’une des principales nouveautés annoncées cette année. Un service d’intégration et de distribution (ou déploiement) continus hébergé, venant s’insérer dans Xcode 13. Avant de poursuivre, rappelons d’abord ce qu’est un flux CI/CD. On pourrait comparer l’approche à un tapis roulant, au sein duquel l’automatisation des procédures permet de répondre à certaines problématiques gênantes de l’intégration.

On parle de « pipeline CI/CD » pour désigner un circuit continu entre les équipes de développement et d’exploitation. D’un côté, l’intégration continue (CI) permet d’apporter constamment des modifications au code au sein d’un référentiel partagé (GitHub, GitLab, etc.). La distribution continue permet le test et l’envoi automatiques du code produit dans le référentiel. Pour un déploiement continu, on parle de l’envoi automatique en production depuis le référentiel. Selon les développeurs et entreprises, CD correspond à distribution ou déploiement.

En clair, il s’agit d’une approche dans laquelle l’automatisation et les tests sont prépondérants pour permettre un développement plus « agile » du code. Notez que les deux – ou même trois – peuvent être décorrélées. Une structure peut par exemple se mettre à l’intégration continue uniquement. Une autre y ajoutera la distribution sans le déploiement. L’étiquette est donc générale et ne recouvre pas un schéma précis de pratiques.

L’arrivée de Xcode Cloud signifie plusieurs changements intéressants pour les développeurs. D’abord ils n’ont plus besoin de passer par un service tiers. Ensuite, que le service devient une couche d’abstraction pour tout ce qui touche au déploiement et à la signature de code, directement depuis l’environnement de développement.

Puisqu’un flux CI/CD suppose une partie tests conséquente, Xcode Cloud renforce cette étape. Les tests unitaires sont effectués en parallèle et peuvent générer des captures d’écran depuis le simulateur, rassemblées dans une galerie pour tous les flux XCTests. Autre ajout important, attendu depuis longtemps : l’arrivée de TestFlight sur Mac, prenant en compte jusqu’à 10 000 personnes.

Les développeurs pourront donc y tester leurs applications et obtenir des rapports précis de plantages. En outre, une application peut être déployée dans le cloud pour être testée automatiquement sur toutes les plateformes proposées par Apple. En cas de résultats satisfaisants, elle pourra être envoyée directement dans TestFlight.

Xcode fournit également une nouvelle capacité de commentaires « inline », comprendre directement dans la zone de rédaction du code, pour renforcer l’aspect collaboratif. Comme le montre la capture ci-dessous, on peut voir les commentaires insérés dans le code, dans le cadre d'une pull request.

Xcode Cloud n'est pas gratuit. Apple n’a pas communiqué sur la tarification envisagée. On sait simplement que le service est gratuit durant la phase bêta et que des informations plus précises seront données cet automne.

WWDC 2021

Swift 5.5 : fonctions asynchrones et concurrence de code

Swift, le langage qu’Apple a proposé en 2014 comme remplaçant d’Objective-C, est devenu la voie royale pour le développement des applications vers toutes les plateformes de l’éditeur. Open source, il est officiellement compatible avec d'autres plateformes, dont Ubuntu. Il se sert de LLVM pour la génération du code machine.

La version 5.5 du langage, en préparation et disponible sous forme de Preview, comporte un très grand nombre de nouveautés, et les développeurs sont invités à en faire le tour, grâce notamment à la vidéo publiée pendant la WWDC. L’apport le plus important est sans conteste async/await, qui introduit les fonctions asynchrones dans le langage, une arrivée très attendue. Le fonctionnement sera dans les grandes lignes le même que dans d’autres langages gérant déjà ces fonctions, comme C# et JavaScript : on marque les fonctions que l’on souhaite rendre asynchrones avec le mot-clé async, puis on les appelle au moment opportun avec await.

C’est un ajout crucial pour un parallélisme efficace des calculs. En clair, les développeurs vont pouvoir tirer plus facilement partie des cœurs multiples des SoC Apple, ce qui revêt d’autant plus d’importance maintenant que la puce M1 alimente un nombre croissant de Mac. Swift 5.5 devrait donc aboutir à des applications plus réactives exécutant les calculs plus intensifs en arrière-plan.

WWDC SwiftWWDC Swift

C’est en fait tout le langage qui s’ouvre d’un coup à plusieurs formes de concurrence, c’est-à-dire de code ayant besoin d’être exécuté en même temps qu’un autre. Ce n’était pas impossible jusqu’à présent, mais plus complexe car il fallait passer par les completion handlers, avec lesquels l’erreur était plus courante.

Dans les sessions présentées à la WWDC, plusieurs sont ainsi consacrées à la concurrence d’exécution. Apple recommande de commencer par celle sur async/await avant d’aller plus loin :

SwiftUI fait un nouveau bond en avant

SwiftUI est un cadriciel (framework) déclaratif que les développeurs peuvent utiliser pour concevoir leurs interfaces avec une approche low code, c’est-à-dire en mettant peu ou pas les mains dans le « cambouis ».

Il est utilisé par Apple pour ses propres applications et est donc en parti enrichi en fonction des propres besoins de la firme dans ce domaine. Par exemple, la nouvelle application Météo dans iOS 15 a été rebâtie avec SwiftUI, comme Localiser dans watchOS 8 ou encore le panneau modal Apple Pay pour un paiement.

Les développeurs pourront bientôt utiliser la version 3.0 du cadriciel, qui apporte de très nombreux changements. On récupère notamment toutes les améliorations des fonctions asynchrones de Swift 5.5. par exemple, AsyncImage permet de charger de manière asynchrone des images SwiftUI depuis des URL.

L’élément List gagne plusieurs ajouts importants, dont refreshable qui permet de déclarer une liste comme compatible avec la manipulation « tirer pour rafraîchir ». Signalons aussi swipeAction qui permet la création d’actions de boutons personnalisée et surtout searchable, grâce auquel on peut ajouter un champ de recherche dans les listes. Ce dernier peut s’accompagner de modificateurs pour les suggestions.

Parmi les autres améliorations, on note accessibilityRepresentation pour ajouter les contrôles d’accessibilité standards dans des contrôles SwiftUI personnalisés, Materials qui permet d’ajouter des éléments d’arrière-plan dans les vues et de les personnaliser, une API focus pour les responders TextField ou encore le support du Markdown dans AttributeString.

Les ajouts en matière d’accessibilité sont particulièrement puissants, surtout à la lumière de ce qu’a présenté Apple quelques semaines avant la WWDC. Si vous souhaitez par exemple créer un stepper (contrôle classique incluant des boutons +/-) personnalisé, le contrôle héritera automatiquement de toutes les capacités d’accessibilité liées.

WWDC

Swift Playgrounds 4 compatible avec SwiftUI et plus complet

Cette application pour iPad a pour rappel vocation à « apprendre à coder en s’amusant ». Elle propose des activités ludiques, notamment des énigmes à résoudre, pour se familiariser avec les bases du développement et de Swift.

Le code est abordé sous forme d’instructions, par exemple pour faire bouger un personnage, liant une fonction à un résultat visuel. Les cours de base peuvent être enrichis avec des contenus supplémentaires, défis et autres depuis la bibliothèque intégrée. Bien que l’application soit appréciée, elle avait jusqu’à présent de sérieuses limitations. Elle pouvait essentiellement être utilisée pour le prototypage d’applications, surtout de ses vues.

Pour finaliser un projet, il fallait cependant le transmettre à Xcode sur un Mac, afin de le fignoler, le compiler et éventuellement l’envoyer pour approbation sur l’App Store. Swift Playgrounds 4, qui sortira plus tard cette année, s’affranchit de cette dépendance. Il s’agit d’une vraie nouvelle version majeure.

Elle autorisera enfin les développeurs débutants ou même confirmés à créer intégralement une application et à la compiler sur iPad, et même à l’envoyer sur l’App Store. En outre, cette version supportera SwiftUI et devrait simplifier le développement des interfaces, qui se prête bien aux contrôles tactiles de la tablette.

On attend d’en savoir plus, surtout sur les limites imposées par une utilisation sur tablette. Mais Apple semble sûre de son coup, puisque les développeurs pourront transférer un projet de Xcode vers Swift Playgrounds.

Swift Playgrounds

Des travaux éventuellement à prévoir pour les notifications

Les nouvelles plateformes d’Apple disposent d’un mode Concentration pouvant avoir un impact important sur la manière dont les informations sont délivrées par les applications. Les développeurs vont donc devoir vérifier comment se comportent les leurs, que ce soit tous iOS ou macOS.

Pour rappel, le mode Concentration permet de définir plusieurs modes sur le système selon les phases de la journée. On peut par exemple créer un mode « Travail », dans lequel des applications spécifiques auront le droit d’envoyer des notifications et pas d’autres. Plus précisément, les autres notifications seront mises dans un coin pour une consultation ultérieure. À l’inverse, un mode « Maison » laissera passer les messageries privées, les jeux et autres, en fonction des besoins de la personne.

Bien que cette fonction soit en théorie indépendante du système de notifications à proprement parler, il est recommandé aux développeurs de vérifier que les signaux émis par leurs applications sont compatibles avec iOS.

Dans l’absolu, ils n’ont pas besoin de changer quoi que ce soit. Mais s’ils se plongent dans les travaux, ils auront un nouvel enum, UNNotificationInterruptionLevel, permettant de définir le type de notification : active, passive, critical et time-sensitive. Le type critical est particulièrement important, puisqu’il permet de contourner n'importe quel mode silence activé par l’utilisateur. Mais les instructions d’Apple sont claires : l’utilisateur doit impérativement être informé de cette capacité et la valider.

Vie privée : nouvelle salve de contrôles

On entre dans une catégorie importante, la vie privée étant devenu l’un des plus forts arguments de vente chez Apple, si ce n’est le plus fort. Une grande partie de la communication de l’entreprise se focalise sur la tranquillité d’esprit que peuvent avoir les utilisateurs quand ils se servent des produits maison, et même si on ne peut pas en faire une règle absolue – personne ne se sert uniquement des applications Apple – aucune action ou découverte n’a pour l’instant démenti cette volonté.

iOS 15 ajoute par exemple la capacité pour l’utilisateur d’accepter manuellement à chaque lancement d’une application sa capacité à récupérer la position géographique. Un nouveau bouton a été ajouté pour les développeurs, LocationButton, disponible uniquement dans SwiftUI (au risque de faire grincer les nombreux développeurs qui ne s’en servent pas encore). Le bouton a son équivalent dans UIKit : CLLocationButton.

WWDC 2021

SharePlay est de son côté particulièrement intéressante pour les développeurs. Dans les systèmes Apple, la fonction permet pour rappel de partager une activité à travers un appel FaceTime. Les développeurs peuvent s’en servir pour rendre compatible tout ou partie de leurs applications.

SharePlay est exposé à travers Group Activities, avec tous les contrôles qui l’accompagnent. L’API Screen Time (Temps d’écran) dispose en outre de trois nouveaux frameworks, là encore liés aux autorisations et à la vie privée :

  • ManagedSettings : accorde ou restreint l’accès à certaines fonctions d’une application. En concordance avec ManagedSettingsUI, il permet de personnaliser les vues protégées.
  • FamilyControls : permet d’autoriser ou refuser des applications et sites web, et de vérifier que les enfants n’accèdent pas à certaines capacités, comme la suppression d’informations ou les achats.
  • DeviceActivity : fournit une méthode de surveillance des événements d’une application, sans récupération de données personnelles

Réalité augmentée : RealityKit 2 convertit les photos en modèles 3D

La première version (iOS 13), aura bientôt deux ans. Le cadriciel s’offre donc une révision majeure, aux capacités nettement étendues. On y trouve notamment la possibilité de créer et manipuler des shakers personnalisés, de nouvelles API dédiées à la lecture des animations et de nouveaux contrôles pour les personnages.

Le gros apport de cette version 2 est cependant Object Capture. Cette API introduit la photogrammétrie et permet de convertir des images 2D en objets 3D, via PhotogrammetrySession.

WWDC

Comme le montre la capture, on se sert de l’appareil photo de son iPhone pour prendre en photo un objet sous plusieurs coutures. Le processus va analyser les clichés, en déterminant les dimensions probables et en créer un modèle 3D photoréaliste, que l’on peut bien sûr retoucher ensuite.

Toutes les nouveautés ne sont pas encore là

Comme souvent, le programme de ce qui est réellement accessible aux développeurs varie. Il arrive que des fonctions présentées soient reportées, ne donnant pas satisfaction. Plus rarement, d’autres non abordées peuvent arriver. En outre, il ne s’agit que des versions majeures en « .0 », qui seront enrichies au fil des révisions.

Reste que le programme pour les développeurs est autrement plus chargé que pour les utilisateurs, que l’on parle de grand public ou d’entreprises. Les nouveautés annoncées sont à la fois nombreuses et importantes, tout particulièrement en ce qui concerne Swift. Le détail des annonces est disponible sur le site d’Apple, avec dans la plupart des cas des vidéos techniques de 20 à 45 min et des liens vers la documentation technique.

Commentaires (4)

Vous devez être abonné pour pouvoir commenter.

Abonnez-vous
votre avatar

TestFlight sur Mac


Yay! Je suis un QA heureux :D

votre avatar

Swift, le langage qu’Apple a proposé en 2014 comme remplaçant d’Objective-C,


Ah c’est donc ça. Je croyais que c’était en rapport avec SWIFT d’OpenStack… Ca prête à confusion ces entreprises qui utilisent les mêmes noms pour des trucs différents.

votre avatar

A ne pas confondre avec ça non plus >:D

votre avatar

Le contexte, c’est la vie :D

Chez Apple, un programme chargé pour Swift, SwiftUI et Swift Playgrounds

  • Xcode Cloud, le CI/CD hébergé par Apple

  • Swift 5.5 : fonctions asynchrones et concurrence de code

  • SwiftUI fait un nouveau bond en avant

  • Swift Playgrounds 4 compatible avec SwiftUI et plus complet

  • Des travaux éventuellement à prévoir pour les notifications

  • Vie privée : nouvelle salve de contrôles

  • Réalité augmentée : RealityKit 2 convertit les photos en modèles 3D

  • Toutes les nouveautés ne sont pas encore là

Fermer