iOS 15 : la migration vers SwiftUI à l'épreuve d'une app existante

Florent Morin |

La dernière version de SwiftUI a tout pour plaire : plein de nouvelles possibilités, un fonctionnement optimal avec Swift concurrency et l’héritage de la très large compatibilité d'iOS 15. Tout ceci est bien joli, mais qu’en est-il dans la vraie vie, celle du quotidien des développeurs ? Nous avons tenté l’expérience.

Beaucoup de nouvelles possibilités

Après avoir tâtonné en 2019, puis augmenté significativement les possibilités du framework de création d'interfaces en 2020, Apple passe cette année à la vitesse supérieure en utilisant SwiftUI dans ses propres applications. Météo a été complètement réécrite, la nouvelle section activité dans Notes en tire parti, et on peut aussi citer Raccourcis, Apple Pay et quelques fonctionnalités d'iOS 15.


avatar Nico_Belgium | 

Article très intéressant et enrichissant. Merci 👍

J’ai commencé à mettre les mains dans le cambouis depuis quelques semaines avec 100DaysOfSwiftUI.

Ce sont de nouvelles habitudes à apprendre mais c’est vrai que ça a l’air incroyablement…facile 😱

avatar Florent Morin | 

@Nico_Belgium

Merci ☺️

Le tout est d’avoir un code bien structuré. Cela impose quand même une certaine discipline pour s’y retrouver.

C’est un workflow à appréhender. Personnellement, c’est surtout Combine qui m’a travaillé au début. J’y ai passé un peu de temps.

avatar Nico_Belgium | 

@FloMo

J’ai déjà commencé à toucher un peu à Combine depuis quelques projets. C’est vrai que c’est pas facile à apprendre au début. Mais au plus je l’utilise au plus je me rend compte à quel point ça simplifie le contact entre l’interface et le modèle.

Et là du coup en commençant à toucher à SwiftUI, je commence à voir toute la magie de ces 2 éléments combinés.

Mais remplacer tout un projet UIKit par du SwiftUI. Faut avoir du courage ^_^

avatar macbook60 | 

@FloMo

Bonsoir
J attend le nouveau swift playground sur iPad Pro bien sur ( en espérant qu’il soit compatible avec le modèle 2018) pour m’essayer au code

avatar Florent Morin | 

@macbook60

Pour « s’amuser » avec SwiftUI, la version actuelle de Swift Playgrounds fait le job. 😁

avatar macbook60 | 

@FloMo

En allant dans nouveau playground ?

avatar Florent Morin | 
avatar macbook60 | 

@FloMo

Merci c’est très sympa petit plus ils auraient pu mettre la traduction en français

avatar Florent Morin | 
avatar macbook60 | 

@FloMo

Merci

avatar quentinf33 | 

@Nico_Belgium

C’est super intéressant, je ne connaissais absolument pas 100DaysOfSwiftUI ! Merci ☺️

avatar Nico_Belgium | 

@quentinf33

Avec plaisir :)

J’ai l’impression que le cours est autant fait pour les débutants que pour les avancés. Et c’est très pédagogue. 👍 vivement conseillé.

avatar monsieurg33K | 

Je n’ai jamais codé quoi que ce soit, je n’y connais rien mais j’aimerais apprendre à développer une app en Swift pour iOS par exemple. Une bible / cours, etc à me recommander en particulier ?

avatar Leoowww | 

@monsieurg33K

Ça m’intéresse aussi 😊

avatar iValFR | 

@monsieurg33K

Si tu parles un peu anglais, les cours de Paul Hudson (hackingwithswift.com) sont géniaux ! Tu as le choix entre une formule (100 days of SwitUI) pour apprendre avec des petits exercices tous les jours, ou une version sous forme de projets à réaliser (Hacking with Swift) dispo pour SwiftUI et UIKit :)

avatar Florent Morin | 

@monsieurg33K

Je confirme : Paul Hudson. Et les tutoriels Apple.

avatar djpoulet | 

@monsieurg33K

