11/06/2013 02:51:00 PM

Méthode et démarche pour un apprentissage efficace en développement iOS


I. Introduction

Si vous êtes un débutant complet, vous devez suivre tout le guide.
Si vous maîtrisez déjà la programmation procédurale, vous pouvez commencer à la section III de ce guide.
Si vous maîtrisez la programmation objet, vous pouvez commencer à la section IV de ce guide.
Dans tous les cas, avant de commencer vous pouvez lire l'annexe à la section VI qui comporte quelques conseils utiles à toutes les étapes de votre apprentissage. ;)

II. Je suis un débutant complet qui n'a aucune expérience en développement informatique

 Règle N°1 : n'allez pas trop vite. Vous devez avoir du temps devant vous et ne pas sauter les étapes.
Le langage Objective-C qu'on utilise pour développer sous iOS sur iPhone et iPad est une surcouche du langage C, c'est-à-dire que c'est du C auquel on a ajouté des fonctionnalités supplémentaires. En conséquence, la première étape est de maîtriser le langage C.
Commencez par apprendre le langage C. Voici quelques ressources pour vous y aider.
  • La bible du C et votre nouveau livre de chevet. Si vous avez une copine ou un copain, quittez-la/le. À partir de maintenant, vous dormez avec ce livre : Le langage C norme ANSI qu'on appelle aussi le K&R pour Kernighan et Ritchie. Dennis Ritchie, malheureusement décédé en octobre 2011, est le créateur du langage C et un des développeurs du premier système Unix, Unix étant le noyau de Mac OS X.
    Autant dire qu'en tant que développeur sur les technologies Apple, vous pouvez considérer ce monsieur comme Dieu tout puissant. :D
  • Les tutoriels du site communautaire Developpez.com. Attention, il y a des cours de tous niveaux. Ne vous lancez pas dans des choses trop difficiles. Dans un premier temps contentez-vous des cours d'initiation.
  • Pour voir des choses plus avancées en C, vous trouverez énormément de ressources via votre moteur de recherches préféré tout simplement. Vous trouverez encore une fois de très bons tutoriels sur le site Developpez.com.
  • Si vous souhaitez pousser le vice au maximum, je vous recommande un livre de programmation système sous Unix. Ça vous sera très utile par la suite pour comprendre ce qui se passe vraiment à l'intérieur d'un OS. Ceci dit, ce n'est pas indispensable et si vous êtes pressé vous pouvez passer au chapitre III. Cependant, si vous comptez utiliser ce que l'on appelle le Multithreading plus tard sur iPhone ou iPad, il est particulièrement intéressant de maîtriser les threads en C pour commencer. La maîtrise des threads en Objective-C sur iPhone se révélera d'une facilitée déconcertante par la suite. :)

III. Je maîtrise la programmation procédurale

 Alors deux possibilités.
  1. Vous maîtrisez la programmation procédurale dans un autre langage que le C. STOP ! Vous allez retourner au chapitre II. La maîtrise du langage C est indispensable. Cependant, comme vous connaissez déjà la programmation, vous irez certainement très vite à apprendre le C.
  2. Vous maîtrisez la programmation procédurale en langage C, vous pouvez continuer. Attention, vous la maîtrisez vraiment ! Avoir copié/collé trois fois du code venant du net sans le comprendre n'est pas considéré comme une maîtrise suffisante pour passer à la suite. ;)

    Que vous soyez dans le cas 1 ou 2, les notions fondamentales que vous devez absolument avoir acquises en langage C sont les suivantes :
  • les types de données ;
  • les pointeurs ;
  • la gestion de la mémoire ;
  • les instructions ;
  • les structures ;
  • les fonctions ;
  • les entrées sorties ;
  • la compilation et le débogage avec gcc/gdb ou llvm/lldb.
    Maintenant, si vous êtes dans le cas 1 retournez à la section II. Pour les autres vous allez devoir apprendre la programmation objet et vous pouvez passer à l'Objective-C. Pour ça, vous pouvez l'apprendre avec n'importe quel cours bien fait d'Objective-C.

    Voici des ressources pour vous aider.
  • Votre nouveau livre de chevet à partir de maintenant, vous pouvez le poser sur le K&R : Programmation Cocoa sous Mac OS X d'Aaron Hillegass. Dans un premier temps, contentez-vous des premiers chapitres pour apprendre l'Objective-C. Inutile d'avancer sur le framework Cocoa tant que vous ne maîtrisez pas le langage Objective-C et la programmation orientée objet.
  • D'abord vous devez apprendre les concepts fondamentaux de la programmation orientée objet (POO) comme l'encapsulation, l'héritage, le polymorphisme, la surcharge, les constructeurs et le destructeur et quelques autres choses.
    Encore une fois, ne lâchez pas votre moteur de recherche, vous trouverez des tonnes de ressources sur la POO et l'Objective-C très facilement.
  • Chez Apple, les documents Learning Objective-C: A Primer et Programming with Objective-C peuvent vous aider pour apprendre le langage Objective-C.
À noter que pour développer pour iOS, vous devez absolument avoir une bonne connaissance des design patterns !
Apple indique que les concepts les plus importants à connaître sont les patterns Model View Controller, Delegation, Target-action ainsi que les techniques de Block objects et Sandboxing.
En réalité, Cocoa utilise une vingtaine de design patterns différents décrits dans le Cocoa Fundamentals Guide. D'après moi, vous ne pouvez pas commencer à développer pour iOS sans connaître et avoir bien compris au minimum Model View Controller, Delegation, Chain of Responsibility et Template Method ainsi que la manière dont ils sont utilisés dans Cocoa. Vous pourrez découvrir et apprendre les autres au fur et à mesure de votre progression.

