Accueil Nos publications Blog Développer sur iOS : Kit de démarrage

Développer sur iOS : Kit de démarrage

Icône Simulateur iPhoneIl est rarement facile de débuter dans un environnement technique nouveau et qui ne partage pas grand-chose de commun avec Java ou .NET. Tu as envie de goûter les joies du développement sur iOS ? Ça peut se comprendre, c’est un environnement qui fait beaucoup parler et où il se passe des tas de choses.

Tu te sens perdu dans la masse de contenu à lire et tu ne vois pas par où commencer ? Ce n’est rien, laisse-moi te donner quelques clés pour mettre le pied à l’étrier.

Installer

Avant de faire quoi que ce soit, ce serait pas mal de s’assurer que tu as déjà tous les outils matériels et logiciels qu’il faut avoir pour commencer à taper son code ! On y va.

Buy a Mac

Ça paraît évident mais ça ne coûte rien de le rappeler : pour coder sur iOS il faut une machine pommée. Apple a tendance à pousser son parc vers les dernières versions de Mac OS, alors assure-toi que tu peux suivre le rythme en choisissant un modèle plutôt récent et costaud.

Pas d’inquiétude, tu ne devrais pas être trop dépaysé dans l’environnement d’Apple, il y a des fenêtres, un curseur et même une commande UNIX. Et si tu as trop peur tu peux toujours t’installer un Windows en dual-boot ou en virtualisé par Parallels ou VMWare Fusion.

Xcode

Icone Xcode

Ensuite, tu dois installer Xcode. C’est le nom de l’IDE développé par Apple mais le terme couvre aussi toute la gamme d’outils et de frameworks qui l’accompagne. Il va encore falloir passer à la caisse : Xcode 4 est facturé 3,99€ sur l’App Store. Si tu es bien sûr de vouloir aller jusqu’au bout, tu peux aussi t’inscrire à l’ADP pour l’avoir gratuitement.

Apple Developer Program

Promis, c’est la dernière fois que je parle d’argent. L’ADP coûte 100€ à l’année, pour ce prix-là tu as accès à du contenu supplémentaire comme les vidéos des conférences de la WWDC et les frameworks en version beta. Tu en as aussi besoin pour obtenir les certificats qui te permettent non seulement de publier sur l’App Store mais aussi sur ton appareil pour tester ! C’est pas drôle, mais c’est important de le noter.

Coder

Voilà, tu as toute la batterie d’outils nécessaires, maintenant tu vas pouvoir faire chauffer tes doigts de développeur et attaquer le vif du sujet !

Objective-C

Voilà un langage que tu ne connais pas et dont tu n’as sans doute jamais entendu parler dans un autre contexte ! C’est impressionnant comme ça, mais promis ça ne fait pas mal. L’Objective-C est plutôt bien nommé : c’est un langage orienté objet construit sur le C. Les principes et la syntaxe sont un peu abrupts au premier abord, mais vraiment rien qui ne puisse résister à un peu de bonne volonté. Pour échauffer tes méninges, voilà un exemple d’appel à une méthode : [myButton setTitle:@"Valider" forState:UIControlStateNormal]

Voyons un peu le rôle de chaque élément :

  • myButton est l’objet sur lequel j’appelle la méthode
  • setTitle:forState: est la signature de la méthode appelée (le message en fait, comme en Smalltalk)
  • @"Valider" et UIControlStateNormal sont les paramètres :
    • le premier est une chaîne de caractères (le préfixe @ indique qu’il s’agit d’une chaîne Objective-C),
    • le second est un membre d’enum.

Je reviendrai sur les détails du langage dans un autre article si tu veux, mais si tu te souviens de tes cours de C, tu ne seras pas dépassé. Oui, on utilise des pointeurs pour les objets. Ça peut sembler un peu daté comme ça mais rassure-toi, le langage est maintenu à jour par Apple : récemment, les blocks ont été ajoutés !

Cocoa-Touch

Un bon langage est rarement suffisant pour monter des applications entières, et il y a bien sûr des tas de frameworks à ta disposition pour atteindre tes buts. Il y en a des tonnes pour développer sur iPhone en utilisant le GPS, les accéléromètres ou la caméra, mais les deux que tu utiliseras à coup sûr sont Foundation et UIKit.

