Swift Connection 2024

La Tech Connection déroule le tapis rouge aux amoureux des technologies Apple au Théâtre de Paris.

Les 23 et 24 septembre derniers, le théâtre de Paris a accueilli la Swift Connection, l’événement phare organisé par Tech Connection, réunissant des développeurs iOS du monde entier. Cet événement a été l'occasion pour les passionnés de Swift et des technologies Apple de se rencontrer, d'échanger et de découvrir les dernières innovations du secteur.

Pour les personnes n’ayant pas eu l’opportunité d’assister à ce rassemblement, nous avons préparé pour vous un récapitulatif de quelques conférences auxquelles nous avons pu assister.

Swift-CowBox: Easy Copy-on-Write Semantics for Swift Structs

Rick Van Voorden - Développeur dans l’écosystème Apple depuis 2009

La conférence de Rick débute par un rappel simple, la différence entre la copie de données par valeur et par référence.

Quand on souhaite modéliser des données en swift, nous avons le choix entre les structures (copie par valeur) et les classes (copie par référence). Pour les personnes étrangères à ce concept, une copie par valeur consiste à dupliquer la variable, alors qu’une copie par référence est la création d’un pointeur vers cette ressource.

Cowbox est une collection de macro permettant aux structures de fonctionner comme les classes, donc avec une gestion des données par référence jusqu’à ce qu’une instruction d’écriture soit utilisée sur cette structure, la dissociant alors de cette référence. La gestion de la mémoire est bien plus efficace dans le cadre d’une application traitant un nombre important de données. L’utilisation de la librairie est simple et accessible car elle se base sur un système de macro.

Ces 3 macros vont générer pour nous tout le code relatif à la gestion de la mémoire pour les propriétés de la structure Person de façon totalement transparente pour l’utilisateur. Cette implémentation simple permet à n’importe qui de pouvoir vérifier avec des outils de mesure (Benchmark ou Instruments) si l’utilisation de Cowbox est pertinente pour son projet. Mais concrètement, qu’est-ce qu’on retrouve sous le capot ? 

La librairie génère une classe imbriquée définie à l’intérieur de notre structure, celle-ci va gérer le stockage et la transition de gestion par référence ou par valeur au sein de celle-ci. La librairie va encore plus loin en vérifiant qu’il n’existe pas déjà une propriété de cette valeur dans une autre structure équivalente, et ainsi éviter une duplication de données.

Pour résumer, Cowbox est un ensemble de macros pour Swift qui facilite la gestion de la sémantique de copie par écriture, en améliorant l'efficacité de la gestion de la mémoire et en simplifiant le code. Cela permet aux développeurs de travailler avec des types immuables tout en évitant des copies inutiles. C’est un atout que j’ai hâte de voir en action dans le développement d'applications performantes.

Swift 6 + Concurrency = Peace

Muralidharan Kathiresan

Durant sa présentation Muralidharan nous explique ce que l’arrivée de Swift 6 change au niveau de la gestion de la concurrence et comment l’adopter.

Dans un premier temps, Muralidharan nous apprend que l’utilisation de Swift 6 avec Xcode 16 nécessite une activation explicite et qu’Apple préconise la migration incrémentale vers Swift 6 en activant ses features sur les versions 5x via des flags de compilation.

Il nous explique ensuite le concept d'isolation et les 3 types existants (non isolated, static et dynamic) ainsi que la manière dont Swift vérifie cette isolation : static = compilation, dynamic = run time.

Il développe aussi la notion de domaine d’isolation (non-isolated, Actor isolated, Global actor isolated) avec schéma et exemples de code où non voyons comment communiquer entre les différents domaines.

Il développe enfin des points spécifiques: 

  • Comment gérer les variables globales.
  • Comment Swift 6 contrairement aux versions précédentes est capable de détecter qu’une variable a changé de domaine d’isolation et n’est plus utilisée dans son domaine précédent. Ce qui ne génère plus d’erreur de compilation
  • Comment Swift 6 permet de définir un paramètre d’isolation nullable dans les fonctions, ce qui permet un appel de la fonction depuis une zone non isolée
  • L’ajout de @preconcurrency pour gérer les dépendances qui ne gère pas la concurrence moderne. Ce qui permet un check au runtime de l’isolation contrairement à l’utilisation de nonisolated

L’arrivée de sending qui permet de passer une variable non Sendable dans un domaine isolé en changeant son appartenance de domaine.

Il conclut sa présentation en expliquant la difficulté de la migration, que la courbe d’apprentissage est forte, qu’il faut y aller étape par étape et bien comprendre les différents concepts.

Muralidharan nous a proposé un talk très dense au niveau contenu qu’il a fallu digérer. Il a fait un article détaillé sur ce qu’il a présenté sur son site: https://swiftpublished.com/article/strict-concurrency-in-swift-6-part-2

SwiftUI Animations

Chris Eidhof @ Objc.io

Une plongée dans les animations en Swift par le maître d’Objc.io

Chris part du classique changement d’état de la vue qu'il anime avec un simple .animation(.default, value: isOn) et nous explique tout le processus derrière cette instruction grâce à un arbre de rendu animé super efficace.