Si tu veux commencer avec des cours en français très pédagogiques et sérieux je ne peux que te conseiller les cours de Maxime Britto sur Purple Giraffe : https://www.purplegiraffe.fr/p/purple-giraffe

Ceux de Paul Hudson sont très bien aussi mais tout est en anglais.

avatar iValFR | 

Merci pour ce retour d'expérience très intéressant !
J'avais développé une petite app avec SwiftUI, le travail sur l'interface est très agréable !

avatar Tibimac | 

Merci pour l'article néanmoins cette app à 4500 lignes de code est LOIINNN d'être représentative de la majorité des apps sur le marché. Une app avec si peu de ligne de code (en même temps elle e fait vraiment pas grand chose) c'est rare.

Une migration de ce type sur une app comme happn ou Lydia c'est clairement un chantier titanesque et d'autant plus qu'au final le rapport coût/bénéfice est pas forcément ultra intéressant je pense.

avatar Florent Morin | 

@Tibimac

C’est en effet ce que je précise dans l’article. Le but est d’avoir un indicateur pour se projeter.

Pour une petite app, c’est clairement bénéfique car on est dans la situation idéale où on répond à toutes les problématiques. La migration ne coûte pas grand chose. Et le bénéfice est réel.

Pour une nouvelle app, qui commence petite, c’est intéressant aussi de ne pas commencer avec de la dette technique. Le temps que l’app grossisse, SwiftUI 4 sera là. La vélocité offerte par SwiftUI est ici salvatrice.

Pour les apps plus conséquentes, il y a aujourd’hui des contraintes auxquelles SwiftUI ne saura pas répondre. C’est certain.

Par contre, si on considère les indispensables (ou presque) compagnons de SwiftUI, il y a déjà du boulot jusqu’à l’année prochaine.
Swift Concurrency va apporter lisibilité et solidité au code.
Combine va permettre de passer UIKit en programmation réactive sans framework externe.

La combinaison des deux est un bénéfice en termes de lisibilité, de fiabilité, de performances et donc de temps de maintenance. Avec un peu de chance, cela permettra également de déceler les lacunes dans le design du code.

Déjà, sur une app de taille moyenne (70-80 écrans), pour rattraper la dette technique sur ces 2 points, il faudra bien une année si on considère les évolutions du quotidien. Ce qui nous amène à SwiftUI 4 qui répondra à encore plus de problématiques.

Puis les écrans pourront être migrés tranquillement vers SwiftUI. Avec une bonne architecture, ça peut même se faire en déploiement in-app progressif afin de s’assurer de la solidité.

Le moment de bascule vers du full-SwiftUI deviendra alors mécaniquement moins coûteux en temps.

avatar Tibimac | 

@FloMo

En effet. Malheureusement commençant une nouvelle app qui sera peut-être à terme assez conséquente et avec un timing un poil serré je vais peut-être partir sur du UIKit quand même mais je vais me reposer la question suite à toute les nouveautés qu'il semble y avoir d'autant que l'app en question sera iOS 15 minimum.

avatar Florent Morin | 

@Tibimac

Belle aventure 😁

Ça dépend des contraintes propres à l’app. Mais 1 an, ça passe très vite. La flexibilité offerte par SwiftUI est quand même un sacré atout.

Après, sur du iOS 15 only, je pense qu’il est impératif de considérer a minima Swift Concurrency et Combine. Pour le coût de maintenance et la visibilité à moyen / long terme.

avatar Tibimac | 

@FloMo

Je prends bonne note de ce feedback et je vais me pencher là dessus 🙂
Merci 😉

avatar Link1993 | 

Un peu HS, mais l'AFIS qui génère des polémiques, c'est un peu parce que ceux (qui dénoncent leurs articles) qui ont lancé la polémique sont ceux qui sont un peu dans le dogme......

Suffit de suivre François Marie Breon, président de l'AFIS pour le comprendre...

avatar DahuLArthropode | 

@Link1993

