Xcode 9 : toutes les nouveautés pour les développeurs

Nicolas Furno |

Outre les premières bêtas des systèmes d’exploitation eux-mêmes, les développeurs peuvent télécharger une toute nouvelle version de Xcode, l’outil de développement fourni par Apple. Xcode 9 est disponible dans une première bêta et elle peut être installée sur macOS High Sierra ou sur macOS Sierra. Comme toutes les bêtas, Apple conseille de conserver la version stable en parallèle jusqu’à sa finalisation, prévue pour septembre ou octobre.

Cliquer pour agrandir

Ce sera la version de base pour exploiter les nouveautés de l’automne, que ce soit sur Mac ou sur les appareils iOS, watchOS et tvOS. Cette mise à jour de Xcode apporte aussi plusieurs changements, parfois majeurs et qui devraient améliorer la stabilité, les performances et le confort des développeurs.

Nouvel éditeur de code

L’éditeur de code, pièce maîtresse de Xcode naturellement, a été totalement revu dans cette neuvième version. Pour commencer, même si cela ne se voit pas, il a été réécrit en Swift et apparemment, il s’inspire assez largement de celui de Swift Playgrounds sur iOS. À noter qu’il y a plusieurs fonctions manquantes dans la première bêta, comme la possibilité de « plier » les blocs de code ou encore l’impression.

L’éditeur de code dans Xcode 9, avec l’une des nouveautés : en maintenant la touche ⌘, on voit la limite des fonctions, des boucles et autres éléments. Cliquer pour agrandir

Ce changement apporte quelques nouveautés qui seront sans aucun doute bienvenues. Par exemple, on peut (enfin) changer la taille du texte temporairement en utilisant les raccourcis par défaut (⌘- et ⌘+). Xcode 9 améliore aussi la lecture du code : en passant le curseur tout en maintenant la touche ⌘ sur le clavier, les limites des fonctions, boucles et autres éléments sont mises en avant visuellement.

Le Markdown étant désormais pris en charge par Apple, notamment pour les fichiers readme, la coloration syntaxique est aussi proposée, avec même un aperçu du résultat. Xcode 9 ne remplacera pas un éditeur de texte dédié et c’est de toute manière un logiciel bien lourd pour écrire du Markdown, mais…

La prise en charge du Markdown dans Xcode 9 est plutôt complète. Cliquer pour agrandir

Xcode 9 permet aussi de « réusiner le code » (refactoring) en Swift, Objective-C, C et C++. Si vous changez le nom d’une classe, la référence sera automatiquement modifiée dans tout le projet. Cela permettra aussi de simplifier les transitions d’Objective-C à Swift. Par ailleurs, la recherche a été revue et elle est beaucoup plus rapide avec cette version.

Il y a de nombreuses autres nouveautés chargées d’accélérer le développement ou d’améliorer le confort des développeurs. Par exemple, Xcode 9 complète automatiquement les switch, une structure qui permet de prendre en compte plusieurs cas de figure différents.

Debug : avec plusieurs simulateurs et sans les fils

Une part importante du travail des développeurs est de tester une app sur l’appareil ciblé. Pour cela, Xcode propose deux méthodes : un simulateur affiché sur le Mac, ou directement sur un terminal. Avec la version 9.0, vous pouvez lancer plusieurs simulateurs pour mener plusieurs tests en parallèle sur la même base, ou tester une même app sur plusieurs appareils différents.

Le simulateur de Xcode 9 avec trois appareils actifs. La présentation change, avec des boutons physiques et actifs autour de la fenêtre… qui ne ressemble plus à une fenêtre macOS, même si elle se comporte comme telle. Cliquer pour agrandir

La présentation change aussi, avec une représentation physique de chaque appareil simulé. Ce n’est pas que du skeuomorphisme gratuit, vous pouvez interagir avec ces appareils en utilisant les boutons. Par exemple, les deux boutons latéraux de l’Apple Watch permettent de contrôler watchOS comme sur une vraie montre. Ajoutons que ces fausses fenêtres peuvent être redimensionnées librement à la souris, comme les vraies fenêtres.

Parmi les autres nouveautés liées aux simulateurs, la possibilité de filmer l’écran (comme sur les terminaux iOS 11 d’ailleurs) ou encore une extension de partage qui permet d’envoyer un contenu depuis macOS à un simulateur. Ou à tous les simulateurs ouverts, si vous le souhaitez. Cela fonctionne depuis Safari, depuis Plans

Le simulateur devient l’une des options de partage sur macOS. Ici, on peut envoyer une même URL depuis Safari à tous les simulateurs actifs, ou à seulement l’un d’entre eux. Cliquer pour agrandir