IV. Je maîtrise la programmation objet


  1. Vous maîtrisez la programmation objet seulement en VB, C#, Java ou PHP mais vous n'avez jamais fait de C. STOP ! Retournez à la section II car vous n'avez pas les connaissances nécessaires des pointeurs et de la gestion de la mémoire. Évidemment vous irez 100 fois plus vite qu'un vrai débutant mais prenez le temps de repasser sur la section II et d'acquérir de bonnes bases en langage C. Cela vous sera d'une grande aide pour la suite.
  2. Vous maîtrisez la programmation objet en VB, C#, Java, PHP ou C++ et vous avez déjà fait du C et/ou C++. Parfait, vous avez juste à vous familiariser avec la syntaxe d'Objective-C qui est un peu déroutante au début (inspirée du langage Smalltalk) et vous pouvez attaquer tout de suite la programmation Cocoa. Si vous venez du C++, le mieux est de commencer avec le document de Pierre Chatelier qui est une excellente introduction pour passer tranquillement du C++ à l'Objective-C.
  • Chez Apple, les documents Learning Objective-C : A Primer et Programming with Objective-C peuvent vous aider pour apprendre le langage Objective-C.
  • Votre nouveau compagnon à partir de maintenant s'appelle Programmez pour iPhone/iPad. Il est tourné vers la pratique et se présente sous la forme d'une quarantaine de fiches thématiques très complètes allant du premier Hello World à Core Data en passant par la gestion du GPS, la création d'un delegate, le multitâche, les timers, ou encore la publicité iAd, SQLite, ou le parsing XML… liste non exhaustive bien entendu. ;)
    Ce livre comporte énormément d'exemples de code et la qualité de celui-ci vous aidera à assimiler les bonnes pratiques à respecter tout en vous faisant découvrir de multiples facettes du développement iOS. En bref, si vous codez comme eux, vous ne codez pas comme un cochon. Il est très important de prendre de bonnes habitudes dès vos premiers pas en programmation.
    Par contre, attention au piège que représente un ouvrage de ce type. Du fait que beaucoup de code est fourni, la tentation de recopier bêtement de nombreuses portions de code sans les avoir vraiment comprises est grande. N'utilisez jamais du code que vous n'avez pas produit vous-même dans une application. Vous le regretterez quand viendra le moment d'en assurer la maintenance. ;)
  • Un livre de référence : Programmation Cocoa sous Mac OS X d'Aaron Hillegass. Vous pouvez sauter quelques chapitres qui ne concernent que Mac OS X et pas le développement iOS mais tout le reste est bon à prendre pour démarrer avec Cocoa.
  • Inscrivez-vous sur l'iOS Dev Center si ce n'est pas déjà fait et mettez-le en favoris. Vous y trouverez la documentation de référence du SDK et si vous êtes familiarisés avec le MSDN ou de la Javadoc vous vous y sentirez comme chez vous.

V. Ça y est je Maîtrise ! Avec un grand M !

Pas tout à fait. Il vous reste encore à devenir un développeur iOS. Voici les éléments à maîtriser et quelques sources d'informations pour vous y aider.
  • Cocoa Touch : le framework de développement iPod Touch, iPhone et iPad. C'est une version adaptée aux appareils mobiles du framework Cocoa qu'on utilise pour développer sous Mac OS X. À partir de maintenant, la majeure partie de votre travail va consister à découvrir puis apprendre à utiliser les classes de ce framework.
  • Interface builder : l'outil de design d'interface graphique. Vous pouvez lire la section Edit User Interfaces du XCode 4 User Guide. Il est plus que recommandé de lire les iOS Human Interface Guidelines avant de concevoir une application destinée à l'App Store.
  • Instruments : Instruments est une suite de logiciels servant principalement à tester et optimiser les performances de vos applications, à détecter les fuites de mémoire, etc. Comme pour Interface Builder, vous disposez d'un guide très complet : Instruments User Guide.
  • SQLite : la base de données que l'on utilise le plus souvent sur iPhone et iPad. 
  • GPS, Accéléromètre, Caméra… : rien de compliqué, pour tous les appareils embarqués dans l'iPhone ou l'iPad il faudra simplement vous débrouiller en farfouillant dans la doc des classes dédiées à ces appareils, toujours sur l'iOS Dev Center.
  • Dessin et animation : pour pouvoir dessiner et faire des animations, vous devez faire connaissance avec deux frameworks, Quartz 2D et Core Animation. Nous les appellerons familièrement Q2 et CA. Venez, ne soyez pas timide, je vais vous présenter. Q2 et CA, voici Développeur Débutant soyez gentils avec lui. 
  • La 3D : si les sympathiques Q2 et CA vous ont ennuyé de par leur simplicité d'esprit et leur facilité à se laisser manipuler, si vous êtes un véritable aventurier des temps modernes, un guerrier du binaire, un vrai de vrai, un barbu, un tatoué qui aime ça et qui en redemande, alors vous pouvez vous frotter aux Démons les plus terrifiants qu'on ait connus de mémoire de développeur, les Maîtres de l'Enfer des Dév, j'ai nommé le Sombre Seigneur OpenGL et le Prince Noir OpenGL ES. Si vous y survivez, courageux aventurier, votre nom sera glorifié pour l'éternité et vous pourrez faire tomber les filles à la prochaine WWDC.

    Bon et puis débrouillez-vous un peu, après tout, si vous êtes arrivé jusqu'ici vous n'avez plus besoin que je vous guide, vous êtes à peu près un développeur confirmé.