Les objets graphiques comme les boutons, les champs textes et les tableaux sont dans UIKit, on les reconnaît parce qu’ils sont préfixés par ‘UI’. On peut les personnaliser ou les hériter au besoin, on peut aussi entièrement s’en passer mais c’est un sacré risque. Foundation reste un incontournable, c’est ici que tu trouveras les objets NSString, NSArray ou même NSObject. Dans le cas d’une app connectée, tu risques d’apprécier la présence de NSURLConnection.

Tu vois, beaucoup de choses sont déjà faites pour toi et il est très facile de monter une app en utilisant surtout les objets déjà présents dans le framework. Si tu connais les principes MVC, tu ne devrais pas être dérouté par les conventions utilisées pour concevoir des apps.

Gestion de la mémoire

Il n’y a pas de Garbage Collector dans Cocoa-Touch ! Il faut dire que le premier iPhone était un mouchoir de poche question matériel, et pour le faire tourner avec cette réactivité il fallait bien faire quelques sacrifices. Je vois déjà ton front se couvrir de sueur à l’idée d’avoir à appeler un destructeur au bon moment sur tes objets et je vais devoir écarter tes inquiétudes : ce n’est pas facile, mais ce n’est pas l’horreur.

En fait, une fois les principes de base et les conventions bien assimilés, on ne rencontre plus de difficultés. Oh il reste encore possible, même avec de l’expérience, de laisser passer ne fuite mémoire ou de rencontrer un zombie, mais ce ne serait pas drôle si ce n’était pas un peu compliqué.

Xcode

Édition de texte sur Xcode

Xcode est un bon IDE, d’ailleurs il a connu le mois dernier son premier véritable “total makeover” depuis l’arrivée de Mac OS X en 2001. Ça veut dire qu’il est flambant neuf avec des tonnes de fonctionnalités, un compilateur tout neuf et une interface dernier cri, mais aussi qu’il faut lui pardonner ses erreurs de jeunesse.

Xcode 4 bénéficie enfin d’un codesense intelligent : LLVM (le nouveau compilateur qui succède à GCC) fait une partie du travail pendant que tu tapes tes lignes. Ça veut aussi dire qu’il arrive à détecter quelques erreurs avant même que tu aies lancé la compilation. Les aguerris de Visual Studio .NET comprennent de quoi je parle.

Construire son interface dans Xcode

Pour le plus grand plaisir des amateurs d’IDE à une seule fenêtre, Xcode intègre de jolis onglets, des volets dans tous les sens et se paye même le luxe d’intégrer directement Interface Builder. IB était jusqu’à présent une application séparée, qui permettait de fabriquer ses interfaces graphiques en drag&drop. Notons également l’intégration native de git et svn pour le contrôle de source.

Se documenter

Une fois les armes en main, lire le manuel n’est pas une mauvaise idée, n’est-ce pas ? Apple chérit ses développeurs avec une documentation très riche disponible directement depuis Xcode ou sur le portail web. Elle contient bien sûr la référence objet très détaillée, mais également des guides thématiques sur les sujets les plus pointus. Des exemples de code permettent aux plus curieux de voir des applications concrètes pour s’en inspirer.

Les heureux abonnés à l’ADP peuvent accéder au forum des développeurs, que les ingénieurs de Cupertino visitent à l’occasion. Des documents vidéo comme des “Getting Started” ou les vidéos de la conférence annuelle des devs Apple leur sont aussi réservés.

Tester

Simulateur

Une fois les premières lignes d’un fébrile “Hello World” tapées dans son IDE, quel plaisir de voir enfin les bits s’activer et la magie opérer ! Pour ne pas avoir à sans arrêt brancher un appareil pour tester le code, un simulateur est disponible. Il permet de lancer son app dans un environnement dédié qui simule le comportement d’un iPhone ou d’un iPad. On peut même simuler des gestes à deux doigts, des secousses ou des avertissements mémoire.

Simulateur iPhone

Il reste cependant limité : pour la caméra et les accéléromètres il faudra un vrai appareil. Il est aussi important de signaler qu’il est lancé sur l’architecture de la machine de test : ses performances et ses limites de RAM sont bien plus élevées que celles d’un iPhone.