Si vous avez besoin d’un vrai appareil iOS ou tvOS pour tester votre app, il y a du mieux avec Xcode 9. Jusque-là, le terminal mobile devait être relié physiquement au Mac pour exécuter l’app et obtenir des informations en retour. Désormais, vous pourrez le faire sans fil, à condition naturellement que l’appareil soit sur le même réseau local que le Mac.

Pour commencer, il faudra activer cette option en branchant le terminal au Mac et en passant par le gestionnaire d’appareils dans le menu Window. Cochez la case « Connect via network » et à partir de là, vous le verrez dans cette fenêtre, mais aussi comme cible pour compiler un projet même si l’appareil n’est plus relié en USB. Cette option est réservée à iOS 11 et tvOS 11.

Les appareils iOS 11 peuvent être utilisés à distance et sans fil avec Xcode 9. Cliquer pour agrandir

Apple a beaucoup travaillé la fonction de debug, pour s’assurer qu’un programme tourne correctement. Plusieurs tests peuvent être menés en parallèle avec Xcode 9 et de nouvelles options sont proposées aux développeurs, comme la possibilité de faire des captures d’écran automatiquement. Instruments, l’app spécialisée dans cette tâche, a été enrichie, notamment pour prendre en charge Metal et la réalité virtuelle.

Les développeurs peuvent également surveiller l’activité de la puce graphique et contrôler très précisément une animation ou des graphismes. Il y a plusieurs ajouts dans ce domaine, notamment pour les créateurs de jeux qui pourront modifier un shader pendant la phase de test pour voir immédiatement les différences. Ou encore modifier les paramètres d’un pixel spécifiquement.

Xcode 9 produit des apps Swift en Swift

Apple a développé un tout nouveau build system et il est proposé en option dans Xcode 9. Ce composant essentiel fait le lien avec le compilateur qui converti le code en une app, notamment en fonction de paramètres définis par le développeur. Sa particularité par rapport à l’ancien ? Il a été développé en Swift. Ce qui veut dire que l’on peut désormais construire des apps en Swift grâce à un programme en Swift.

Ce nouveau build system a été créé de zéro et il est nettement plus performant que l’ancien, tout en repérant davantage de problèmes. Néanmoins, c’est une première version et cette brique essentielle du processus nécessite de la stabilité. Il reste probablement des bugs et quelques changements seront nécessaires dans un projet : tous les détails sont donnés par Apple dans les notes de version.

Ici, on active le nouveau build system en Swift pour un projet. Cliquer pour agrandir

Pour éviter tout problème, Apple l’a désactivé par défaut et c’est au développeur d’essayer s’il le souhaite, projet par projet. Vous pourrez le faire via le menu File > Project Settings et vous pourrez aussi à tout moment revenir en arrière, si le changement casse quelque chose. Apple prévient que ce sera bientôt l’option par défaut, mais ce n’est pas encore le cas pour le moment.

Par ailleurs, Xcode 9 simplifie la transition de Swift 3 à Swift 4. Le compilateur peut gérer les deux versions à l’intérieur d’un même projet et vous pourrez ainsi profiter des nouveautés de Swift 4 tout en utilisant le compilateur Swift 3 sur le reste du code.

Intégration à GitHub et meilleure gestion de Git

Les versions précédentes de Xcode utilisaient Git en local pour gérer les différentes versions de vos projets. Avec cette 9.0, Apple adopte une stratégie différente : son IDE est désormais étroitement intégré à GitHub, le plus gros service d’hébergement de code basé sur Git. Pour utiliser cette fonction, vous devrez naturellement disposer d’un compte, à renseigner dans la rubrique dédiée aux comptes des préférences.

Depuis le menu « Source Control », vous pourrez alors cloner un projet depuis le site. La fenêtre affichera tous les dépôts que vous avez créés, mais aussi tous les projets auxquels vous avez participé et encore ceux que vous avez mis en favoris. En haut, un champ de recherche permet de trouver un dépôt et vous pourrez aussi coller l’URL vers un projet pour le cloner en local.

Cette interface permet de cloner un dépôt depuis GitHub. Cliquer pour agrandir

L’intégration va plus loin, puisqu’un bouton a été ajouté directement sur le site de GitHub, pour ouvrir n’importe quel dépôt contenant un projet Xcode dans le logiciel. Pour le moment, cela ne fonctionne qu’avec Safari et on ne sait pas si les autres navigateurs pourront en proposer autant. Quoi qu’il en soit, vous verrez une troisième option « Open in Xcode » en cliquant sur le bouton vert « Clone or download ».

Depuis le site de GitHub, les dépôts qui contiennent un projet Xcode peuvent directement être ouverts dans le logiciel, à condition naturellement d’utiliser un Mac. Cliquer pour agrandir

