Initiation à Combine et SwiftUI #3 : le modèle de la vue

Florent Morin |

Dans le précédent article de cette série, nous avons conçu un moteur de jeu qui exploite Combine. Cependant, les données renvoyées par notre moteur de jeu ne sont pas exploitables directement par SwiftUI. Il faut donc les transformer.

Heureusement, le framework Combine est particulièrement bien adapté pour faire ce tour de passe-passe qui rendra votre code plus lisible. Vous pouvez toujours télécharger le code source complet en ligne. Le fichier principalement concerné par le présent article est GameViewModel.swift en complément du code principal du playground.

Initiation à Combine et SwiftUI
  1. Les bases
  2. Le moteur de jeu
  3. Le modèle de la vue
  4. La vue en SwiftUI (à venir)

MVVM ?

Dans l’architecture MVVM, qui est plutôt plébiscitée lors de l’utilisation des composants SwiftUI et Combine, il y a trois composants :

  • le modèle : dans notre cas, c’est le moteur de jeu, la donnée brute
  • le modèle de la vue : c’est un modèle qui sort des données directement interprétables par la vue
  • la vue : c’est la partie qui interagit avec l’utilisateur, l'interface graphique

Le modèle de la vue, parfois appelé « vue modèle » du fait de la traduction de « ViewModel », doit donc fournir à la vue des données directement exploitables.


avatar MacPlusEtc | 

Super article, comme le précédent, qui vient titiller ma résolution plus ou moins ferme de ne pas me remettre à la programmation...
par expérience, c’est un exercice exquis de l’esprit, ou l’on peut mettre toute la chaleur de la camaraderie en travail d’équipe (et les empoignades interminables liées), tout le génie du détail et du travail bien fait (la séparation des trous domaines dans l’article m’y fait penser), toute l’esthétique et l’humour dans la présentation (voire dans le code), recevoir les compliments et la gratitude des utilisateurs, cultiver la fierté (voire l’orgueil) d’avoir ridiculisé des concurrents...

Et quelques années après, ne plus pouvoir faire tourner les applications ni même en consulter le code avec nostalgie... alors que les quelques dessins ou peintures effectués il y a plusieurs dizaines d’années sont toujours consultables...

Certaine cathédrales de 700 ans, autres merveilles du génie humain sont toujours la, même si nous sommes encore assez cons pour les laisser cramer... pas facile de trouver un réparateur de Mac plus ...

Bref, pour la retraite, tout en conservant un œil sur ces constructions incroyables de l’esprit humain, je pense plutôt me consacrer aux joies du travail manuel.
Mais... je reconnais que les outils qui nous sont donnés font envie.
Le Mac des années 1980 (épaulé par 4D) avait permis la manipulation aisée des l’interface graphique et des données...
la question que je me pose... celui des années 2020 sera-t-il celui qui permet de mettre en œuvre de façon simplifiée les nouveautés les plus stimulantes de l’informatique actuelle, à savoir l’intelligence artificielle, ou du moins, de l’apprentissage automatique ?

avatar Florent Morin | 

Bonjour et bonne année.

Merci pour ce commentaire.

Concernant l'apprentissage automatique, on l'a traité dans 2 articles sur l'approche développement :
https://www.macg.co/logiciels/2020/06/core-ml-apple-ouvre-un-nouveau-chapitre-de-son-histoire-115007
https://www.macg.co/mac/2020/11/apprentissage-automatique-les-puces-ax-et-m1-font-la-lecon-117951

Et également dans une conférence en vidéo :
https://www.macg.co/video/2020/11/une-conference-pour-mieux-comprendre-la-relation-entre-la-puce-m1-et-lintelligence-artificielle-118055

D'autres articles arriveront en 2021 pour traiter du sujet. Mais les sujets pré-cités donnent déjà des pistes de réflexion. :-)

avatar MacPlusEtc | 

Oui, oui, je les avais lus avec intérêt. Ma seule interrogation est de savoir si on a là les outils qui vont faire décoller l’usage (avec en renfort les caractéristiques des processeurs) ou si des outils supplémentaires sont nécessaires pour que plus de monde aborde le sujet... et si les macs ou iPad en seront le support?
Par exemple, inside Macintosh, dont je viens de me débarrasser avec infiniment de nostalgie pour réussir à tourner la page n’était pas un outil utilisable efficacement par une personne qui avait autre chose à faire que seulement programmer. 4D a été cet outil, et sa professionnalisation a entraîné celle de spécialistes d’autres domaines.

J’ai la conviction que l’intelligence artificielle est la prochaine étape importante après celle d’une interface utilisable, ce que le Mac a amené. Mais quels outils utilisables par des spécialistes d’autres domaines mais qui en seraient d’éminents utilisateurs seront fournis?

