lundi 26 janvier 2009

Développement IPhone

Le besoin
On s'apprête à faire nos débuts sur l'Iphone.
Il s'agira d'une application "connectée" qui interrogera un serveur web pour charger ses données (mises à jour quotidiennement).
Cette application sera une vrai application à installer sur le portable, elle sera distribuée via l'Apple Store.

L'Apple Store
L'Apple Store est LA plate-forme de distribution des applications Iphone.
Comme son nom l'indique, elle est gérée par Apple et seul les applications validées par Apple peuvent y être distribuées.
Le seul autre moyen d'installer sur son Iphone une application et de l'avoir préalablement Jailbreaké (cf. http://www.leblogdugeek.com/iphone/winpwn-25-tuto-pour-jailbreaker-son-iphone-simplement-1767).

Site optimisé pour l'Iphone
Il est relativement simple de faire un site web pour l'iphone (donc pour Safari Iphone)
Voici quelques ressources à ce sujet :

Application Iphone
Par contre ce sur quoi on va travailler est une application Iphone et non un site Web Iphone..

En théorie, le développement d'une application Iphone se fait en ObjectiveC à l'aide du SDK pour Iphone. cf http://developer.apple.com/iphone/
Cela nécessite de de connaitre le SDK, le langage ObjectiveC et de travailler sous MAC !
Il y a une alternative pour permettre de faire la même chose sous Windows ou Linux il s'agit de l'open tool chain : http://antirez.com/page/iphone-gcc-guide.html, http://code.google.com/p/winchain/wiki/HowToUse


Technologies ...du besoin de qqch de standard
Mais bon c'est bien beau tout ca mais :
  • L'iphone OS est un environnement totalement propriétaire et fermé
Par conséquent une application faite pour l'iphone ne pourra pas tourner sur un SmartPhone Androïd ou Symbian ou autre..
  • L'Iphone n'est pas seul sur ce marché
Aujourd'hui, l'iphone domine le marché, on ne parle plus que de lui, mais de nouveaux smartphones sortent tous les mois et la guerre va faire rage en 2009. Pas sur que la prédominance de Apple sur ce secteur va perdurer..
  • L'Iphone est jeune
L'Iphone est qqch de jeune qui va certainement bcp évoluer, donc faut pas croire que si on apprend à faire une appli Iphone aujourd'hui, ce savoir faire sera suffisant dans quelques années.
  • Nos compétences sont des compétences web
Est ce pertinent que de devoir acquérir des compétences Objective C alors que notre métier c'est le Web ?


Tout ca pour dire qu'il y a une alternative plus intéressante que de devoir apprendre le SDK / l'objective C / l'environnement technologie sous-jacent.
Sur les ordinateurs (PC et Mac..) la plupart des applications passes désormais en mode Web (sont accessibles via un navigateur et exploite les technologies Web qui ont le mérite d'être standardisées), il me parait aller à contre sens que d'avoir une fragmentation du marché du développements d'applications pour SmartPhone (1 techno par OS...).
Certains l'ont bien compris, le dernier venu sur la scène des smartsPhone, Palm, prend le contre pied de Apple. Tous les développements applicatifs sur cet OS se font dans des technologies Web!

Je me suis donc mis en recherche d'une solution pour faire de vraies applications Iphone via des technologies web. Cela permet :
  • D'être plus facilement portable sur d'autre OS (Android, Symbian, Palm, ...)
  • D'être plus viable à long terme car les technologies Web, bien qu'en permanent évolutions, sont moins enclines à changer du jour au lendemain.
  • De minimiser le nombre de chose à apprendre, moins d'investissements à réaliser.
  • D'être plus réactif et donc proposer un meilleur time to market à nos clients

PhoneGap
Et j'ai donc découvert PhoneGap
"PhoneGap is a development tool that allows web developers to take advantage of the core features in the iPhone, Android, and Blackberry SDK using JavaScript"
http://ajaxian.com/archives/phonegap-air-for-the-iphone

PhoneGap propose exactement ce qu'on en attend :
  • Une bonne portabilité entre les différents SmartPhone
  • La possibilité de faire des applis en technos Web

PhoneGap est une application IPhone en objectice C qui va encapsuler notre application.
Dans notre cas, ce qui nous intéresse c'est : http://phonegap.pbwiki.com/Building+A+Self-Contained+Application+(iPhone)
Phonegap va :
  • Gérer tout ce qui est "packaging" de l'appli (installation, icone pour lancer l'appli, archive de nos fichiers HTML, CSS, JS et PNG)
  • Ouvrir notre appli web dans un navigateur en mode fullscreen
  • Fournir à notre appli web une API javascript qui permet d'interagir avec l'Iphone (vibreur, géo-localisation, accéléromètre)

On aura donc plus qu'à :
  • Développer notre appli Web et s'assurer qu'elle fonctionne bien sur le Safari d'iphone
  • Packager notre appli web grace à PhoneGap. (y aura quand même quelques éléments à prendre en compte lors du dev de l'interface).

PhoneGap n'est pas la seule solution web

Mais alors que je rédige se billet je découvre également :
MotherApp is an application generator which enables you to create native iPhone client using HTML instead of Objective-C.

  • QuickConnect
QuickConnect is a powerful, modular, simple to use, application development library available for many languages and platforms. QuickConnect is currently available for: iPhone, Android & Mac JavaScript apps, Erlang/Yaws, and PHP.
Le blog
Le dépot sourceforge
Le groupe google
Le Wiki



Avant d'aller plus loin
Donc initialement on pensait partir avec PhoneGap, avant de démarrer il me semble préférable de bien évaluer les autres solutions possibles.
To be continued....

3 commentaires:

Anonyme a dit…

Une autre piste assez interesante pour développez des applications web sur iPhone est d'utilser Aptana studio avec le plugin iPhone: (Aptana studio iPhone plugin page). A titre d'iformation Aptana est une extension d'Eclipse studio dédiée au développement d'Applications Internet Riches (RIA) et dispose en plus du core (une dizaine de librairies javascript, le serveur javascript Jaxer...), des plugins pour développer pour iPhone, Adobe AIR et Ruby On Rails. Bonne exploration !!

Sylvain a dit…

C'est très intéressant et nous servira peut être à l'avenir.
Par contre il s'agit d'une solution pour développer des applications Web utilisables via un Iphone (et Safari) et pas pour des applications distribuables via l'app store.

Cf un topic du forum Aptana à ce sujet

Thierry a dit…

Je partage complètement cette analyse , pour avoir fait la même et pour me poser la même question sur le choix du framework (phonegap, quickconnect, ...).
Vous avez raison, la voie des technologies Web pour developper sur iPhone permet de conserver une ouverture réutilisabilité vers les autres plateformes.

Il faut par contre être vigilant sur les problèmes de performance que ce choix implique : affichage plus long de certaines pages, temps de réponse globalement plus longs.

Suis curieux de connaitre votre choix ...