Que vous passiez par Xcode ou par le site de GitHub, le projet sera cloné dans le dossier de votre choix et ouvert directement dans l’IDE. Ce lien ne sert pas qu’à télécharger un projet naturellement, vous pourrez ensuite suivre ses évolutions et soumettre vous-même des modifications sans quitter l’interface conçue par Apple. Autant de fonctions qui existaient en général avec Xcode 8, mais qui ont été revues et améliorées avec la mise à jour.

Historique d’un dépôt GitHub, c'est-à-dire la liste des commits. Cliquer pour agrandir
Affichage d’un commit avec comparaison des modifications directement dans Xcode. Cliquer pour agrandir

Un mode dédié au suivi du projet a été ajouté à Xcode pour lister l’historique et n’importe quel fichier modifié peut être publié sur le dépôt en retour. En clair, vous pourrez utiliser GitHub presque entièrement sans passer par le site, il ne manque que la gestion des issues (les problèmes et bugs signalés) et des pull requests (suggestions de modification).

Quand vous modifiez un projet, vous pouvez soumettre vos modifications également depuis Xcode. Ici, l’interface qui permet de rédiger le message associé au commit. Cliquer pour agrandir

Apple se contente de GitHub dans Xcode 9, alors que c’est loin d’être le seul sur le segment. Si vous utilisez Gitlab, Bitbucket ou un autre, vous n’aurez pas une intégration aussi complète. Néanmoins, le logiciel gère toujours n’importe quel projet Git, à condition de l’avoir préalablement cloné en local. Vous retrouverez l’historique et vous pourrez soumettre des changements sur le serveur, mais vous ne pourrez pas cloner initialement le projet avec la même interface, et encore moins le faire depuis le site.

Xcode Server intégré dans Xcode

En fonction de la taille d’un projet, la compilation du code source est faite en local, sur le Mac du développeur, ou bien à distance, sur un serveur Xcode. Seul un Mac peut servir, mais jusque-là, il fallait un ordinateur équipé de macOS Server, vendu 22 € sur le Mac App Store. Avec Xcode 9, ce n’est plus nécessaire, puisque le module serveur a été directement intégré à l’IDE.

Dans les réglages de Xcode, un nouveau panneau fait son apparition pour gérer Xcode Server. Ici, il est activé et les autres Mac sur le réseau local peuvent utiliser ce Mac pour compiler leurs projets. Cliquer pour agrandir

Un serveur Xcode fonctionne avec des robots virtuels qui compilent un projet lors d’un commit (envoi de code sur le serveur chargé du suivi) ou à intervalle fixe. On peut programmer plusieurs robots avec des paramètres différents et enchaîner avec des tests pour s’assurer que tout fonctionne correctement et repérer d’éventuels bugs et crash. La mise à jour ajoute aussi quelques fonctions à ces robots, notamment la possibilité de mener des tests avec différents langages et différents paramètres de région.

Côté sécurité, l’authentification en deux facteurs est désormais une option pour se connecter à un serveur Xcode.

Autres nouveautés

La liste de nouveautés est encore longue et elle touche tous les domaines. La documentation a été revue avec un navigateur unique pour accéder à tous les éléments, y compris les lignes de code. Il y a du nouveau dans Interface Builder, notamment pour créer des interfaces en plein écran pour l’Apple Watch. Des outils ont été ajoutés pour tester la réalité virtuelle, les développeurs peuvent définir des macros pour un projet, le gestionnaire de ressources a été mis à jour notamment pour gérer le HEIF, le nouveau format d’images utilisé par Apple.

Xcode 9 est disponible au téléchargement sur le centre dédié aux développeurs. Comme toutes les bêta du logiciel, il fonctionne avec la version actuelle de macOS et avec macOS High Sierra et surtout, il s’installe en parallèle de la version stable de Xcode.

avatar bbtom007 | 

Manque plus qu'une version iPad ?

avatar occam | 

À propos de tous les points évoqués, j'ai envie de dire : Enfin. Enfin, enfin, et enfin.

L'engagement d'Apple auprès des développeurs y gagne en crédibilité.

avatar françois bayrou | 

Xcode n'est peut-être pas parfait, et malgré ses défauts, il a toujours été au dersus des autres, et de très loin.
Le pire a ete, pour moi, a une époque, la gestion des certificats développeurs.

avatar Jean-Jacques Cortes | 

Ce serait super cool si Apple ou une âme charitable pouvait écrire un tutoriel au sujet des certificats, en français. D'avance, mille fois merci.

avatar Rez2a | 

@Jean-Jacques Cortes

Ça arriverait un peu trop tard, les certificats ne se gèrent plus à la main depuis Xcode 8 (depuis Xcode 7 en fait, mais ça marchait une fois sur dix)

avatar jean_claude_duss | 

@Jean-Jacques Cortes

Y'a plus rien à gérer ! C'est le paradis par rapport à la galère du début !