Et sinon, quelle interaction nouvelle avec les machines seront-elles mises en œuvre?
Pour cette dernière question, ceux qui tentent l’épreuve d’utiliser leur HomePod pour écouter un morceau précis (ou pire, dans une version précise) doivent avoir l’impression qu’on avait d’une interface graphique quand on débarquait sur les toutes premières versions de Windows ...

avatar Florent Morin | 

@MacPlusEtc

Les outils spécialisés arriveront probablement à partir de 2021-2022, quand la technologie arrivera à maturité complète côté Apple, et donc pour les développeurs.

La WWDC21 devrait arriver avec une meilleure exploitation du matérielle et également une mise à disposition pour les développeurs des technologies d’amélioration de modèles dans le cloud.

La stratégie d’Apple est la suivante :
- le développeur met à disposition un modèle pré-entrainé
- ce modèle est exploité par les apps
- si nécessaire, ce modèle est ré-entrainé via les apps
- les améliorations sont anonymisées
- ces améliorations sont ensuite centralisées pour une mise en commun
- le nouveau modèle qui en découle est distribué et ainsi de suite.

L’idée est de centraliser l’amélioration plutôt que la donnée personnelle. Ça permet de s’affranchir de bien des contraintes, mais c’est aussi un énorme challenge technique.

À partir de là, les experts dans des domaines spécifiques pourront l’utiliser en bénéficiant de l’expertise d’Apple. Toute la difficulté étant d’en faire un usage pertinent.

avatar MacPlusEtc | 

Merci pour toutes ces précisions.
C’est bien ce que j’avais compris de la généralité du process. L’idée de partager le modèle plutôt que les données me semble très intéressante... mais c’est plus une conviction éthique qu’une indubitable compétence dans le domaine😊...
Dites moi, sommes nous les seuls à nous passionner pour tout ça, où sommes nous les rares abonnés de Mac G à avoir métabolisé avec succès l’éthanol ingurgité la nuit dernière 🥳🍾🍷🥂?
Ou alors les seuls dingues pour consulter leurs ibidules un matin (bien entamé) de premier janvier 🙄?

avatar Jean-Baptiste Leheup | 

@MacPlusEtc

Non non vous n’êtes pas tout seuls... mais moi je cherche toujours à quel endroit on écrit « put X into button 1 of card Morpion » ou « goto 10 » dans tout ce bazar...

avatar Florent Morin | 

@j-b.leheup

Haha 😂

Je dois avouer que j’ai réagi avec un double « Ho p***** » lors de la WWDC19 :
- le potentiel est génial
- la montée en compétence va être rude.

Il faut vraiment penser différemment sa conception d’interfaces, mais aussi sa conception du code de manière générale.

Je pense que beaucoup vont rester sur le carreau.

Comme en 2008 où les développeurs macOS ont dû se recycler. Idem en 2015 avec Swift.
À chaque fois, une partie sort du circuit, d’autres entrent et ceux qui ont anticipé restent avec le bénéfice de l’expérience en plus.

On vit une aventure aussi effrayante qu’exaltante.

avatar Pyby | 

@FloMo

Merci pour ton partage d’expérience et retour clients.

C’est comme tu dis, assez effrayant et hyper intéressant aussi.
Bravo de suivre le forum un 01.01 😅

Je pense un peu aux devs chez Apple qui on sorti iOS 12.5, plus de 2 ans après iOS 12.0.
Ils doivent jongler entre les technos aussi à Cupertino.

Je trouve personnellement un peu dommage qu’Apple n’apporte que trop rarement des rétro compatibilités de ses nouveautés sur les anciens OS.

Tous dépend du produit (pixelmator et son AI, une app bancaire, d’assurance qui restitue des données et en envoie quelques unes...), toutes doivent arrêter le support sur de vieux appareils qui tournent encore, afin de profiter des nouvelles technos...

Ne supporter qu’iOS 14 serait top pour les devs, mais irréalisable pour le parc des appareils en circulation. Apple les a à l’usure. C’est dommage, mais c’est ainsi, les vieux appareils n’ont plus bcp de mises-à-jours sur l’AppStore (iOS 9, 10, 11, voir 12).

Bravo en tout cas d’apporter ton expertise récente chez tes clients.

avatar Florent Morin | 

@Pyby

Apple joue la carte de la rétro-compatibilité matérielle. iOS 14 est compatible iPhone 6s : rares sont ceux qui ont un appareil plus ancien.