Appareil

Il est important de tester sur un appareil si possible. Non seulement pour vérifier le bon fonctionnement de l’app hors des limitations du simulateur, mais aussi parce que le feeling d’une app est complètement différent dès lors qu’on l’a littéralement entre les doigts.

Comme je l’ai déjà précisé, il faut être inscrit à l’ADP pour obtenir le certificat qui permet de signer son application pour l’installer sur son terminal. C’est bien une étape essentielle si l’on souhaite vraiment se lancer.

Debugging

Xcode intègre un debugger pour surveiller l’exécution quand il y a de la casse. Dans les précédentes versions, il s’agissait de GDB mais Xcode 4 intègre LLDB qui va plus loin dans les possibilités tout en se permettant d’être plus performant. Pour ceux qui ne jurent que par un bon printf, ils seront comblés par la commande NSLog() qui permet la même chose.

Instruments

En plus du debugger, Xcode permet de lancer son app dans un environnement surveillé par Instruments. Instruments peut ausculter les allocations mémoire, le CPU ou encore les performances graphiques à mesure que l’application tourne, pour remettre un rapport détaillé. C’est un bon réflexe à prendre, et pas seulement lorsqu’il y a des soucis, de vérifier que tout marche bien sous le capot.

Publier

Le but est bien de lâcher l’application dans la nature à destination de ses utilisateurs. Le processus s’est énormément simplifié depuis la sortie d’iOS 2.0 et de son App Store.

Une fois le certificat de déploiement édité, il suffit de compiler son application signée, et c’est depuis Xcode que l’on peut lancer une vérification de son package et soumettre son app à Apple. Toute la gestion des apps se passe dans l’outil web iTunes Connect, c’est ici que tu pourras voir l’état de modération de ton app.

J’aime autant te prévenir qu’elle risque de rester en “Waiting for Review” pendant plusieurs jours. Le processus de révision est assez rapide après ça, mais il faut faire la queue, bien que j’aie déjà vu des mises à jour d’appli être soumises un soir et être validées après moins de 24h. Le mot d’ordre est : ne pas tabler sur une durée bien précise. Si tu travailles avec une administration qui veut une date, table sur une dispo de l’app 2 semaines après soumission (si elle est acceptée), tu devrais avoir une marge suffisante.

Pour ce qui est de la crainte d’être refusé, Apple a édité des Guidelines qui présentent bien toutes les erreurs à ne pas faire. Suivre l’actualité de l’AppStore et des applis acceptées et refusées n’est pas un luxe quand on se lance dans un projet.

Trouver de l’aide

Contrairement à ce que l’on peut croire en France, il y a une vraie communauté de développement Apple. Si tu es abonné ADP, tu pourras déjà participer au forum officiel assez actif pour interroger la communauté. StackOverflow a aussi une riche banque de questions/réponses sur le sujet, et si ton sujet n’est pas abordé, rien ne t’empêche de te lancer.

Il y a également des tonnes de blogs de développeur Cocoa passionnés, surtout anglophones, qui traitent de l’actu du sujet et de points techniques. Comme la communauté est assez active, si tu en as trouvé un, tu peux être certain d’en avoir une demi-douzaine dans le coin. Tu peux commencer ta lecture par Cocoa With Love et Cocoa Samurai, par exemple.

Si comme moi tu fais confiance au papier pour bien débuter, tu peux te tourner vers des livres comme Programming in Objective-C 2.0 pour ce qui est du langage, et iPhone Programming, The Big Nerd Ranch Guide pour le développement iOS en particulier. Note par contre que les outils de développement évoluent très vite et que les auteurs et les éditeurs suivent comme ils peuvent?

Enfin, pour avoir l’occasion de parler avec des Français qui partagent cette passion, le club CocoaHeads organise des présentations, une fois par mois dans Paris. L’entrée est libre, mais il faut se manifester en avance. On s’y croisera peut-être !

Bon courage !

Comme pour tout ce qui est nouveau, tu rencontreras sûrement des difficultés et de la frustration. Essaye juste de te souvenir que si ça a l’air mal conçu, c’est plutôt que les concepts te sont étranger, et que tu n’es pas stupide mais que tu as du chemin à faire.

Maintenant au boulot !