avatar ErGo_404 | 

Quand je vois la liste des améliorations, je trouve qu'ils sont un peu en avance sur certains points, mais il y a aussi certaines améliorations qui ne sont qu'un rattrapage de ce qui se fait sur la plateforme concurrente.
Par exemple, le debug sans fil est quelque chose qui est là sur Android depuis des années.

Donc ils sont peut-être un peu en avance, mais de là à dire "de très loin", j'en doute.

avatar PiRMeZuR | 

@ErGo_404

Oui et non, j'utilise un ordi sans Wi-Fi et le debug sur Android ne marche pas sans Wi-Fi. Or, il semble qu'Xcode ne requiert que d'être sur le même réseau local. Bon, je ne pense pas qu'il existe de Mac sans Wi-Fi de toutes façon.

avatar byte_order | 

@PiRMeZuR
> j'utilise un ordi sans Wi-Fi et le debug sur Android ne marche pas sans Wi-Fi

Euh, soit j'ai mal compris le pb soit vous oubliez le debug Android via USB...

avatar fte | 

@françois bayrou

Tu n'as pas beaucoup utilisé d'IDEs.

avatar Rez2a | 

Ça a l'air d'être une bonne cuvée ce Xcode.
Une pensée pour les UIColor qu'on peut intégrer directement dans le assets catalog également 😅

avatar dscreve | 

C'est pas le compilateur qui est écrit en Swift, mais le système de build....le compilateur Swift est toujours écrit en C++

avatar BeePotato | 

@ dscreve : « C'est pas le compilateur qui est écrit en Swift, mais le système de build »

En effet. C’est la remarque que j’allais faire aussi.

avatar iGeek07 | 

@dscreve

Même remarque, c'est une erreur assez importante pour qu'elle ne reste pas dans l'article...

avatar Nicolas Furno | 

@ dscreve, BeePotato et iGeek07 :

Vous avez tout à fait raison, je me suis emporté (c'est ça d’écrire sur les sujet plus techniques qu’on maîtrise mal…).

Désolé pour le temps que ça a pris, mais c'est corrigé. Merci pour votre attention.

avatar PiRMeZuR | 

Que du bon ! Même si ce sont effectivement des choses qui existent sur IntelliJ et c'est toujours frustrant de passer de l'un à l'autre et de constater la différence de puissance en matière de fonctions avancées et de raccourcis.

En revanche, pour le débutant que j'étais il y a quelques années, Xcode était et reste le plus ergonomique pour quelqu'un qui apprend. Plus de glisser-déposer, construire une UI est beaucoup plus facile que dans Android Studio ou avec Swing (même si le premier a fait des progrès considérables).

avatar ovea | 

Oui, enfin il serait temps de récupérer le développement directement sur iOS … ça montre le manque d'efforts d'Apple pour créer un nouveau modèle d'intégration

avatar Rictusi | 

Pour moi porter Xcode sur iOS, c'est la bonne blague.

Mais peut-être qu'ils sont entrain de le développer, ou peut-être qu'ils se disent que ça n'en vaut pas la peine et que ce n'est pas fait pour.

Ou alors vous avez raison et clairement quel manque d'effort de la part de ces fainéants.

avatar smog | 

Coder depuis un iPad ou un iPhone ? C'est vraiment une demande ?

avatar byte_order | 

Ben pour convaincre qu'un iPad peut remplacer un ordinateur, va falloir, oui.

avatar smog | 

Oui, mais objectivement, C est possible ? ;-)
Sérieusement : je n'ai pas d'iPad mais j'ai déjà manipulé, peut-on vraiment coder sérieusement avec ça ? taper du code je veux bien, mais les ressources du projet, etc etc... ? C'est gérable ?

avatar inumerix | 

Ils parlent d'une version stable de Xcode. Ah ça existe ? J'en ai jamais vu...

avatar ovea | 

Sérieux !?

Ne pas utiliser l'iPhone ou l'iPad
pour faire du dév. est une immense idiotie,

au minimum pour les décisions importantes
liés à l'ergonomie de l'application,

de surcroît pour tout le développement purement graphique qui se passe clairement de codage,

et finalement pour la gestion du projet qui n'a pas besoin d'organisation spécifique supplémentaire.

Concrètement, le Mac est un coût imposé par Apple supplémentaire qui n'a rien à voir avec le développement qui se satisferait d'une interactions entre un playground pro et des parties de codes (((voir juste quelques variables de déploiement de bibliothèques archi réutilisées)))

avatar Gérard BUGUET | 

HÉLAS !!!

Les touches ⌘- et ⌘+ sont toujours inactives avec xCode 9 (macOS, dans l'éditeur source du storyboard).
Ou alors, il me manque un paramétrage quelque part.

CONNEXION UTILISATEUR