Article
Développement mobile : hybride ou natif ?
La formule build once, run everywhere, qui signifie en substance « développer une fois et déployer sur de multiples plateformes » est le rêve de tout chef de projet digital. Un rêve aujourd’hui possible, grâce aux environnements de développement d’applications mobiles cross-platforms. Quels sont ces outils ? Quelles sont les limites du développement cross-platform ? C’est ce que l’on vous propose de découvrir dans ce billet.
Souvent, quand elles envisagent de créer un service pour mobile, les entreprises commencent par privilégier une plateforme, IOS ou Android. Elle développe le produit avec le langage de la plateforme, puis une fois le produit validé par le marché, elle décide de le porter sur une deuxième plateforme… Résultat, elles se retrouvent très vite à devoir maintenir en parallèle plusieurs applications, chacune développée avec un langage spécifique, et donc requérant des compétences spécialisées et des équipes dédiées. La conséquence, c’est une multiplication des ressources à mobiliser (autant que de plateformes) qui se traduit par des coûts plus élevés et une maintenabilité moindre…
La philosophie cross-platform est de procéder à l’inverse : de chercher à s’affranchir au maximum des plateformes et de leur langage et de privilégier un développement utilisant le langage le plus universel qui soit, à savoir, celui du web. Des environnements de développement tels que React Native, Native Script et Ionic permettent cela. Ils génèrent des applications dites hybrides, qui se comportent comme des applications mobiles natives. Elles sont, en particulier, capables de tirer parti des fonctions propres aux terminaux mobiles comme la caméra, le GPS, le Bluetooth, etc.
Les compétences en Javascript restent les plus répandues
Premier avantage de cette approche : le même code est utilisé pour de multiples plateformes cibles ce qui permet de rationaliser les développements. Deuxième avantage : des compétences en technologie web (Javascript, HTML…) suffisent. Or, ce sont les plus répandues aujourd’hui, et donc les moins onéreuses.
Une fois cela dit, les environnements de développement cross-platform abordent la gestion des plateformes cibles chacun à leur manière. Reprenons les trois outils cités plus haut : s’ils prennent tous les trois en compte les fonctions matérielles du mobile grâce à des plugins, ils se distinguent par leur manière de gérer son interface.
Native Script et React Native disposent d’une couche intermédiaire (un pont natif) qui va générer les écrans aux formats iOS et/ou Android. Les applications seront donc natives pour ces deux plateformes et les composants UI apparaîtront avec le rendu de la plateforme native. Cela est très intéressant si on veut garder le style de la plateforme cible sans avoir à apporter une surcharge de style spécifique à la plateforme. De plus, l’architecture se prête mieux à conception de fonctionnalités natives et vous trouverez une multitude de composants notamment pour React Native.
Ionic se distingue par le fait que l’application produite reste une véritable application web (accessible via un navigateur et en saisissant une URL). Mais elle est encapsulée dans un module appelé WKWebView qui simule le comportement d’une application mobile Cette approche fait d’Ionic un environnement de développement universel vraiment indépendant des plateformes. Non seulement, il couvre l’ensemble des plateformes actuelles – iOS, Android, Windows Phone et Harmony OS (Huawei) - et à venir du marché, mais il est aussi cross-canal, c’est-à-dire en mesure de diffuser le même code sur le web, sur le desktop et sur le mobile.
Mieux : il permet de développer des Progressive Web Application, c’est-à-dire des applications qui, au fur et à mesure de leur utilisation, vont s’installer sur l’écran d’accueil du mobile et, tels des caméléons, adopter progressivement toutes les caractéristiques d’une application native : émettre des notifications, masquer la barre de navigation, etc. Avec comme grand avantage celui d’éviter de passer sous les fourches caudines des stores…
Outre leur gestion des plateformes cibles, les trois environnements se différencient aussi par l’éventail d’outils de développement Javascript auxquels ils peuvent faire appel. React Native se cantonne aux bibliothèques React Native Script. Ionic propose un panel plus large, avec React, Angular, Vue.JS et des bibliothèques propriétaires.
Le cross-platform a ses limites
Malgré tout leur intérêt, ces environnements cross-platform ne sont pas forcément la panacée. Dans certaines situations, l’emploi d’une solution mono-plateforme reste à privilégier : si l’on veut se limiter à un seule plateforme cible, ce qui est souvent le cas pour des développements d’applications internes ; ou encore pour des applications exigeantes en termes de performances graphique et/ou ergonomique. Javascript n’est pas C++. Il demeure un langage de script interprété, qui ne sait ni gérer les traitements en parallèle ni utiliser une carte graphique, et dont les capacités à tirer parti de l’ergonomie des interfaces mobiles restent limitées à des usages bureautiques.
Un fois votre choix d’outils arrêté, prenez le temps d’explorer les possibilités de la solution pour en tirer le maximum, notamment en termes de bibliothèques de composants qui se révèlent souvent sous-exploitées. Et n’hésitez pas à faire intervenir un designer d’interface, en particulier si vous travaillez sur des applications destinées au web et au mobile. D’un canal à l’autre, les ergonomies changent. Et le mode responsive n’est pas la réponse ultime à toutes les situations...