J’avais fait des statistiques sur la compatibilité matérielle sur un gros parc d’utilisateurs.
On était à 95 % compatibles iOS 14. C’est raccord avec les chiffres de Mixpanel, qui annonce 94 % d’utilisateurs sous iOS 13.

Sur une nouvelle app, je me prend pas la tête : la dernière version de iOS suffit le temps de développer le marché.

Sur les apps plus anciennes, je suis sur 2 générations de iOS.

avatar Pyby | 

@FloMo

Merci une nouvelle fois pour le partage de tes stats.
Sur le marché qui m'impacte (la Suisse), je suis à 89.5% en iOS 13 et 14 avec les stats du produit (non celle d'Apple).

C'est donc un choix entre PO, parti-prenants et développeurs d'arrêter le support des anciens appareils.
Je suis toujours surpris de croiser des personnes (famille ou collègues) avec un iPhone 6 et même 5C. 😇

On a perdu le simulateur iOS 9 avec Xcode 12. le 32 bits, c'est fini… alors bon, au bout d'un moment… oui c'est le support matériel qu'Apple suit, mais bon, ce n'est pas parce qu'Apple me fait vivre, que j'apprécie tous ce qu'ils font. Surtout le green watching… C'est sûrement les "moins pires" de classe, et qu'il faut avancer face à la concurrence.

Même constat que toi, pour une nouvelle app, la question se pose moins. En l'occurence, tvOS 14 minimum et SwiftUI pour la dernière.

Tiens, hors sujet, pourquoi l'app iGen sur tvOS n'est pas lié au même app id que l'app iOS/iPad OS iGen? Vous auriez tout à y gagner non ?

Merci pour les révisions Combine + SwiftUI de début d'année 😄

avatar Florent Morin | 

@Pyby

« 89.5% en iOS 13 et 14 » : ha oui, c’est plutôt léger comparativement à ce que j’ai pu observer en France. Et on était en octobre. J’ai quitté ce client depuis.

Concernant les apps iGeneration, ce n’est pas ma partie. Je suis externe à l’entreprise : je rédige juste quelques articles.

Et concernant la partie green, avec ou sans washing,... stay connected 😉

avatar Florent Morin | 

@MacPlusEtc

Puisque j’ai rédigé l’article, il me semble normal d’être présent pour recueillir les remarques et les interrogations 🙂

Mais oui, j’ai bossé toute la journée. Apple nous a donné beaucoup de nouveautés à « ingurgiter » cette année. Je commence les mises en production de SwiftUI / Combine chez mes clients. Mais, puisque la technologie est jeune, ça nécessite un temps de développement plus important. On n’a aucun existant qu’on peut reprendre.

Période compliquée entre demande encore faible et temps de travail élevé.

Après, on arrive à 80 % d’utilisateurs sur iOS 14, 95 % si on inclut iOS 13 qui est compatible. Quand les clients seront matures sur le sujet, je serai prêt. En attendant, je bosse dur. ^*

avatar MacPlusEtc | 

@FloMo

"Période compliquée entre demande encore faible et temps de travail élevé."

Je devine. J’ai, connu les années à 14h par jour sans week end, sans vacances, drogué à la programmation. Mais,c’était sans doute plus facile dans les années 80 90, nous étions des pionniers. Désormais le marché est mûr et donc plus encombré, surtout moins enthousiasmant.
C’est pourquoi je me demande si l’intelligence artificielle n’est pas le domaine où il importe de se lancer avant les autres. Avec toutes ses incertitudes, dues précisément à sa jeunesse.
Bon courage, en tout cas, et bonne réussite, merci pour vos articles.

avatar StephanMart | 

"Par exemple, inside Macintosh, dont je viens de me débarrasser avec infiniment de nostalgie pour réussir à tourner la page …"

Pourquoi se débarrasser de l'inside Macintosh, c'est collector. 😀

avatar MacPlusEtc | 

@StephanMart

"
Pourquoi se débarrasser de l'inside Macintosh, c'est collector"

Bien sûr... c’est pour cette raison que je l’ai gardé tant de temps. Mais le début de retraite est le moment où l’on s’attaque à tous les rangements que l’on a toujours reportés. Et où l’on prend conscience qu’il reste finalement peu de temps valide. Il faut donc bien l’exploiter. Est-ce que je veux vraiment m’y replonger?
J’ai eu plus de mal à me débarrasser de la trace de toutes les applications développées. Avais-je envie d’en écrire l’histoire et d’en montrer toutes les subtilités? Qui s’y intéresserait?
Il vaut mieux continuer à créer, à apprendre. Je me demande si cinéma 4D (amusant de retrouver 4D) ne serait pas ce qui me tenterait le plus. En dehors du travail purement manuel.

CONNEXION UTILISATEUR