Comme tous les ans, Apple a présenté à l’occasion de la WWDC une nouvelle version majeure de Xcode, son outil de développement. La version 10.0 propose de nombreuses nouveautés, à la fois sous le capot, en matière d’interface et de fonctionnalités. Cette mise à jour est actuellement disponible en bêta à télécharger depuis le site d’Apple dédié aux développeurs. Elle sera finalisée et proposée sur le Mac App Store à l’automne pour Mojave et High Sierra.
Qu’est-ce qu’Apple propose cette année aux développeurs ? On fait le point !
Sommaire
Un mode foncé sur macOS Mojave
Comme toutes les apps fournies par Apple, Xcode 10 disposera d’un mode foncé quand on l’utilise sur macOS Mojave. Cette présentation assombrie a même été pensée spécialement pour les développeurs, qui réclamaient probablement cette option déjà proposée dans les autres apps créatives d’Apple, de Final Cut Pro à Logic.
Comme toutes les autres apps du système, le mode foncé fonctionne automatiquement pour Xcode. S’il est activé dans les Préférences système1, il sera activé aussi dans Xcode 10, et vice-versa. Par défaut, le thème de l’éditeur change en fonction du mode choisi : le thème sombre par défaut de l’app est utilisé quand le mode sombre de macOS est actif. Vous pouvez changer les couleurs de l’éditeur et vos préférences sont retenues séparément pour chaque mode, de quoi avoir un thème personnalisé en mode clair et un autre en sombre. Ou bien systématiquement le même, si vous préférez.
L’autre nouveauté de macOS Mojave en la matière, le choix de la couleur d’accentuation (celle qui s’affiche sur tous les contrôles d’interface), est naturellement disponible pour Xcode. Sur les deux captures ci-dessus, l’app était affichée avec une couleur d’accentuation jaune, voici quelques choix supplémentaires :
Ces nouveautés esthétiques sont réservées à macOS Mojave, Xcode 10 sur macOS High Sierra reste systématiquement dans des couleurs claires. Il existe bien une astuce pour tester le mode sombre de 10.14 sur 10.13, mais les résultats sont très inférieurs. Cette même astuce peut toutefois servir à activer le mode sombre pour Xcode seulement, si c’est ce que vous voulez.
Xcode 10 s’intègre aussi à Gitlab et Bitbucket
Xcode 9 simplifiait la vie d’une partie des développeurs en s’intégrant mieux à GitHub, le plus gros service d’hébergement et de partage de code source. Avec cette nouvelle version, Apple poursuit cet effort et crée un pont de la même nature avec deux autres services : GitLab et Bitbucket. Dans les deux cas, on peut ajouter un compte sur une version auto-hébergée ou la version clé en main fournie par les services.
Comme pour GitHub, vous pouvez ajouter votre compte GitLab ou Bitbucket dans les préférences de Xcode (onglet Account) et vous aurez alors quelques fonctions supplémentaires. Par exemple, vous pourrez lister tous les projets associés à votre compte et les cloner en local, tout ça sans quitter l’interface d'Apple. Pour activer cette fonction, utilisez la commande « Clone… » dans le menu Source Control.
Pour simplifier les liens entre Xcode et les serveurs Git, on peut aussi cloner un dépôt directement depuis l’interface web. C’était le cas pour GitHub, c’est aussi possible depuis GitLab.com et Bitbucket et ce sera bientôt le cas pour les serveurs GitLab hébergés par vos soins. Quel que soit le fournisseur, le principe est simple : un bouton pour cloner directement le projet dans Xcode sera affiché pour les dépôts compatibles, c'est-à-dire ceux qui intègrent un fichier .xcodeproj
.
L’outil de développement d’Apple dispose par ailleurs de toutes les fonctions attendues pour gérer son dépôt, charger les dernières mises à jour et publier des changements, changer de branche ou en créer de nouvelles, remonter l’historique, etc. La grosse nouveauté de Xcode 10 en matière de gestion de version, c’est bien la mention, directement dans l’éditeur de code, des changements en cours. Jusque-là, Xcode indiquait les fichiers modifiés uniquement en local (« M » affiché dans la barre latérale), mais pas plus. Désormais, on peut savoir ce qui a été modifié, et agir sur les changements en cours.
Outre les changements temporaires apportés par vos soins, Xcode signale aussi de la même manière les changements apportés par d’autres collaborateurs et pas encore chargés en local. En cas de conflit, l’éditeur de code les affiche aussi directement au bon endroit.
Xcode 10 simplifiera aussi la vie de tous ses utilisateurs en gérant automatiquement les clés SSH, souvent indispensables pour accéder aux dépôts Git et envoyer des changements. Si la clé n’existe pas, l’app se chargera de la créer et de la transmettre au serveur.
Plusieurs curseurs dans l’éditeur
L’éditeur de code est sans contexte la brique la plus importante d’une app comme Xcode, puisque c’est là que les développeurs passent l’essentiel de leur temps. Avec cette dixième version, Apple affiche mieux les changements liés à la gestion de projet, comme nous l’avons vu dans la partie précédente. Ce n’est toutefois pas la seule nouveauté de la mise à jour annuelle.
L’autre gros ajout, c’est la prise en charge de plusieurs curseurs à la fois, comme prévu. C’est une fonction plutôt courante dans le monde des éditeurs de code, et Xcode 10 rattrape sur ce point son retard. Utiliser plusieurs curseurs permet de modifier rapidement plusieurs éléments similaires dans le code, ou insérer plusieurs fois la même ligne de code.
Dans la première bêta de Xcode 10, il existe plusieurs solutions différentes pour insérer plusieurs curseurs. Vous pouvez tout d’abord cliquer n’importe où en maintenant les touches control
(^
) et ⇧
enclenchées. À chaque fois, un curseur supplémentaire est ajouté sous le clic.
Autre solution, utilisez le même raccourci control⇧
, mais avec les flèches haut ou bas. Dans ce cas, vous ajouterez un curseur juste au-dessus ou en dessous du curseur initial. Notez sur cette vidéo que les trois curseurs bougent par la suite ensemble quand on les déplace au clavier, que ce soit avec les flèches droite et gauche, ou bien les raccourcis clavier par défaut de macOS (par exemple, ⌘→
pour aller à la fin de la ligne).
La troisième option est pratique pour sélectionner plusieurs lignes en glissant simplement le curseur de la souris, mais elle exploite bizarrement un autre raccourci clavier. Cette fois, il faut presser la touche option
(⌥
), cliquer et glisser pour insérer plusieurs curseurs. Notez que ce raccourci permet aussi de sélectionner des colonnes de texte.
L’éditeur peut aussi afficher un ruban sur le côté gauche, dédié au « code folding », cette fonction qui permet de « plier » une partie du code, par exemple une fonction entière, pour en simplifier la lecture, ou pour se concentrer sur un élément. C’est une nouveauté de Xcode 10 par rapport à la version précédente, qui avait du mal avec cette fonction de manière générale (elle était désactivée pendant certaines bêtas) et qui n’a jamais restauré le ruban. Ce dernier était pourtant présent dans d’anciennes versions de Xcode, comme nous avons pu le constater sur la version 7.3.1.
Petite nouveauté quand même, le pliage de code ne se limite plus à une fonction complète et reconnue. N’importe quel bloc de code encadré par des {} peut désormais être plié et déplié.
Enfin, signalons une nouveauté discrète pour l’éditeur de code : quand on arrive en bas d’un fichier, on peut continuer à faire défiler l’interface jusqu’à centrer la dernière ligne au milieu de l’écran. Le comportement change selon que l’on utilise le clavier ou le trackpad (ou une souris) : avec le clavier, la dernière ligne reste bien en bas ; avec un défilement, elle est centrée.
Une bibliothèque mobile et plus facile d’accès
Xcode 10 modifie l’emplacement et le fonctionnement de la « bibliothèque » (Library). Jusque-là, elle était située dans la barre latérale de droite, tout en bas. Désormais, elle prend la forme d’un pop-up mobile, un petit peu comme Spotlight sur macOS. Un nouveau raccourci clavier est également associé à cette fonction : ⌘⇧L
.
Cette bibliothèque a plusieurs fonctions, qui changent selon le contexte. Si vous l’activez dans l’éditeur de code, vous verrez les « Snippets », ces lignes de code que l’on réutilise fréquemment. Xcode fournit quelques extraits courants pour débuter, mais chaque développeur pourra ajouter les siens. Une des nouveautés de cette version concerne d’ailleurs ce point : on peut désormais en créer avec la nouvelle commande « Create Code Snippet », dans le menu Editor.
Depuis Interface Builder, l’outil de création d’interface de Xcode, ce ne sont plus les snippets qui sont affichés, mais les objets. Et si vous utilisez SpriteKit ou SceneKit, son contenu sera ajusté tout aussi automatiquement. Notons que la taille et la position de la fenêtre peuvent être modifiées, ce qui sera utile pour afficher plus d’éléments à la fois, au contraire réduire la bibliothèque sur les petits écrans.
Comme avant, vous pouvez glisser un élément depuis la bibliothèque. La nouvelle interface étant affichée au-dessus du reste, la fenêtre se fermera dans la foulée pour vous laisser travailler. Maintenez la touche option (⌥
) pour maintenir le pop-up ouvert si vous voulez glisser et déposer plusieurs éléments en une seule fois.
Compiler et déboguer les apps plus rapidement
Pour convertir les lignes de code source en app qu’un Mac ou un iPhone peut exécuter, il y a l’inévitable étape de compilation. Xcode 9 introduisait déjà un tout nouveau build system, Xcode 10 en propose déjà un tout autre ! En test avec la précédente version de Xcode, il est désormais activé par défaut. Il doit améliorer les performances, tout particulièrement pour les projets Swift, et spécialement pour ceux qui sont gros. Il faut dire que c’était un point noir pour les développeurs qui ont adopté le « nouveau » langage de développement d’Apple.
Les résultats varieront d’un projet à l’autre, mais nous avons noté effectivement un gain de vitesse lors de la compilation de notre app iGeneration. Sur le même Mac, un MacBook Pro 13 pouces de 2014, on gagne près de trente secondes lors de la compilation du même projet, simplement en l’ouvrant avec Xcode 10 (1 min 22) plutôt que Xcode 9 (1 min 49). Une nouvelle fonction de l’outil de développement permet, à ce sujet, de mesurer et de mémoriser les temps de compilation.
Si vous gérez un projet plus conséquent, vous verrez peut-être des changements plus significatifs encore. Et si le nouveau build system casse quelque chose pour votre app, vous pouvez le désactiver et rester sur l’ancien. Ouvrez les paramètres de projets depuis le menu File et changez le paramètre correspondant pour désactiver cette nouveauté. Par ailleurs, notons qu’une session entière a été consacrée pendant la WWDC à cette nouveauté.
À propos de performances, les tests unitaires sont désormais menés en parallèle, ce qui devrait accélérer cette phase du développement où l’on vérifie que tout fonctionne encore prévu avec des tests automatisés. Xcode lancera autant de tests que le Mac peut en encaisser (cela dépend essentiellement du nombre de cœurs disponibles), et ils peuvent être effectués en série, ou de manière aléatoire. Pendant la phase de debug, où l’on essaie de comprendre pourquoi un bug survient, le chargement des symboles depuis l’appareil iOS, tvOS ou watchOS connecté se fera cinq fois plus rapidement. C’était toujours une étape assez lente en effet sur les anciennes versions de Xcode.
Enfin, toujours dans la phase de compilation et de debug, les développeurs pourront enrichir Instruments de leurs propres outils d’analyse. Cet outil scrute le fonctionnement de l’appareil sur lequel l’app en cours de création tourne et il affiche de nombreuses informations par défaut. Pour les créateurs de jeu, une nouvelle vue spécifique affiche des informations plus intéressantes dans ce cadre et si cela ne suffit pas, les développeurs peuvent remonter les infos qu’ils souhaitent.
Dans la session consacrée à cette nouveauté, Apple explique que c’est aussi utile pour qu’un tiers puisse comprendre plus facilement les données remontées par Instruments. Le développeur de chaque fonction saura où trouver ce qu’il cherche, mais pas nécessairement un collaborateur. Pour lui, une interface personnalisée, avec une partie des informations seulement et peut-être une présentation différente, pourra être utile.
Prise en charge des nouveautés 2018
Xcode 10 propose plusieurs nouveautés qui correspondent aussi aux nouveautés d’iOS 12, macOS 10.14 et des autres mises à jour majeures annuelles. Par exemple, le catalogue de ressources qui contient toutes les images utilisées par une app peut maintenant distinguer les éléments nécessaires à un mode sombre pour les apps macOS. Chaque ressource est définie comme claire, sombre, soit encore à haut contraste. Les outils dédiés à la création d’interface affichent aussi l’app en mode clair et en mode sombre, pour vérifier sans même compiler le code source si tout va bien.
Par ailleurs, CarPlay s’ouvrira plus largement avec iOS 12, les apps de conduite pourront notamment s’y intégrer. À cette fin, on peut stocker ces ressources spécifiques dans Xcode 10. Enfin, iOS 12 offre de nouvelles options d’optimisation des ressources et vous pourrez tout apprendre à ce sujet dans cette session.
Autre nouveauté de macOS Mojave, l’Apple Notary Service, un système qui certifie non plus seulement un développeur, mais aussi une app spécifique (lire : Sécurité : dans macOS Mojave, un notaire pour arrêter les frais). Ce sera utile si un malware se glisse au sein d’un catalogue légitime d’apps, Apple pourra bloquer l’app fautive seulement, et pas le compte complet. Cette certification app par app n’est pas encore obligatoire, mais elle le sera bientôt et Xcode 10 est prêt dès aujourd'hui. Lors de l’export d’une app macOS, on peut choisir de la faire transiter par les serveurs d’Apple pour la certifier.
Tout le reste
Nous avons abordé de nombreuses nouveautés, mais il en reste encore. Comme tous les ans, la liste est longue, avec des ajustements dans la majorité des fonctions de Xcode. Il y a du nouveau pour les « Playgrounds » Swift avec des fonctions spécifiques pour l’intelligence artificielle, du nouveau pour les traductions des apps et encore plein d’autres choses.
Xcode 10 est pensé pour fonctionner en parallèle de Xcode 9, et ainsi servir aux développeurs à découvrir les nouveautés sans abandonner leur projet en cours. Cette version sera indispensable pour profiter des nouveautés des systèmes d’exploitation en 2018.
-
Dans le panneau « Général », c’est le premier réglage proposé par macOS 10.14. ↩︎