Brief IA

Vibe coding SwiftUI apps is a lot of fun

💻 Code & Devvia Simon Willison·

Vibe coding SwiftUI apps is a lot of fun

Vibe coding SwiftUI apps is a lot of fun
En bref
1L'auteur partage son expérience de codage d'applications macOS avec SwiftUI sur un nouveau MacBook Pro.
2Le MacBook Pro M5 de 128 Go est performant pour exécuter des modèles de langage locaux.
3L'auteur a développé des outils alternatifs pour surveiller les performances, après avoir été frustré par Activity Monitor.
💡Pourquoi c'est importantL'innovation dans le développement d'applications peut améliorer considérablement l'expérience utilisateur et l'efficacité des outils de performance.
📄
Article traduit en français

Coder des applications SwiftUI est vraiment amusant

J'ai un nouvel ordinateur portable : un MacBook Pro M5 de 128 Go, qui, selon mes premières impressions, est très performant pour faire tourner de bons LLM locaux. Frustré par le Moniteur d'activité, j'ai décidé de créer quelques outils alternatifs pour surveiller les performances, et je suis très satisfait des résultats.

C'est ma deuxième expérience avec la création d'applications macOS ; la première était une application de présentation il y a quelques semaines.

Il s'avère que Claude Opus 4.6 et GPT-5.4 sont tous deux très compétents en SwiftUI, et une application SwiftUI complète peut tenir dans un seul fichier texte, ce qui signifie que je peux les utiliser pour développer quelque chose sans même ouvrir Xcode.

J'ai construit jusqu'à présent deux applications : Bandwidther, qui me montre quelles applications utilisent la bande passante réseau, et Gpuer, qui me montre ce qui se passe avec le GPU. À la suggestion de Claude, ces deux applications sont désormais des icônes dans la barre de menu qui ouvrent un panneau rempli d'informations.

J'ai d'abord construit cette application, car je voulais voir ce que Dropbox faisait. Voici à quoi cela ressemble :

J'ai partagé la transcription complète que j'ai utilisée pour construire la première version de l'application. Mes instructions étaient assez minimales :

  • Montre-moi combien de bande passante réseau est utilisée depuis cette machine vers Internet par rapport au LAN local.

(Ma curiosité initiale était de voir si Dropbox transférait des fichiers via le LAN depuis mon ancien ordinateur ou s'il téléchargeait depuis Internet.)

  • Crée un répertoire /tmp/bandwidther et écris une application Swift UI native qui me montre ces détails en temps réel.

Cela m'a permis d'obtenir la première version, ce qui m'a prouvé que cela valait la peine de poursuivre.

  • git init et git commit ce que tu as jusqu'à présent.

Puisque j'étais sur le point d'ajouter de nouvelles fonctionnalités.

  • Maintenant, suggère des fonctionnalités que nous pourrions ajouter à cette application, l'objectif est de fournir autant de détails que possible concernant l'utilisation du réseau, y compris par différentes applications.

L'avantage d'avoir Claude pour suggérer des fonctionnalités, c'est qu'il a une bien meilleure idée de ce qui est possible que moi.

Nous avons eu quelques échanges pour corriger des bugs, puis j'ai envoyé quelques autres instructions pour obtenir la mise en page à deux colonnes montrée ci-dessus :

  • Ajoute la bande passante par processus, relance l'application une fois cela fait.

  • Maintenant, ajoute la fonctionnalité de DNS inversé, mais assure-toi que les adresses IP d'origine sont toujours visibles aussi, bien que dans une police plus petite.

  • Redessine l'application pour qu'elle soit plus large, je veux deux colonnes : celle par processus à gauche et le reste à droite.

  • D'accord, fais-en une icône dans la barre des tâches, quand je clique sur l'icône, je veux que l'application apparaisse, l'icône elle-même devrait être un petit élément minimal.

Le code source et les instructions de construction sont disponibles dans simonw/bandwidther.

Pendant que je construisais Bandwidther lors d'une session, j'avais une autre session en cours pour créer un outil similaire pour voir ce que faisait le GPU. Voici ce que j'ai obtenu :

Voici la transcription. Celle-ci a nécessité encore moins d'instructions car j'ai pu utiliser Bandwidther en cours de développement comme exemple :

  • Je veux savoir combien de RAM et de GPU cet ordinateur utilise, ce qui est difficile car les éléments sur le GPU et la RAM ne semblent pas apparaître dans le Moniteur d'activité.

Cela a collecté des informations en utilisant system_profiler et memory_pressure et m'a donné une réponse—plus important encore, cela m'a montré que c'était possible, alors j'ai dit :

  • Regarde dans /tmp/bandwidther puis crée une application similaire dans /tmp/gpuer qui montre les informations ci-dessus de manière continue, ou peut-être le fait mieux.

Après quelques autres modifications de l'application Bandwidther, je lui ai dit de rattraper son retard :

  • Maintenant, jette un œil aux changements récents dans /tmp/bandwidther—cette application utilise maintenant une icône dans la barre système, imite cela.

C'est l'un de mes trucs préférés pour utiliser des agents de codage : les faire recombiner des éléments d'autres projets.

Le code pour Gpuer peut être trouvé dans simonw/gpuer sur GitHub.

Vous ne devriez pas faire confiance à ces applications

Ces deux applications sont un exemple classique de vibe coding : je ne connais pas Swift et je n'ai guère regardé le code qu'elles écrivaient.

Plus important encore, j'ai très peu d'expérience avec les internes de macOS, comme les valeurs que ces outils mesurent. Je ne suis absolument pas qualifié pour évaluer si les chiffres et les graphiques générés par ces outils sont crédibles ou précis !

J'ai ajouté des avertissements aux deux dépôts GitHub à cet effet.

Ce matin, j'ai vu Gpuer rapporter que je n'avais que 5 Go de mémoire restante alors que ce n'était clairement pas le cas (selon le Moniteur d'activité). J'ai collé une capture d'écran dans Claude Code et il a ajusté les calculs, et les nouveaux chiffres semblent corrects, mais je ne suis toujours pas sûr qu'il rapporte les choses correctement.

Je ne les ai partagées sur GitHub que parce que je pense qu'elles sont intéressantes comme exemple de ce que Claude peut faire avec SwiftUI.

Malgré mon manque de confiance dans les applications elles-mêmes, j'ai appris des choses utiles grâce à ces projets :

  • Une application SwiftUI peut accomplir beaucoup avec un seul fichier de code—voici GpuerApp.swift (880 lignes) et BandwidtherApp.swift (1063 lignes).

  • Envelopper diverses commandes terminal dans une interface utilisateur soignée avec Swift est facilement réalisable.

  • Claude a un goût de design étonnamment bon en ce qui concerne les applications SwiftUI.

  • Transformer une application en application de barre de menu nécessite juste quelques lignes de code supplémentaires.

  • Vous n'avez pas besoin d'ouvrir Xcode pour construire ce type d'application !

Ces deux applications ont pris très peu de temps à construire et m'ont convaincu que créer des applications macOS en SwiftUI est une nouvelle capacité que je devrais envisager pour mes projets futurs.

TwitterLinkedIn

Brief IA — Veille IA quotidienne

Toutes les innovations IA du monde entier, résumées et analysées automatiquement chaque jour.