{"id":438713,"date":"2025-10-04T13:32:38","date_gmt":"2025-10-04T13:32:38","guid":{"rendered":"https:\/\/www.europesays.com\/fr\/438713\/"},"modified":"2025-10-04T13:32:38","modified_gmt":"2025-10-04T13:32:38","slug":"de-zero-formation-a-une-app-ios-et-android","status":"publish","type":"post","link":"https:\/\/www.europesays.com\/fr\/438713\/","title":{"rendered":"de z\u00e9ro formation \u00e0 une app iOS et Android"},"content":{"rendered":"<p>Trois ans sans mise \u00e0 jour, 98 d\u00e9pendances obsol\u00e8tes, des lecteurs qui signalaient des bugs. L\u2019application Frandroid n\u00e9cessitait une refonte compl\u00e8te, mais avec une roadmap charg\u00e9e et des projets strat\u00e9giques \u00e0 mener, elle n\u2019\u00e9tait pas la priorit\u00e9 de notre \u00e9quipe technique. J\u2019ai d\u00e9cid\u00e9 de tenter une exp\u00e9rience : la moderniser moi-m\u00eame, sans formation en d\u00e9veloppement, juste avec Claude Code comme assistant. Trois jours plus tard, voici le r\u00e9cit complet de cette exp\u00e9rience.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/frandroid-app-grande.jpeg\" class=\"article-content__figure\" rel=\"noopener\"><img fetchpriority=\"high\" decoding=\"async\" loading=\"eager\" width=\"1200\" height=\"800\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/frandroid-app-grande.jpeg\" alt=\"\" class=\"wp-image-2819315 wp-image wp-image\"  \/><\/a><\/p>\n<p>On le sait, l\u2019intelligence artificielle transforme notre quotidien de multiples fa\u00e7ons. <\/p>\n<p class=\"bottom-text\">                <a href=\"https:\/\/www.youtube.com\/watch?v=P9Bybi8cXlk\" target=\"_blank\" rel=\"noopener\">Lien YouTube<\/a>                                    <a href=\"https:\/\/www.youtube.com\/subscription_center?add_user=FrAndroidTube\" target=\"_blank\" rel=\"noopener\">S\u2019abonner \u00e0 Frandroid<\/a>                            <\/p>\n<p>                Ce contenu est bloqu\u00e9 car vous n\u2019avez pas accept\u00e9 les cookies et autres traceurs. Ce contenu est fourni par YouTube.<br \/>Pour pouvoir le visualiser, vous devez accepter l\u2019usage \u00e9tant op\u00e9r\u00e9 par YouTube avec vos donn\u00e9es qui pourront \u00eatre utilis\u00e9es pour les finalit\u00e9s suivantes : vous permettre de visualiser et de partager des contenus avec des m\u00e9dias sociaux, favoriser le d\u00e9veloppement et l\u2019am\u00e9lioration des produits d\u2019Humanoid et de ses partenaires, vous afficher des publicit\u00e9s personnalis\u00e9es par rapport \u00e0 votre profil et activit\u00e9, vous d\u00e9finir un profil publicitaire personnalis\u00e9, mesurer la performance des publicit\u00e9s et du contenu de ce site et mesurer l\u2019audience de ce site <a href=\"#\" class=\"js-privacy\" target=\"_blank\">(en savoir plus)<\/a>            <\/p>\n<p>                En cliquant sur \u00ab J\u2019accepte tout \u00bb, vous consentez aux finalit\u00e9s susmentionn\u00e9es pour l\u2019ensemble des cookies et autres traceurs d\u00e9pos\u00e9s par Humanoid et <a class=\"embed-consent-overlay-vendors-link\" href=\"#preferences-vendeurs\">ses partenaires<\/a>.            <\/p>\n<p>                Vous gardez la possibilit\u00e9 de retirer votre consentement \u00e0 tout moment. Pour plus d\u2019informations, nous vous invitons \u00e0 prendre connaissance de notre <a href=\"https:\/\/www.frandroid.com\/politique-cookies\" target=\"_blank\" rel=\"noopener\">Politique cookies<\/a>.            <\/p>\n<p>            J\u2019accepte tout        <\/p>\n<p class=\"embed-consent-overlay-manage-choices\">            <a href=\"#preferences-publicitaires\">G\u00e9rer mes choix<\/a>        <\/p>\n<p><a target=\"_blank\" href=\"https:\/\/www.youtube.com\/watch?v=P9Bybi8cXlk\" rel=\"noopener\">Dans une r\u00e9cente vid\u00e9o<\/a>, Arnaud d\u00e9taillait ses usages quotidiens de l\u2019IA : organiser des vacances en compilant itin\u00e9raires et recommandations, trier des newsletters pour en extraire l\u2019essentiel, g\u00e9n\u00e9rer des tableaux comparatifs de produits tech, relire et am\u00e9liorer des brouillons d\u2019articles, poser des questions sur des sujets complexes, trouver des recettes adapt\u00e9es \u00e0 mes contraintes alimentaires, demander des d\u00e9finitions vulgaris\u00e9es, brainstormer sur de nouveaux formats \u00e9ditoriaux, ou encore cr\u00e9er des visuels pour illustrer des concepts abstraits. Ces usages sont devenus banals pour des millions d\u2019utilisateurs. Mais utiliser l\u2019IA pour d\u00e9velopper une application mobile compl\u00e8te ? C\u2019est une tout autre affaire.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/code-frandroid.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"750\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/code-frandroid-1200x750.jpg\" alt=\"\" class=\"wp-image-2819301 wp-image\"  \/><\/a><\/p>\n<p>Ces outils d\u2019assistance facilitent des t\u00e2ches pr\u00e9cises et d\u00e9limit\u00e9es. Mais qu\u2019en est-il de projets plus ambitieux, n\u00e9cessitant de la coh\u00e9rence sur la dur\u00e9e et une bonne compr\u00e9hension technique ? J\u2019ai voulu tester les limites de cette technologie en me lan\u00e7ant un d\u00e9fi : moderniser l\u2019application mobile de Frandroid sans formation en d\u00e9veloppement. <\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/image-6-2.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"962\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/image-6-2-1200x962.jpg\" alt=\"\" class=\"wp-image-2819303 wp-image\"  \/><\/a><\/p>\n<p>Arm\u00e9 d\u2019un <a href=\"https:\/\/www.frandroid.com\/guide-dachat\/guides-dachat-ordinateurs\/981469_macbook-air-macbook-pro-macbook-m1-quel-portable-apple-choisir\" target=\"_blank\" rel=\"noopener\">MacBook Pro<\/a>, d\u2019un <a href=\"https:\/\/www.frandroid.com\/test\/2345252_test-iphone-16-pro\" target=\"_blank\" rel=\"noopener\">iPhone 16 Pro<\/a>, d\u2019un <a href=\"https:\/\/www.frandroid.com\/marques\/google\/2769555_test-du-google-pixel-10-pro-le-smartphone-android-le-plus-abouti\" target=\"_blank\" rel=\"noopener\">Pixel 10 Pro<\/a> et de <a href=\"https:\/\/www.frandroid.com\/telecharger\/apps\/claude-ai\" target=\"_blank\" rel=\"noopener\">Claude Code<\/a> (forfait Max pendant cette exp\u00e9rience, Pro autrement), j\u2019ai entrepris de migrer une app Flutter vieille de trois ans vers une architecture moderne. <\/p>\n<p>Retour sur une semaine d\u2019exp\u00e9rimentation qui interrogent l\u2019avenir du d\u00e9veloppement logiciel.<\/p>\n<p>Une application laiss\u00e9e \u00e0 l\u2019abandon par n\u00e9cessit\u00e9<\/p>\n<p>Chez Humanoid, l\u2019entreprise qui \u00e9dite Frandroid, l\u2019\u00e9quipe technique jongle avec une feuille de route charg\u00e9e. Maintenir des sites \u00e0 forte audience demande des investissements consid\u00e9rables en infrastructure et d\u00e9veloppement. Notre roadmap est dense, et l\u2019application mobile Frandroid n\u2019y figure malheureusement pas comme priorit\u00e9.<\/p>\n<p>Pourtant, cette application universelle d\u00e9velopp\u00e9e en Flutter sert quotidiennement plusieurs dizaines de milliers de lecteurs sur iOS et Android. Flutter, le framework open source de Google, permet de cr\u00e9er une seule base de code fonctionnant sur les deux syst\u00e8mes d\u2019exploitation. Un choix judicieux \u00e0 l\u2019\u00e9poque, mais le code n\u2019avait pas \u00e9t\u00e9 touch\u00e9 depuis au moins trois ans.<\/p>\n<p>Les retours utilisateurs s\u2019accumulaient : bugs d\u2019affichage, plantages occasionnels, d\u00e9pendances obsol\u00e8tes, fonctionnalit\u00e9s manquantes. L\u2019\u00e9cart entre les standards actuels et notre application se creusait dangereusement. J\u2019ai d\u00e9cid\u00e9 de tenter une exp\u00e9rience : moderniser cette application en utilisant exclusivement l\u2019IA comme assistant de d\u00e9veloppement, tout en documentant chaque \u00e9tape du processus.<\/p>\n<p>Claude Code : un terminal qui comprend votre projet<\/p>\n<p>Le march\u00e9 propose de nombreux outils promettant de cr\u00e9er des applications sans coder : Bubble, Adalo, FlutterFlow ou encore Webflow pour les sites web. Ces solutions \u00ab\u00a0no-code\u00a0\u00bb fonctionnent sur un principe de blocs \u00e0 assembler visuellement. Mais avec l\u2019IA g\u00e9n\u00e9rative, l\u2019approche change radicalement. Plut\u00f4t que d\u2019utiliser des outils simplifi\u00e9s, on peut d\u00e9sormais employer les m\u00eames environnements que les d\u00e9veloppeurs professionnels.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/image-5.png\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"859\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/image-5-1200x859.png\" alt=\"\" class=\"wp-image-2819255 wp-image\"  \/><\/a><\/p>\n<p>J\u2019ai choisi Claude Code d\u2019Anthropic pour cette exp\u00e9rience. Contrairement aux assistants IA classiques, Claude Code s\u2019int\u00e8gre directement dans le terminal de l\u2019ordinateur. Il peut lire des fichiers, ex\u00e9cuter des commandes, modifier du code et m\u00eame lancer des builds. Cette int\u00e9gration profonde lui permet de comprendre la structure compl\u00e8te d\u2019un projet et d\u2019agir comme un v\u00e9ritable collaborateur technique.<\/p>\n<p>L\u2019avantage sur des outils comme GitHub Copilot ou Cursor r\u00e9side dans son approche conversationnelle structur\u00e9e. Claude Code ne se contente pas de sugg\u00e9rer des lignes de code : il planifie, organise et documente son travail. Pour un non-d\u00e9veloppeur, cette guidance m\u00e9thodique fait toute la diff\u00e9rence entre un projet qui aboutit et un abandon frustrant.<\/p>\n<p>Ma premi\u00e8re interaction avec l\u2019outil consistait simplement \u00e0 expliquer mon objectif : migrer l\u2019application vers une Clean Architecture. En quelques secondes, Claude Code a g\u00e9n\u00e9r\u00e9 une todo-list d\u00e9taill\u00e9e de quinze \u00e9tapes. Je vous avoue, \u00e0 ce moment-l\u00e0, je ne pensais pas du tout y arriver.<\/p>\n<p>Vingt heures pour transformer une architecture compl\u00e8te<\/p>\n<p>La migration vers Clean Architecture \u00e9tait le d\u00e9fi principal. Cette approche, th\u00e9oris\u00e9e par Robert C. Martin (Uncle Bob), organise le code en couches distinctes : Domain (logique m\u00e9tier pure), Data (acc\u00e8s aux donn\u00e9es) et Presentation (interface utilisateur). L\u2019objectif ? S\u00e9parer clairement les responsabilit\u00e9s pour faciliter la maintenance et les tests.<\/p>\n<p>L\u2019application originale m\u00e9langeait tout dans les m\u00eames fichiers. Le code g\u00e9rant l\u2019affichage, le stockage local et la logique m\u00e9tier cohabitait dans une architecture monolithique difficile \u00e0 maintenir. Claude Code a proc\u00e9d\u00e9 m\u00e9thodiquement : migration fonction par fonction, en commen\u00e7ant par les plus simples comme le mode sombre.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-093523.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"779\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-093523-1200x779.jpg\" alt=\"\" class=\"wp-image-2819279 wp-image\"  \/><\/a><\/p>\n<p>La premi\u00e8re session a dur\u00e9 quatre heures. Claude Code lisait simultan\u00e9ment cinq \u00e0 dix fichiers pour comprendre le contexte, proposait des structures de code, expliquait ses choix et impl\u00e9mentait les modifications. Mon r\u00f4le consistait \u00e0 valider les d\u00e9cisions, tester les r\u00e9sultats et signaler les probl\u00e8mes. Un cycle question-action-validation s\u2019est rapidement \u00e9tabli.<\/p>\n<p>                <img decoding=\"async\" width=\"1200\" height=\"446\" loading=\"lazy\" alt=\"Illustration\" title=\"Illustration\" class=\"is-radiusless placeholder-default wp-image\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/09\/illustration-1200x446.jpg\" \/>            <\/p>\n<p>\n                    HONOR 400, le choix \u00e9vident                <\/p>\n<p class=\"has-text-weight-medium is-size-6 is-line-height-normal\">\n                    Parfois, il vaut mieux r\u00e9fl\u00e9chir \u00e0 deux fois avant de choisir son smartphone\u2026\u202fL\u2019innovation et la performance du HONOR 400, plus accessibles que jamais. Offre disponible jusqu\u2019au 07\/10                <\/p>\n<p>Au total, vingt heures de collaboration productive ont suffi pour migrer compl\u00e8tement l\u2019architecture, r\u00e9soudre les conflits de d\u00e9pendances, optimiser les performances et ajouter de nouvelles fonctionnalit\u00e9s. Quatre-vingt fichiers modifi\u00e9s, plus de trois mille lignes de code \u00e9crites, quinze erreurs critiques r\u00e9solues. Un d\u00e9veloppeur Flutter senior aurait probablement accompli ce travail en moins d\u2019une semaine. Un junior aurait n\u00e9cessit\u00e9 une \u00e0 deux semaines. Pour quelqu\u2019un sans formation en d\u00e9veloppement, l\u2019estimation tourne autour de trois \u00e0 six mois d\u2019apprentissage.<\/p>\n<p>Les obstacles techniques et leurs solutions pragmatiques<\/p>\n<p>Le gros probl\u00e8me est survenu lors de la compilation iOS. Un message d\u2019erreur cryptique signalait un conflit de d\u00e9pendances entre google_mobile_ads et Firebase autour d\u2019une biblioth\u00e8que nomm\u00e9e nanopb. Sur Android, tout fonctionnait normalement gr\u00e2ce \u00e0 Gradle qui g\u00e8re mieux ces situations. Mais iOS, avec CocoaPods, ne pouvait pas r\u00e9soudre le conflit.<\/p>\n<p>Claude Code a analys\u00e9 les logs, identifi\u00e9 la source du probl\u00e8me et propos\u00e9 trois solutions avec leurs avantages et inconv\u00e9nients. J\u2019ai opt\u00e9 pour la d\u00e9sactivation temporaire des publicit\u00e9s sur iOS uniquement, une d\u00e9cision m\u00e9tier que l\u2019IA ne pouvait pas prendre seule. L\u2019outil a ensuite document\u00e9 ce choix dans un fichier TODO_IOS_ADS.md expliquant la marche \u00e0 suivre future.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-005548.png\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"1145\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-005548-1200x1145.png\" alt=\"\" class=\"wp-image-2819285 wp-image\"  \/><\/a><\/p>\n<p>Un second obstacle concernait les versions d\u2019extensions iOS. L\u2019application utilise OneSignal pour les notifications push, qui n\u00e9cessite une extension iOS. Les num\u00e9ros de version de l\u2019extension et de l\u2019application principale doivent correspondre, mais utilisaient des variables Xcode diff\u00e9rentes. Claude Code a d\u00e9tect\u00e9 cette incoh\u00e9rence en comparant les fichiers Info.plist et synchronis\u00e9 les configurations.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-101239.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"547\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-101239-1200x547.jpg\" alt=\"\" class=\"wp-image-2819277 wp-image\"  \/><\/a><\/p>\n<p>La gestion de ces probl\u00e8mes techniques illustre parfaitement la compl\u00e9mentarit\u00e9 humain-IA. Claude Code comprend le contexte iOS (les extensions doivent partager la version parente), diagnostique le probl\u00e8me et propose une correction. De mon c\u00f4t\u00e9, je valide que la solution respecte nos contraintes m\u00e9tier sans comprendre les d\u00e9tails d\u2019impl\u00e9mentation.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-144304.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"963\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-144304-1200x963.jpg\" alt=\"\" class=\"wp-image-2819281 wp-image\"  \/><\/a>De temps en temps, j\u2019ai \u00e9t\u00e9 oblig\u00e9 de remonter manuellement les logs \u00e0 Claude Code<\/p>\n<p>Je n\u2019\u00e9voque ici que quelques probl\u00e8mes, mais la r\u00e9alit\u00e9 fut bien plus chaotique. Gradle a plant\u00e9 \u00e0 de multiples reprises, ce qui m\u2019a forc\u00e9 \u00e0 nettoyer manuellement les caches et \u00e0 relancer des builds de trente minutes.<\/p>\n<p>J\u2019ai d\u00fb r\u00e9installer Xcode compl\u00e8tement plusieurs fois apr\u00e8s des corruptions de cache inexplicables. Mon iPhone a red\u00e9marr\u00e9 une dizaine de fois pour r\u00e9soudre des probl\u00e8mes de connexion avec le Mac ou des plantages myst\u00e9rieux lors des installations, certainement \u00e0 cause du cache. Sans compter les innombrables flutter clean, les suppressions de dossiers Pods, les r\u00e9initialisations de DerivedData, et ces moments o\u00f9 rien ne fonctionnait sans raison apparente avant de soudainement remarcher apr\u00e8s le \u00e9ni\u00e8me red\u00e9marrage. <\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-110716.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"482\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-110716-1200x482.jpg\" alt=\"\" class=\"wp-image-2819275 wp-image\"  \/><\/a><\/p>\n<p>Il faut dire l\u2019application souffrait d\u2019une dette technique importante \u00e0 cause de plusieurs ann\u00e9es sans mise \u00e0 jour. L\u2019analyse des d\u00e9pendances montrait que 98 packages disposaient de versions plus r\u00e9centes, mais impossibles \u00e0 installer sans casser les contraintes actuelles. On obtenait \u00e0 chaque fois un effet domino avec une situation de blocage technique : impossible de mettre \u00e0 jour une d\u00e9pendance sans en casser d\u2019autres, les nouvelles fonctionnalit\u00e9s de Flutter et Dart restaient inaccessibles, les correctifs de s\u00e9curit\u00e9 ne pouvaient pas \u00eatre appliqu\u00e9s, et les APIs d\u00e9pr\u00e9ci\u00e9es continuaient d\u2019\u00eatre utilis\u00e9es faute d\u2019alternative compatible. <\/p>\n<p>J\u2019ai compris pourquoi le maintien r\u00e9gulier d\u2019une application n\u2019est pas un luxe mais une n\u00e9cessit\u00e9 : chaque mois sans mise \u00e0 jour creuse un peu plus le foss\u00e9 technique, jusqu\u2019\u00e0 rendre la migration exponentiellement plus complexe.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-011208.jpg\" class=\"article-content__figure\"><img loading=\"lazy\" decoding=\"async\" width=\"1080\" height=\"474\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-011208.jpg\" alt=\"\" class=\"wp-image-2819289 wp-image\"  \/><\/a><\/p>\n<p>Une limitation importante est apparue r\u00e9guli\u00e8rement : le d\u00e9calage entre les connaissances de Claude Code et l\u2019actualit\u00e9 du d\u00e9veloppement mobile. <\/p>\n<p>Son apprentissage s\u2019arr\u00eate en janvier 2025, ce qui pose probl\u00e8me sur un \u00e9cosyst\u00e8me qui \u00e9volue mensuellement. Quand iOS 18.1 est sorti en octobre 2024, puis iOS 18.2 quelques semaines plus tard, et maintenant <a href=\"https:\/\/www.frandroid.com\/marques\/apple\/2744479_ios-26-disponible\" target=\"_blank\" rel=\"noopener\">iOS 26<\/a>, Claude Code ne connaissait pas les incompatibilit\u00e9s sp\u00e9cifiques de ces versions avec certains SDK comme UMP (User Messaging Platform de Google). Il a fallu que je lui signale les crashs pour qu\u2019il cherche activement sur le web et d\u00e9couvre que iOS 26 n\u00e9cessitait de d\u00e9sactiver temporairement ce SDK. <\/p>\n<p>Heureusement, la recherche web int\u00e9gr\u00e9e sauve la situation, mais elle introduit une \u00e9tape suppl\u00e9mentaire : au lieu de proposer directement la solution, l\u2019IA doit d\u2019abord reconna\u00eetre son ignorance, puis chercher, analyser les r\u00e9sultats, et enfin proposer un correctif. <\/p>\n<p>Pour des frameworks en \u00e9volution rapide comme Flutter (nouvelle version stable tous les trois mois), cette obsolescence des connaissances peut \u00eatre un probl\u00e8me. La solution ? Syst\u00e9matiquement croiser les propositions de Claude Code avec la documentation officielle r\u00e9cente, et lui demander explicitement de v\u00e9rifier sur le web quand on suspecte un changement. Evidement, cela ralentit le d\u00e9veloppement, mais  \u00e7a reste g\u00e9rable tant qu\u2019on en a conscience.<\/p>\n<p>Quand l\u2019IA doute et l\u2019humain encourage<\/p>\n<p>Alors, quelque chose d\u2019\u00e9trange s\u2019est produit \u00e0 plusieurs reprises durant ce projet. Face \u00e0 des probl\u00e8mes particuli\u00e8rement complexes, Claude Code manifestait une forme de d\u00e9couragement. Apr\u00e8s avoir tent\u00e9 plusieurs approches pour r\u00e9soudre le conflit de d\u00e9pendances nanopb ou debugger un crash au d\u00e9marrage, l\u2019outil proposait parfois d\u2019abandonner certaines pistes ou de simplifier drastiquement les objectifs.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-04-a-110339.png\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"1192\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-04-a-110339-1200x1192.png\" alt=\"\" class=\"wp-image-2819309 wp-image\"  \/><\/a><\/p>\n<p>Cette tendance \u00e0 l\u2019abandon face \u00e0 la difficult\u00e9 montre quelque chose d\u2019int\u00e9ressant sur le fonctionnement de ces IA. Contrairement \u00e0 un d\u00e9veloppeur humain qui pers\u00e9v\u00e8re par obstination ou fiert\u00e9 professionnelle, l\u2019IA \u00e9value constamment la probabilit\u00e9 de succ\u00e8s. Quand cette probabilit\u00e9 lui semble faible, elle sugg\u00e8re rationnellement de renoncer. C\u2019est moi qui ai d\u00fb jouer le r\u00f4le de motivateur : \u00ab\u00a0Non, on va y arriver\u00ab\u00a0, \u00ab\u00a0Continue comme \u00e7a\u00ab\u00a0, \u00ab\u00a0Essaie encore une autre approche\u00ab\u00a0. L\u2019inversion des r\u00f4les \u00e9tait amusante. Habituellement, on imagine l\u2019IA comme infatigable et l\u2019humain comme celui qui abandonne. Ici, c\u2019est l\u2019inverse qui s\u2019est produit. <\/p>\n<p>Sur certains probl\u00e8mes, j\u2019ai m\u00eame fourni la solution. Claude Code n\u2019arrivait pas \u00e0 prendre du recul.<\/p>\n<p>Cela soul\u00e8ve une question int\u00e9ressante sur la collaboration humain-IA. L\u2019obstination humaine, souvent vue comme un d\u00e9faut en gestion de projet, devient un atout ici. Elle pousse l\u2019IA \u00e0 explorer des solutions qu\u2019elle aurait \u00e9cart\u00e9es trop rapidement. Plusieurs fonctionnalit\u00e9s de l\u2019application n\u2019existeraient pas si j\u2019avais accept\u00e9 les premiers constats d\u2019\u00e9chec. <\/p>\n<p>Une nouvelle fonctionnalit\u00e9 : la recherche assist\u00e9e par IA<\/p>\n<p>Au-del\u00e0 de la modernisation, j\u2019ai voulu ajouter une fonctionnalit\u00e9 : un syst\u00e8me de recherche bas\u00e9 sur Perplexity AI, notre partenaire. Les utilisateurs peuvent d\u00e9sormais poser des questions et recevoir des r\u00e9ponses g\u00e9n\u00e9r\u00e9es \u00e0 partir des articles Frandroid, avec citations des sources.<\/p>\n<p>Cette feature a n\u00e9cessit\u00e9 du d\u00e9veloppement backend (Firebase Functions en TypeScript) et frontend (Flutter avec BLoC pattern). Claude Code a structur\u00e9 le projet en respectant la Clean Architecture fra\u00eechement mise en place : entities, repositories, use cases, datasources et blocs d\u2019\u00e9tat.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-210240.png\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"1145\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-02-a-210240-1200x1145.png\" alt=\"\" class=\"wp-image-2819283 wp-image\"  \/><\/a><\/p>\n<p>La partie la plus d\u00e9licate concernait le rendu HTML des r\u00e9ponses. Le package flutter_html ne supportait pas le CSS personnalis\u00e9 avanc\u00e9. Claude Code a migr\u00e9 vers flutter_inappwebview, ce qui a permis un contr\u00f4le total sur l\u2019affichage tout en respectant la charte graphique de Frandroid. Couleurs exactes, typographie Montserrat, mode sombre : chaque d\u00e9tail visuel a \u00e9t\u00e9 ajust\u00e9.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-083916.png\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"1145\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/capture-decran-2025-10-03-a-083916-1200x1145.png\" alt=\"\" class=\"wp-image-2819293 wp-image\"  \/><\/a><\/p>\n<p>Le d\u00e9veloppement de cette fonctionnalit\u00e9 a pris six heures, avec les it\u00e9rations design, le d\u00e9bogage et les tests multi-plateformes. Un d\u00e9tail amusant : apr\u00e8s sept appuis sur l\u2019ic\u00f4ne de recherche IA, un easter egg appara\u00eet. Je vous laisse tester \u00e7a.<\/p>\n<p>Les limites et apprentissages de cette collaboration<\/p>\n<p>Cette exp\u00e9rience montre autant les capacit\u00e9s que les limites de l\u2019IA en d\u00e9veloppement. Claude Code excelle dans l\u2019ex\u00e9cution technique : lecture de code, d\u00e9tection d\u2019erreurs, impl\u00e9mentation de patterns, gestion de d\u00e9pendances. Mais il reste un assistant, pas un d\u00e9veloppeur autonome.<\/p>\n<p>Les d\u00e9cisions m\u00e9tier m\u2019incombaient syst\u00e9matiquement. D\u00e9sactiver les publicit\u00e9s iOS ? Raccourcir les titres d\u2019interface ? Ajouter un onboarding pour les notifications ? Ces choix requi\u00e8rent une compr\u00e9hension du produit et des utilisateurs que l\u2019IA ne poss\u00e8de pas. Elle peut proposer des options avec leurs implications, mais la d\u00e9cision finale revient \u00e0 l\u2019humain.<\/p>\n<p>La communication \u00e9tait essentielle. Mes messages restaient simples et factuels : \u00ab\u00a0l\u2019app plante au d\u00e9marrage\u00a0\u00bb, \u00ab\u00a0472 erreurs sur Xcode\u00a0\u00bb, \u00ab\u00a0le scroll est lent\u00a0\u00bb. Claude Code traduisait ces sympt\u00f4mes en diagnostics techniques et solutions. Une vraie division du travail qui fonctionne pr\u00e9cis\u00e9ment parce que l\u2019IA comprend le contexte m\u00e9tier autant que le code technique.<\/p>\n<p>Le retour sur investissement impressionne : vingt heures pour accomplir tout \u00e7a. Mais cette efficacit\u00e9 cache une r\u00e9alit\u00e9 : sans la capacit\u00e9 \u00e0 tester, identifier les probl\u00e8mes et prendre des d\u00e9cisions produit, le projet aurait \u00e9chou\u00e9. L\u2019IA amplifie les comp\u00e9tences existantes, elle ne les remplace pas.<\/p>\n<p>Ce que j\u2019ai vraiment appris sur le code et ses exigences<\/p>\n<p>Cette immersion dans le d\u00e9veloppement mobile m\u2019a enseign\u00e9 bien plus que pr\u00e9vu. J\u2019ai compris la logique des architectures logicielles, l\u2019importance de la s\u00e9paration des responsabilit\u00e9s, la complexit\u00e9 de la gestion d\u2019\u00e9tat dans une application. Des concepts qui restaient abstraits sont devenus concrets \u00e0 travers la r\u00e9solution de probl\u00e8mes r\u00e9els.<\/p>\n<p>Plusieurs personnes m\u2019ont interrog\u00e9 sur la qualit\u00e9 du code produit. Question l\u00e9gitime : une IA peut-elle g\u00e9n\u00e9rer du code aussi propre et maintenable qu\u2019un d\u00e9veloppeur exp\u00e9riment\u00e9 ? La r\u00e9ponse est nuanc\u00e9e. Claude Code applique les patterns standards (BLoC pour la gestion d\u2019\u00e9tat, Repository pattern pour l\u2019acc\u00e8s aux donn\u00e9es) et respecte les conventions de nommage Flutter. Le code est structur\u00e9, comment\u00e9 et suit les bonnes pratiques. Mais il manque parfois de l\u2019optimisation fine qu\u2019un expert apporterait : certaines requ\u00eates pourraient \u00eatre mises en cache plus intelligemment, quelques widgets m\u00e9riteraient d\u2019\u00eatre mieux optimis\u00e9s pour la performance.<\/p>\n<p>La question de la s\u00e9curit\u00e9 a \u00e9galement \u00e9t\u00e9 soulev\u00e9e. L\u2019application manipule des donn\u00e9es utilisateur, communique avec des APIs, stocke des pr\u00e9f\u00e9rences localement. J\u2019ai demand\u00e9 \u00e0 Claude Code d\u2019auditer sp\u00e9cifiquement ces aspects : validation des entr\u00e9es utilisateur, gestion s\u00e9curis\u00e9e des tokens API, protection contre les injections, chiffrement des donn\u00e9es sensibles. L\u2019outil a identifi\u00e9 et corrig\u00e9 plusieurs failles potentielles. <\/p>\n<p>Cependant, je ne pr\u00e9tends pas que cette application atteint le niveau de s\u00e9curit\u00e9 qu\u2019aurait garanti une \u00e9quipe de d\u00e9veloppement professionnelle avec revue de code et tests de p\u00e9n\u00e9tration. C\u2019est une des limites claires de cette approche.<\/p>\n<p>Testez l\u2019application et partagez vos retours<\/p>\n<p>L\u2019application modernis\u00e9e est d\u00e9sormais disponible en version b\u00eata. Sur Android, <a target=\"_blank\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.frandroid.app&amp;hl=fr\" rel=\"noopener\">rendez-vous sur le Play Store et inscrivez-vous au programme de test b\u00eata<\/a> de l\u2019application Frandroid. Sur iOS, rejoignez <a target=\"_blank\" href=\"https:\/\/testflight.apple.com\/join\/ZgKypnx5\" rel=\"noopener\">le programme TestFlight via ce lien<\/a>. Ces versions contiennent toutes les am\u00e9liorations : nouvelle architecture, optimisations de performance (d\u00e9marrage 75 % plus rapide, scroll fluide \u00e0 60 ips), recherche assist\u00e9e par IA, et m\u00eame un onboarding pour les notifications personnalis\u00e9es.<\/p>\n<p><a target=\"_blank\" href=\"https:\/\/images.frandroid.com\/wp-content\/uploads\/2025\/10\/image-6-1.jpg\" class=\"article-content__figure\" rel=\"noopener\"><img loading=\"lazy\" decoding=\"async\" width=\"1200\" height=\"655\" src=\"https:\/\/www.europesays.com\/fr\/wp-content\/uploads\/2025\/10\/image-6-1-1200x655.jpg\" alt=\"\" class=\"wp-image-2819297 wp-image\"  \/><\/a><\/p>\n<p>Je cherche maintenant \u00e0 stabiliser cette version avant un d\u00e9ploiement en prod. Envoyez-nous vos retours de bugs en commentaires ou <a target=\"_blank\" href=\"https:\/\/discord.gg\/JNfkJKepr9\" rel=\"noopener\">sur Discord<\/a>, <a href=\"https:\/\/discord.gg\/JNfkJKepr9\" target=\"_blank\" rel=\"noreferrer noopener\">j\u2019ai cr\u00e9\u00e9 un canal d\u00e9di\u00e9<\/a>  : plantages, comportements \u00e9tranges, erreurs d\u2019affichage, tout compte. <\/p>\n<p>Mais au-del\u00e0 des corrections, j\u2019aimerais conna\u00eetre vos id\u00e9es de fonctionnalit\u00e9s. Quel usage faites-vous de l\u2019application ? Qu\u2019est-ce qui faciliterait votre lecture quotidienne de Frandroid ? Si j\u2019ai le temps, je continuerai \u00e0 faire \u00e9voluer cette application. Et si vous avez des id\u00e9es d\u2019autres applications qui pourraient servir la communaut\u00e9 Frandroid, je suis preneur : cette exp\u00e9rience m\u2019a donn\u00e9 envie de continuer \u00e0 explorer ce que l\u2019IA permet de cr\u00e9er quand on y consacre du temps et de la m\u00e9thode.<\/p>\n<p>Envie de rejoindre une communaut\u00e9 de passionn\u00e9s ? <a href=\"https:\/\/discord.com\/invite\/frandroid-311789172149190657\" target=\"_blank\" rel=\"noopener\">Notre Discord<\/a> vous accueille, c\u2019est un lieu d\u2019entraide et de passion autour de la tech.<\/p>\n","protected":false},"excerpt":{"rendered":"Trois ans sans mise \u00e0 jour, 98 d\u00e9pendances obsol\u00e8tes, des lecteurs qui signalaient des bugs. L\u2019application Frandroid n\u00e9cessitait&hellip;\n","protected":false},"author":2,"featured_media":438714,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[56581,56582,1011,27,43,40,41,39,42,44],"class_list":{"0":"post-438713","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-sciences-et-technologies","8":"tag-anthropic-claude-ai","9":"tag-claude-ai","10":"tag-fr","11":"tag-france","12":"tag-science","13":"tag-science-and-technology","14":"tag-sciences","15":"tag-sciences-et-technologies","16":"tag-technologies","17":"tag-technology"},"share_on_mastodon":{"url":"https:\/\/pubeurope.com\/@fr\/115316152880741060","error":""},"_links":{"self":[{"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/posts\/438713","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/comments?post=438713"}],"version-history":[{"count":0,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/posts\/438713\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/media\/438714"}],"wp:attachment":[{"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/media?parent=438713"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/categories?post=438713"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.europesays.com\/fr\/wp-json\/wp\/v2\/tags?post=438713"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}