Bof... ni la science ni la raison ne commandent d’exploiter industriellement toute découverte. L’AFIS semble systématiquement prendre parti pour l’application et la diffusion sans précaution, quel que soit le sujet. Ce n’est pas de la science, c’est une vision de la société. La recherche, c’est de la science, ce qu’on fait de ses résultats, c’est de la politique.

https://www.ladn.eu/media-mutants/reseaux-sociaux/qui-sont-defenseurs-science-roulent-pour-industriels/

Sinon, je trouve très bien qu’iGen, sans prendre position, informe simplement ses lecteurs de l’existence d’une polémique, évitant ainsi que cet article passe pour une incitation à adopter les vues de l’AFIS.

avatar Link1993 | 

@DahuLArthropode

Bof, quand les quelques articles considèrent que l'AFIS est Climate sceptique, c'est un peu oublier que le président est un des rédacteurs principaux de l'avant dernier rapport du GIEC et qu'il est au contraire très à fond sur le sujet, et tout ça à cause d'un article qui a 15 ans qui cite le paragraphe d'une seule personne... La, c'était de la recherche de petite bête par les attaquants...

Qui plus est, je ne sais pas si vous avez déjà lu un article de l'AFIS, ce n'est pas de La Défense de l'industrie comme prétendu non plus. Y'a de tout, et certains articles vont dans le sens des industriels, parce que la science est sur le même sujet et il y a aussi très majoritairement d'autres articles parlant de sujets qui n'ont aucun rapport avec BIG XXXX, et là, il existe aucune polémique. On peut pas tout à coup faire un article en disant que la terre est plate parce qu'un big agro a dit que la terre est ronde. Encore plus dans un journal qui se veut basé sur la littérature scientifique et qui ne parle pas majoritairement pas sur ces sujets considérés comme polémiques...

Ces attaques sont surtout pour origine que le milieu scientifique (souvent des doctorants, ou jeunes chercheurs) ont commencé à corriger certaines remarques fausse voire mensongères de certains articles ces derniers temps.

Tu remarqueras que la lecture du dernier livre de Foucart (qui est un fervent critique de l'AFIS et travaillant au monde) permet de déceler aucune preuve indiquant un financement par ces industriels. Ce n'est que de l'attaque sans sources.

Bref, les attaques contre ce journal me font beaucoup penser à la dernière polémique de Reporterre attaquant Jean Marc Jancovici parce qu'il est pour le nucléaire alors que son sujet principal est le changement climatique et qu'il va falloir consommer moins d'énergie... (et il est aussi très criticaille sur d'autre sujets, mais ils ne sont pas abordés bien sûr...)

avatar Derw | 

@Link1993

Je ne saurais critiquer (au sens 1er) cette association, puisque je ne connais rien d’elle. Toutefois, à le lecture de sa fiche Wikipedia je vois 3 soucis :
1. Ses analyses doivent manquer d’objectivité puisque elles s’appuyent sur un seul courant de pensée (on va dire 1,5 : le rationalisme et la zététique).
2. De part ses sujets de prédilections et son traitement de ces sujets elle SEMBLE avoir une orientation opposée au courant de pensée écologique actuel. D’une façon générale c’est une bonne chose d’avoir des débats avec des contradicteurs. Toutefois, en période de crise (ce qui est notre cas) cela peut parfois être contreproductif en enlisant un débat alors qu’il faut agir. De plus, dans le contexte actuel (montée en puissance du courant écologique après des années d’ostracisme) cela ressemble pas mal à un réflexe de défense de l’ancien courant dominant…
3. Cela peut faire penser à ce l’appel d’Heidelberg, ce qui serait pour le coup vraiment discutable…

avatar chepiok | 

pour les anglophones, raywenderlich.com a des tutos top aussi

avatar Derw | 

N’étant pas développeur iOS (voire pas développeur du tout), je ne saurais juger cet article. Toutefois, vu de l’extérieur il est bien tentant de s’y mettre. Par contre, je suis super surpris que SwiftUI ne gère pas encore les web View !

CONNEXION UTILISATEUR