Il montre ensuite le PhaseAnimator qui permet de décomposer une animation en plusieurs étapes et d’appliquer des transformations en fonction de celles-ci.

Il nous montre également comment avec un KeyFrameAnimator on peut gérer différentes étapes mais en plus gérer indépendamment chacunes des valeurs en fonction du temps. Il fait référence aux animations Flash pour les plus vieux d’entre nous qui connaissent ( comme moi...)

Cela donne beaucoup de souplesse et permet vraiment de contrôler précisément l’animation. Cependant il rappelle qu’il faut faire attention à ce que la première closure soit légère car elle est appelée au moins 60 fois par seconde.

Finalement Chris réalise un ViewModifier permettant la création de particules. Pour cela il utilise une TimelineView, qui permet de récupérer la Date du rendu de la frame et donc le temps écoulé; et Canvas, qui permet de dessiner tout ce que l’on veut.

Cette extrême souplesse se fait au détriment de la lisibilité qui rend difficile le retour sur le code ultérieurement.

De mon point de vue Chris à réussi à faire un talk efficace, interactif  et très bien illustré.

On peut déjà utiliser .animation qui est disponible depuis la sortie de SwiftUI (iOS 13.0) ainsi que TimelineView (iOS 15.0+)  et Canvas. Les autres outils: PhaseAnimator, KeyFrameAnimator ne sont disponible que depuis iOS 17.0+ 

Vivement l’année prochaine que l’on puisse commencer à les utiliser sur les app qui suivent le classique minVersion = iOS current version - 2 

Mastering Swift for Scripting & Tooling

Natan Rolnik - Développeur iOS depuis 15 ans, en poste chez Monday

Comme de nombreux développeurs, Natan se retrouve souvent face à des tâches répétitives dans son quotidien. Que certaines soient gérées par des outils ou des scripts, il arrive fréquemment qu'aucun de ces derniers ne corresponde exactement à ses besoins. Il est alors courant de prendre l'initiative de créer soi-même les outils nécessaires pour automatiser ces tâches. Toutefois, il arrive parfois que ces outils soient développés dans un langage de programmation peu familier à l'équipe, ce qui peut poser un problème lorsque la connaissance de cet outil s'évanouit lors d'un changement de projet.

Depuis plusieurs années maintenant, Apple a mis à disposition Swift CLI. Cet outil met à la disposition des développeurs toute la puissance du langage Swift pour façonner des outils plus ou moins complexes avec l’ensemble des librairies Apple disponibles (Foundation, SwiftUI, …). Certains logiciels développés avec Swift CLI connaissent déjà un succès grandissant (notamment Tuist).

Dans un premier exemple en live coding, Natan nous propose de réaliser un simple script de modification d’image. La problématique abordée : Appliquer un badge à une icône d’application.

Crédit : Natan Rolnik, @SwiftToolKit.dev

En quelques minutes, avec l’aide de SwiftUI, Natan lance son exécutable depuis son Mac et génère le rendu désiré. Le code produit est accessible pour n’importe quel développeur connaissant les bases de Swift (cf github du projet).

Dans un second temps, Natan nous emmène (toujours en live coding) explorer les fonctionnalités avancées de l'outil Swift CLI. Devant nous et en quelques minutes encore, il écrit un programme, en Swift, utilisant “ArgumentParser” et “Stencil”. Plutôt simple comme programme, il permet de générer du code pour définir un modèle de données à partir d’un fichier.

En conclusion, cette conférence met en lumière les évolutions marquantes de Swift et son potentiel croissant au-delà de l’écosystème Apple. Grâce à des fonctionnalités apportées par le langage, Swift s'impose comme un excellent choix pour la création d'outils pratiques et maintenables par les développeurs. Cette conférence encourage chacun à transformer ses idées en outils concrets, renforçant ainsi la productivité individuelle et collective au sein de la communauté Swift.

One more thing

Au-delà de la mine d’information technique qu’apporte cet événement, c’est aussi l’occasion de revoir d’anciens collaborateurs et de rencontrer nos pairs. Que l’on soit débutant ou expérimenté, c’était une super opportunité de pouvoir échanger sur nos expériences, explorer les dernières tendances et débattre sur nos pratiques.

La présence de mentors, tel qu’Antoine Van Der Lee a également été un véritable atout. Sa passion pour le développement iOS et son expertise ont suscité beaucoup d’intérêt, et beaucoup ont saisi l’opportunité d’échanger directement avec lui et le remercier pour tout ce qu’il apporte à la communauté notamment grâce à son travail de vulgarisation des sujets techniques pointus.

One more one more thing

La Swift Connection 2024 a été un véritable succès, rassemblant la communauté des développeurs iOS autour de passion et d'innovation. 

Avec 21 présentations qui ont su plaire grâce à leur couverture variée et leur complémentarité, cet événement a permis aux participants de se tenir à jour sur les dernières tendances. Les places pour la prochaine édition sont déjà disponibles sur la billetterie et nous sommes déjà impatients de retrouver la Swift Connection l'année prochaine.

Retrouvez bientôt la playlist avec l’intégralité des sujets proposés sur la chaîne youtube de la tech connection.