Avant de commencer à développer, il est important d’identifier ses besoins afin de bien sélectionner les outils nécessaires pour développer vos applications.

Voici les 3 choses à connaitre absolument avant d’aller plus loin dans le développement d’applications mobiles.

  • iOS vs Android
  • Langage et framework
  • Développement Natif ou Cross-platform ?

iOS vs Android

Aujourd’hui il existe 2 principaux acteurs dans le domaine des systèmes d’exploitation pour smartphones :

  • iOS le système d’exploitation développé par Apple qui équipe les iPhones
  • Android le système d’exploitation développé par Google qui équipe quasiment l’ensemble des autres marques de téléphones (Samsung, Xiaomi, Motorola, Google Pixel, …).
Windows Mobile et Blackberry OS n'existent plus.
Autrefois il existait BlackBerry OS et Windows Mobile.

Un système d’exploitation est un logiciel qui sert d’interface entre les composants matériels de l’ordinateur et l’utilisateur. Chaque système informatique (ordinateur, smartphone, montre connectée, …) doit avoir un système d’exploitation pour exécuter d’autres programmes.

En 2021, la part de marché mondiale des téléphones équipés d’Android est de 70% tandis que celles des iPhones équipés d’iOS est de 29% (1% pour les autres systèmes d’exploitation – source gs.statcounter.com).

Néanmoins la part de marché n’est pas l’unique critère à prendre en compte lorsque l’on fait du développement d’applications mobiles. Il est également important de voir les revenus générés par chaque écosystème.

Et dans ce cadre, toujours en 2021, les revenus générés sur le PlayStore (magasin d’applications Android) sont de 47,9 milliards de dollars tandis que ceux générés sur l’AppStore (magasin d’applications iOS) sont de 85,1 milliards de dollars.

On voit donc que, malgré une part de marché bien plus faible, les revenus générés par les applications iOS sont supérieurs à ceux générés par les applications Android.

iPhone avec des billets.
Les possesseurs d’iPhone achètent plus facilement des applications.

Langage de programmation et framework

Nous allons commencer à rentrer un peu plus dans la  « technique » en abordant les notions de langage de programmation et de framework.

Un langage de programmation permet d’écrire des instructions (du code) qui sera exécuté sur un smartphone afin de réaliser diverses opérations (faire une recherche, passer une commande, afficher des photos, …). Chaque application que vous utilisez s’appuie sur un ou plusieurs langages de programmation propre à chaque système d’exploitation :

  • Swift pour iOS
  • Kotlin ou Java pour Android

A noter : Pour iOS historiquement il existe également le langage Objective C que Swift est venu remplacé.

Un framework est une bibliothèque de fonctionnalités que les développeurs peuvent utiliser selon leurs besoins. L’utilisation d’un framework permet de standardiser la construction et le déploiement des applications et de favoriser la réutilisabilité de fonctionnalités. En conséquence, cela offre un gain de temps et améliore la maintenabilité de l’application. Aujourd’hui, leur utilisation est devenue un standard dans le développement logiciel.

Les frameworks sont indispensables aujourd’hui.

Si vous débutez dans le développement, il est fortement recommandé de se concentrer sur le langage de programmation avant de commencer à utiliser des frameworks.

Développement Natif ou Cross-platform ?

Dans le paragraphe précédent, nous avons vu les langages de programmation associés aux systèmes d’exploitation iOS et Android. Ces derniers sont spécifiques à chaque plateforme et il n’est pas possible, par exemple, de développer une application avec le langage Swift sur Android. Dans ce contexte, on parle de développement « natif » car pris en charge nativement par leur système d’exploitation respectif.

Il existe un autre type de développement d’applications mobiles : le développement cross-platform (multiplateformes). Les principaux frameworks permettant de faire du développement cross-platform sont les suivants :

  • Flutter
  • React Native
  • Xamarin
  • IONIC

Chaque framework dispose de son propre langage de programmation (JavaScript pour React Native, Dart pour Flutter, …).

Ces frameworks permettent de développer, avec un seul code source, des applications pour iOS et Android. Vous me direz : « Mais alors, pourquoi s’embêter à faire 2 fois la même application dans 2 langages différents s’il est possible d’en avoir 2 pour le prix d’une avec du développement cross-platform ? »

Et je vous répondrai que vous avez raison. Néanmoins il y a quelques subtilités qui, pour certains, feront la différence.

Performance

