Programmation iPhone OS 3 par Thomas Sarlandie
Par Didier Pulicani - Publié le
Programmation iPhone OS 3, tel est le nom de l'ouvrage de Thomas Sarlandie disponible chez Eyrolles, que nous avons lu pour vous. Nous vous proposons également en fin d'article, une interview de l'auteur.
Un livre pour quoi ? Pour qui ?
Il n'existe pas de profil type de développeur iPhone. Certains sont des programmeurs Mac chevronnés, d'autres viennent du monde de l'embarqué, certains n'ont fait que du PHP; la programmation est un domaine très ouvert, et qui ne nécessite pas, à première vue, de lourdes compétence pour commencer à développer.
La programmation iPhone -considérée comme relativement accessible par la communauté- est souvent comparée -à tort- à un prolongement de la programmation web (sans doute car les
Appsressemblent beaucoup à de petits sites internet). Pourtant, une application iPhone est une application
lourde, c'est à dire, comparable à un programme pour Mac OS, Windows ou Linux. On est ici assez loin des concepts PHP ou de tous les sites orientés
clients. D'autre part, le monde de l'embarqué impose des contraintes importantes (taille de l'écran, autonomie, puissance de calcul...) à bien garder à l'esprit durant le développement. Enfin, si l'on désire développer autre chose qu'un
coussin péteur, toute une phase de conception et d'analyse s'avère absolument indispensable, sans oublier les éléments d'interface, d'ergonomie, mais aussi toute la partie commerciale, qui nécessitent souvent des ressources importantes.
Une fois ces grands principes en tête, il est temps de passer à l'action. C'est souvent durant cette phase que la littérature intervient.
Programmation iPhone OS 3est un livre dont le but est de donner une vision globale du développement sur iPhone : l'ouvrage vous guidera tout au long de la création de votre application, des bases de l'ObjectiveC jusqu'à la commercialisation du programme. Le public ciblé est alors assez vaste.
Concernant les pré-requis, ils sont évidemment liés à ce que vous voulez faire. D'une manière générale, il est fortement recommandé d'avoir des bases en programmation -notamment objet- si vous ne voulez pas être perdus dès la première page. Ensuite, plus votre application sera complexe, et plus il vous faudra avoir les pré-requis nécessaires aux domaines exploités, que ce soit OpenGL, les bases de données, les réseaux, l'image etc.
Aujourd'hui, les sociétés qui développent sur l'iPhone emploient généralement des ingénieurs ou des techniciens supérieurs en informatique. Pour autant, sur des applicatifs simples, avoir fait un petit peu de C++ et de Java (ou même de PHP) suffira largement pour débuter.
Dans les méandres du SDK
Du simple téléchargement de XCode à la commercialisation de votre application, de nombreuses étapes peuvent être bloquantes pour qui n'aura été bien attentif à la documentation fournie.
L'auteur de ce livre a donc essayé d'expliquer et de simplifier au maximum les processus les plus fastidieux. Créations de comptes, de certificats, soumissions... Les opérations délicates sont assez bien détaillées et pourront vous faire économiser de longues soirées.
Mais le SDK, c'est aussi deux programmes :
- Interface Builder, pour créer vos interface
- XCode, l'IDE de programmation
L'interaction entre ceux deux applicatifs est indispensable à comprendre, et c'est souvent le point le plus délicat avec le SDK.
La livre aborde la chose via des exemples simples, et rentre petit à petit dans certains détails. Le débutant comprend vite les concepts et se retrouve rapidement autonome, capable de créer ses premières interactions entre la partie interface et la ligne de code.
Sans explication préalable, cette partie est souvent la plus difficile à comprendre pour les autodidactes, et peut se révéler vraiment bloquante si tous les concepts ne sont pas bien assimilés dès le début.
Découvrir l'ObjectiveC
Développer sur iPhone impose deux choses : un Mac et la connaissance de l'OjectiveC. Pour les programmeurs habitués au C++ et au Java, la différence est notable. Pour autant, tout bon programmeur s'adapte généralement très bien à un nouveau langage, pour peu que les grands concepts ne soient pas trop éloignés des langages de référence. L'objectiveC étant (grossièrement) une surcouche du C (qui accepte notamment le C++), la phase d'adaptation est donc assez rapide.
Dans son livre, Thomas revient donc rapidement sur les grands concepts de base, que ce soit les classiques (créations de classes, de fonctions, assertions...) mais il aborde aussi les concepts plus spécifiques à ce langage et notamment pour tout ce qui touche aux threads, au réseau et à la gestion de la mémoire. Le livre est très bien étudié, et ne se focalise donc que sur les éléments indispensables pour réaliser ses premiers prototypes d'interface. Ensuite, libre à chacun d'aller voir la documentation détaillée pour chaque fonction avancée qui concerne son application.
Notons toutefois que plusieurs thèmes sont abordés avec beaucoup de détails :
- la gestion des notifications (même côté serveur)
- l'enregistrement et la manipulation des données (CoreData, XML etc.)
- le transfert des données via le réseau
- les données multimedias (sons, vidéos..)
Ces fonctions étant utilisées par une grande partie des applications, il est vraiment appréciable d'y retrouver des exemples concrets et bien expliqués, permettant au développeur d'entrer rapidement en matière sans devoir éplucher trop de documentation.
De l'importance de la conception
La conception est souvent la grande oubliée des applications iPhone, surtout lorsqu'elles deviennent complexes et populaires. L'erreur n'est pas propre à l'iPhone, mais concerne bien tous les projets informatiques : commencer son application par taper une ligne de code est une approche courante, mais peu efficace.
Il faut bien comprendre que si, dans la tête du développeur, tout semble à première vue parfaitement clair, il est quasi impossible de prendre en compte, du premier coup, toutes les recommandations d'Apple, tous les cas d'utilisations de votre application et tous les pré-requis qui seront nécessaires à une étape donnée de votre projet.
Voilà pourquoi une bonne partie de ce livre est consacrée à la conception, à l'ergonomie et aux éléments d'interface. Thomas Sarlandie connait bien le problème : une bonne idée ne suffit pas toujours et un projet iPhone doit être abordé avec la même philosophie qu'un logiciel informatique classique : cahier des charges, spécifications, coding, validation, beta-test, commercialisation...
Encore une fois, difficile d'être exhaustifs sur le domaine. Thomas s'attarde donc à quelques grands principes spécifiques à l'iPhone. Les principaux
design patterns, par exemple, doivent être assimilés par le programmeurs avant de pouvoir choisir lequel servira de base pour son application.
Dans le chapitre consacré aux interfaces, l'auteur dégrossit les principales structures fournies par Apple (notamment les vue par table, les vue modales, la navigation par onglet...), mais s'applique aussi à donner des exemples précis. L'interface n'est pas qu'une affaire de design, mais touche beaucoup le positionnement des éléments fonctionnels, les type de workflows, les alertes...
Sur l'AppStore, beaucoup de programmes sont basés sur des idées plutôt originales, et restent malgré tout difficiles à utiliser. C'est souvent la conséquence d'une manque de réflexion en amont, qui nécessite, suivant la complexité du projet, l'intervention d'un concepteur dédié à cette tâche.
Des bons conseils à tous les niveaux
Un livre n'est pas conçu pour uniquement dégrossir de la documentation, il permet aussi d'apporter au lecteur des conseils et des points de détails qu'Apple ne mentionne pas toujours.
L'aspect commercial est par exemple, souvent laissé pour compte : maitriser la date de sortie, faire un communiqué de presse, réaliser une petite vidéo de démonstration... Autant de
bonnes idéesparfois oubliées du développeur. Et comme le précise Thomas, un bon programme peut se retrouver dans les méandres de l'AppStore, si sa commercialisation n'a pas été un minimum assurée.
Dans l'ensemble, même pour les programmeurs assez expérimentés, ce livre regorge de petits conseils et astuces, tirés de l'expérience de l'auteur.
Conclusion
Programmation iPhone OS 3de Thomas Sarlandie est un livre facile à lire et très complet. Il conviendra parfaitement à tous ceux qui veulent entrer sereinement dans l'univers du SDK de l'iPhone, et qui veulent éviter les mauvaises surprises.
L'auteur fait le tour de toutes les étapes, s'arrête sur les fonctions importantes, et, pour une fois dans ce type d'ouvrage, développe de manière objective tous les aspects principaux liés à la conception.
Pour une trentaine d'Euros, le livre en donne pour son argent.
Seule critique, il aurait été appréciable d'avoir, à côté du livre, un petit CD où l'on puisse retrouver quelques exemples cités dans l'ouvrage, voire des tutoriaux vidéos pour une meilleure prise en main des outils. Mais comme le dit l'auteur, le site d'Apple reste encore le meilleur point d'entrée à ce niveau.
Interview de Thomas Sarlandie
Bonjour Thomas. Peux-tu te présenter rapidement ? Quel a été ton parcours ?
Bonjour Didier. Je suis un programmeur autodidacte. J'ai commencé il y a une quinzaine d'années avec "La bible du PC Programmation Système" et le guide Marabout de l'assembleur (les anciens apprécieront). J'ai ensuite évolué vers le C et la robotique avant d'intégrer l'EPITA où j'ai fortement mis à contribution mes connaissances, attaqué des projets de plus en plus gros et évolué vers le JAVA en dernière année.
Après une période en freelance, durant laquelle j'ai beaucoup travaillé dans le monde des télécommunications et du mobile, je me suis associé en 2006 avec Sébastien Berten et Vincent Frattaroli (deux anciens de SFR) pour monter la société Backelite. Nous étions à l'époque persuadés qu'il y avait une place pour une société spécialisée dans le développement mobile dont la spécificité serait d'apporter à ce marché le niveau d'exigence et de qualité des opérateurs et des SSII.
Nos premières réalisations sont le site mobile de Voyages-sncf.com, de 20minutes.fr, de sncf.mobi. Nous avions à l'origine décidé de ne faire que des sites Internet mobiles et de ne pas développer en J2ME ou Windows Mobile. Mais lorsque le SDK iPhone est sorti je m'y suis intéressé de très près et notre première application (LeMonde.fr) a montré qu'il y avait une demande extrêmement importante du public.
Aujourd'hui Backelite occupe 40 personnes (et nous recrutons encore, avis aux amateurs !) dont presque un tiers travaille exclusivement pour des applications iPhone. Nous venons de remplir un écran complet d'iPhone avec nos applications !
Quel est le profil idéal pour bien commencer avec le SDK, selon toi ?
Les développeurs Java peuvent facilement apprendre le SDK iPhone. La grande majorité des types de base (chaîne, date, liste, etc) sont très proches (Java s'est fortement inspiré de NextStep) et les design pattern utilisés dans le SDK sont assez bien connus. Les développeurs ayant déjà développé des applications "lourdes" (avec Swing ou SWT) seront fortement avantagés car la principale difficulté à mon avis, est de quitter le paradigme "page par page" du développement Web pour penser son application comme un exécutable dont la durée de vie est beaucoup plus longue et dans laquelle on peut faire plusieurs choses en parallèle. Une connaissance au moins basique du C et des pointeurs est aussi très utile.
Comment qualifies-tu la courbe d'apprentissage ? Quelles sont les étapes les plus délicates ?
La première étape est d'installer le SDK et de faire tourner un des projets exemples ou un projet vide. J'ai rencontré beaucoup de personnes intéressées par le développement iPhone qui n'osaient pas passer cette étape ; il faut savoir que le SDK s'installe très facilement et que sans payer l'abonnement on peut déjà regarder les exemples, les compiler et lancer des applications dans le simulateur.
Il faut ensuite s'habituer à la syntaxe de l'Objective-C qui est surprenante au premier abord. Cela prend quelques jours mais une fois le parallèle fait avec un langage connu (je m'appuie sur Java et PHP dans mon livre), on est rapidement opérationnel.
La troisième étape avant d'atteindre un rythme de croisière, est la maîtrise de la gestion de la mémoire. Une fois ce cap passé, on progresse en découvrant les APIs, en lisant les exemples et bien sûr en développant.
Certains semblent penser qu'une application iPhone se programme un peu comme un site web. Que leur réponds-tu ?
Le mode de fonctionnement d'une application est profondément différent de celui d'un site web. C'est un peu comme comparer le développement Web au développement avec Visual C++ ou Delphi.
Un développeur qui concevrait son application comme un site Web risque de manquer une grande partie du potentiel iPhone.
Quels sont les pièges à éviter absolument, les erreurs les plus courantes ?
J'en citerai deux. La première est de commencer à développer sans être passé par une phase de conception de l'interface et de réflexion ergonomique. Cette phase est extrêmement importante sur mobile et il faut commencer par maquetter l'interface (sur papier, dans powerpoint, photoshop, etc) avant de développer.
La deuxième erreur classique est de commencer à développer avant d'avoir bien compris la gestion de la mémoire sur iPhone OS. On se retrouve très vite avec des bugs très difficiles à identifier et corriger.
Quel est l'avantage de ce type de littérature pour commencer à programmer ?
La documentation Apple est extrêmement riche mais je pense qu'un débutant est rapidement perdu dans la masse des termes, concepts et librairies présentées. En écrivant ce livre, j'ai cherché quels étaient pour moi après un an de programmation iPhone les points essentiels, ceux sur lesquels j'insiste avec nos nouvelles recrues et je me suis concentré sur leur explication. J'estime qu'après l'avoir lu ce livre, le développeur a compris les principaux concepts et peut progresser avec la documentation officielle. J'espère en quelque sorte accélérer les premières étapes de l'apprentissage.
Aujourd'hui, l'étape de validation reste une grosse boite noire pour le non-initiés. Que manque-t-il vraiment à ce processus pour le rendre moins austère ?
Tout d'abord je pense que le mécanisme de validation a été une des clefs du succès de l'AppStore et qu'il a de nombreux bons côtés, en particulier celui de forcer les équipes de développement a vraiment finir une application avant de la soumettre.
Ceci dit, il y a beaucoup de décisions prises de manière très arbitraire et les règles évoluent de manière très opaque. Mon souhait principal est que les critères de validation soient intégralement rendus publiques. Il devrait aussi être possible d'obtenir une pré-validation pour limiter le risque de rejet sur des concepts innovants ou simplement nouveaux.
As-tu peu jeter un oeil du côté d'Android ou de webOS ? Est-ce que l'iPhone conserve son avance en matière de qualité de développement par rapport à cette nouvelle concurrence ?
L’iPhone a clairement pris une longueur d’avance en terme de qualité des outils de développement et surtout de documentation et informations disponibles en ligne. Je pense qu’il est nettement plus facile de trouver des informations « avancées » pour le SDK iPhone que pour Android ou WebOS.
Ceci dit, nous nous intéressons de très près aux autres plateformes. Android est aujourd'hui une plateforme mature, sur laquelle nous développons depuis le lancement français. Le parc installé a une progression régulière mais il reste encore très largement inférieur au parc iPhone.
Le WebOS de Palm s'inscrit dans une autre logique, celle des constructeurs qui font le pari de HTML5 et JavaScript. Nous croyons beaucoup à cette approche et investissons fortement en recherche et développement sur ces technologies.
J’entends souvent dire que HTML5 va remplacer les SDK natifs (iPhone, Android, etc) mais je ne pense pas qu’une technologie soit sur le point de remporter la grande bataille des applications mobiles. La concurrence des SDKs natifs tire vers le haut les exigences sur le HTML5 qui a l’énorme avantage d’être un standard ouvert. Nous avons encore quelques années passionnantes à vivre.
L'an dernier, tu as participé à la WWDC. Qu'apporte ce type d'événement à un développeur iPhone ?
Cette conférence est l'occasion de rencontrer de nombreux autres développeurs et de se plonger pendant quelques jours dans un environnement extrêmement stimulant. Les conférences sont animées par des ingénieurs Apple qui présentent des bonnes pratiques de développement et les techniques utilisées par Apple pour développer et optimiser leurs applications. C'est sans aucun doute le meilleur moyen de progresser pour des développeurs confirmés ou experts. Je recommande chaudement cette conférence.
On commence à parler de l'OS4. Qu'aimerais-tu beaucoup y voir apparaitre ?
Je crois qu'il y a encore énormément de choses à faire avec le SDK actuel mais j'avoue que je commence à rêver de plus de possibilité d'interactions entre les applications et surtout d'un écran plus grand...
Mac4Ever remercie chaleureusement Thomas Sarlandie pour avoir pris le temps de répondre à nos questions.
Disponibilité et prix
Programmation iPhone OS 3est disponible dans de nombreuses boutiques (physiques et en ligne), pour un peu plus de 30 Euros.