Lorsque vous faite du développement cross-platform, celui-ci sera traduit ensuite dans le langage natif afin de pouvoir être « compris » par le système d’exploitation cible. Cette « traduction » a un coût rendant les applications cross-platform souvent moins fluides. Le développement natif sera plus adapté si le critère de performance est important.

App Store sur un iPad.

Par ailleurs, la performance d’une application rentre également en jeu dans le classement des applications sur l’AppStore et le PlayStore. Une application native aura donc plus de chances de ressortir en priorité dans les résultats de recherche.

Accès à l’ensemble des fonctionnalités

Chaque plateforme (iOS et Android) a ses spécificités. De ce fait, il n’est pas possible d’exploiter pleinement le potentiel de chacune en réalisant un code qui doit pouvoir s’appliquer à la fois à Android et à iOS. Si vous souhaitez utiliser au maximum les fonctionnalités de chaque système d’exploitation (appareil photo, réalité augmenté, intelligence artificielle, …), il sera nécessaire de passer par du développement natif.

Réalité augmentée avec ARKit sur iOS.
Réalité augmentée avec ARKit sur iOS.

Expérience utilisateur

L’expérience utilisateur est le « sentiment » perçu par les utilisateurs lorsqu’ils interagissent avec une application. La navigation doit être intuitive, fluide et les différentes actions doivent être facile d’accès. Lors du développement d’une application, il est important de prendre en compte les différences entre les plateformes iOS et Android.

Femme qui réaliser des maquettes d'application mobile.
L’expérience utilisateur est un facteur clé dans le succès d’une application.

Pour avoir la meilleure expérience utilisateur possible, il est nécessaire de développer selon les directives des deux systèmes d’exploitation. Ce point est complexe à adresser avec le développement cross-platform qui propose la même expérience quelque soit la plateforme utilisée.

Il existe de nombreuses routes vers le succès, mais une seule route sûre vers l’échec ; et c’est d’essayer de plaire à toute le monde.

Benjamin Franklin

Comment choisir ?

Aujourd’hui une entreprise ne peut pas faire l’impasse sur un des 2 marchés (iOS ou Android) au risque de se fermer à un nombre de clients potentiels important.

Homme qui doit choisir une direction.
Choisir en fonction de ses besoins.

Si l’application ne nécessite pas un usage avancé de chaque système d’exploitation, il sera plus intéressant de partir sur du développement cross-platform qui permettra de limiter les coûts de fabrication et de maintenance.

Pour les autres cas d’usage ou si les ressources de l’entreprise le permettent, le développement natif sera, la plupart du temps, le plus adapté.

A noter que pour développer sur iOS (en natif ou en cross-platform), il est indispensable de posséder un Mac. C’est une contrainte forte qui n’est pas présente pour développer sur Android. Néanmoins on trouve aujourd’hui des Mac Mini à des prix accessibles permettant de débuter le développement iOS très confortablement.

Si vous êtes intéressés par un article sur le choix du matériel pour développer, faites le moi savoir en commentaire !

Conclusion

Apprendre une nouvelle technologie (un langage de programmation, un framework) est un investissement c’est pourquoi il est important de bien réfléchir à ce que l’on souhaite faire avant de se lancer.

Aujourd’hui j’investis mon temps dans l’apprentissage du développement d’application iOS (langage Swift). J’ai fait ce choix pour plusieurs raisons :

  • J’apprécie la qualité des produits Apple et l’écosystème proposé.
  • Je veux pouvoir utiliser toutes les fonctionnalités offertes par la plateforme pour mes applications (je souhaite pouvoir exploiter le framework destiné à l’intelligence artificielle dans de futurs projets).
  • Le langage Swift est un langage moderne qui a de belles années devant lui.
  • Il me semble plus intéressant de développer une expertise dans un langage natif si je souhaite m’orienter vers du freelancing.
  • Je peux développer mes propres applications et les vendre sur l’AppStore qui aujourd’hui est le store le plus lucratif.

En bonus, j’apprécie le fait d’avoir la possibilité de pouvoir créer des applications pour d’autres périphérique Apple (Apple TV, Apple Watch, iPad) avec le même langage de programmation Swift.

Développer dans l'écosystème Apple avec un seul langage.
Un seul langage (Swift), plusieurs applications.

Et vous, quel type de développement vous conviendrait le plus par rapport à vos projets (natif /cross-platform) ?

Avez-vous plutôt envie de développer sur iOS, Android, les 2 ?

Dites le moi en commentaire !