iOS et Swift : Retours croisés sur ces indissociables du développement mobile

Nos équipes évoluent sur différents environnements techniques en développement Mobile, Web, Infra/ Cloud et Data.
Nous entrons aujourd’hui dans l’univers du développement mobile iOS.

CBTW
L’Actualité Tech — Blog CBTW
12 min readAug 26, 2021

--

Meryl, Christian et Maxime, développeuse et développeurs mobile, partagent leur vision et leur expérience de l’écosystème iOS et du langage Swift.

Écosystème iOS — Photo by @moisamihai092 on Unsplash

iOS est le système d’exploitation mobile mis au point par Apple, exclusivement pour ses appareils types iPhone ou iPad. Actuellement à la version 14, iOS 15 sera disponible d’ici à la fin de l’année.
Avec ses 1 milliard d’iPhone actifs dans le monde, Apple détient 23,4% de parts de marché dans ce domaine.

Swift est un langage de programmation compilé lancé en 2014 par Apple pour développer des applications sur ses différents systèmes d’exploitation.
Devenu open source, il est aujourd’hui utilisé par plus de 2 millions de développeurs.

Que signifient iOS et Swift pour toi ?

  • Meryl : Développer sur iOS, c’est réaliser une application pour Iphone, Ipad, et même Macbook, en incluant des valeurs d’accessibilité et de sécurité des données.
    Quant à Swift c’est un langage qui se rapproche d’autres langages comme Python et JavaScript. Il est simplifié sur le nombre de ses variables et fonctions avec un fonctionnement assez implicite. Pour moi il s’agit d’un langage facile à lire et à utiliser, plutôt intuitif.
  • Maxime : Pour ma part iOS représente la fiabilité et la performance. Le système d’exploitation iOS est en effet géré par Apple pour être utilisé sur ses propres appareils. Ce qui permet de limiter les bugs liés à la prise en compte de différents devices. À l’inverse de Google, qui n’est pas propriétaire de l’ensemble des smartphones qui exploitent Android.
  • Christian : iOS c’est tout simplement l’OS des téléphones et des tablettes Apple. Et ce qui le définit le plus à l’origine, c’est son côté intuitif. N’importe qui est censé pouvoir prendre un iPhone et s’en servir sans avoir à lire une notice. À l’origine vouloir mettre les smartphones à la portée de tous grâce à iOS était d’ailleurs une révolution.
    Et si je devais résumer Swift, c’est le langage qui permet de développer les applications pour tous les environnements Apple, que ce soit iOS notamment, mais également MacOS ou même Apple TV. C’est un langage porté par une forte communauté, dont font partie de grandes entreprises comme Google ou IBM. Il y a d’ailleurs une version de Swift compatible avec Windows qui est sortie récemment.

Comment as-tu découvert le développement mobile iOS ?

  • Meryl : Durant ma formation de 3 ans en développement mobile. La première année j’ai appris l’Objective C car Swift venait tout juste de sortir, donc nous n’étions pas encore formés dessus. Mais à partir de la deuxième année nous sommes passés sur Swift.
    Et pour anecdote, en commençant avec l’Objective C je ne pensais pas travailler sur iOS plus tard, car je n’appréciais pas le langage. Et lorsque j’ai découvert Swift, je me suis dit finalement pourquoi pas. C’est vraiment ce langage qui m’a permis d’apprécier le développement mobile et sur iOS.
  • Maxime : J’étais en école d’ingé à Epitech dans une filière généraliste et j’ai eu envie de me spécialiser. J’utilisais déjà jQuery pour adapter des pages Web sur mobile et ça m’intéressait. J’ai alors voulu aller vers du natif pour avoir plus de facilité à gérer le cycle de vie des écrans, les composants, … Et je me suis tourné vers iOS car j’avais un iPhone et un Mac, donc c’est ce qu’il y avait de plus pratique.
    J’ai démarré avec Objective C, mais à la sortie de Swift j’ai voulu tester ce nouveau langage et je l’ai trouvé beaucoup plus compréhensible.
    Aujourd’hui je suis développeur Android et iOS, car j’ai eu envie d’ajouter une corde à mon arc. Cette double compétence me permet de mieux connaître ce qu’il est possible de faire. De plus Kotlin ressemble à Swift, donc la transition reste assez simple.
  • Christian : J’étais étudiant MSP (Microsoft Student Partner). Il s’agissait d’un programme de sponsorisation d’étudiants par Microsoft. Dans ce cadre j’étais en contact direct avec des équipes Microsoft et je bénéficiais de certains avantages (équipement en téléphone, tests en avant-première, invitations au siège). À cette occasion, j’ai découvert le développement mobile via le développement sur Windows Phone. Et grâce à cet accompagnement, je me suis lancé dans le développement mobile.
    Quelques années plus tard, je travaillais sur la partie back d’un projet mobile d’application tablette. À l’époque je maîtrisais les technos Microsoft C# et Asp.Net. Mais suite à plusieurs départs côté Front, je me suis proposé en m’appuyant sur l’expérience de Windows Phone. C’est ainsi que je suis devenu développeur iOS.
    À l’époque c’était avec de l’Objective C, car c’était encore le début de Swift, qui n’avait pas encore une très bonne réputation même s’il s’agissait déjà d’une révolution. Puis c’est chez Linkvalue que j’ai commencé à faire du Swift. J’ai pu démarrer ma montée en compétences en réalisant des projets de R&D sur 2 à 3 mois.

Quels sont tes outils de prédilection sur iOS ?

  • Meryl : J’ai tendance à éviter d’utiliser des librairies, car j’ai beaucoup travaillé sur des modules à faire soi-même et je ne veux pas créer de conflit avec ceux des librairies existantes. Mais sinon je privilégie tout ce qui est fourni directement par Apple.
  • Maxime : J’utilise pas mal de librairies pour gagner de la rapidité dans la production de code et éviter de réinventer la roue. De préférence des librairies natives qui sont souvent mieux gérées que les autres et adaptées aux différentes versions.
    - CoreData pour gérer la mémoire locale,
    - AlamoFire pour la gestion de requêtes Web,
    - Kingfisher pour charger des images et contenus vidéo.
    Il y a aussi le framework SDK qui a été éprouvé avec le temps avec un grand nombre de personnes qui ont travaillé avec.
  • Christian : J’utilise assez régulièrement les mêmes librairies, qui sont assez populaires. À titre personnel, il n’y en a pas forcément une que j’affectionne par-dessus tout, mais il y en a des récurrentes que j’utilise sur presque tous les projets sur lesquels je travaille :
    - Realm pour gérer les bases de données locales à l’application,
    - SwiftMessages pour afficher des bulles de notifications,
    - Lottie qui permet de simplifier l’affichage d’animations dans l’application. Le designer peut directement exporter un fichier d’animation fait dans After Effects et il suffit ensuite d’importer le fichier pour afficher l’animation dans l’application. Ce qui permet de limiter les lignes de code pour faire une animation
    - Hero permet de gérer de manière automatique des animations de transition entre les écrans. Par exemple sur la plupart des applications le switch d’un écran à l’autre se fait soit par l’écran qui apparaît par le bas ou par la droite. Si on veut avoir d’autres animations, comme un effet de zoom quand on clique sur une image puis un repositionnement sur un autre écran c’est assez compliqué à coder. Hero permet de simplifier ce process.
    - Rx Swift est un framework pour faire de la programmation réactive sur Swift. Il y a d’ailleurs un framework Rx qui existe dans de nombreux langages, comme le langage Rx JS pour JavaScript.
    Cela fait beaucoup de bruit, car il y a les amateurs de programmation réactive qui trouvent ça génial, et d’autres qui trouvent que cela génère trop de dépendance au framework et ajoute des compétences supplémentaires à maîtriser.
    Ce débat risque toutefois de disparaître avec la sortie du framework de programmation réactive Combine. Il s’agit d’un framework natif mis au point par Apple en Swift. Il y aura donc peut-être moins de réticence à l’utiliser.

Dans quels cas recommanderais-tu de développer en Swift ?

  • Meryl : Dans le cas de développement d’applications mobiles ou même maintenant pour tout ce qui est WatchOS, CardPlay, Apple TV, … Tout ce qui est dans l’univers d’Apple.
    Après, certaines librairies ne sont pas encore très bien portées, comme pour ce qui est analyse d’images et technologie d’OCR (Optical Character Recognition). Je dirai que c’est donc plutôt conseillé de le faire en Objective C.
  • Maxime : Swift est plus facilement compréhensible que l’Objective C qui est un langage vieillissant avec une syntaxe particulière. De plus Swift est orienté objet, ce que les développeurs actuels connaissent bien.
    Le framework Xamarin permet aussi de faire une application native. Dans ce cas la partie graphique sera gérée par Xcode en Objective C, et en Java.
    Mais du coup on obtient le même design sur Android et iOS alors que les composants diffèrent. Toutefois Xamarin a une logique commune et permet une gestion unique. Flutter s’inspire également de ce principe.
    Mais au final le natif reste bien supérieur en termes d’efficacité et de productivité si l’on maîtrise chaque plateforme.
  • Christian : La bonne question à se poser est dans quel cas est-il pertinent de développer en natif par rapport à de l’hybride.
    C’est le cas lorsqu’on souhaite développer une fonction poussée et spécifique à l’OS. Par exemple pour faire de la géolocalisation, solliciter l’utilisation du Bluetooth ou même faire un design qui est très spécifique. En effet sur ces points les guidelines d’Android et d’iOS ne sont pas les mêmes.
    C’est aussi le cas pour réaliser une application qui va être plutôt gourmande en ressources et dont on aura besoin qu’elle soit le plus optimisée possible. Ce sera alors plus intéressant de faire du natif pour éviter d’avoir un framework intermédiaire qui consomme des ressources inutilement.

Quel a été l’impact du développement sur iOS et en Swift dans ta vision du développement ?

  • Meryl : J’ai commencé à m’intéresser au développement mobile avec les langages Objective C et Java. Cependant aucun des deux ne m’intéressaient particulièrement et je ne pensais pas forcément faire carrière dans le mobile. Et quand j’ai découvert Swift, j’ai changé d’idée. Le langage paraissait plus simple au premier abord, et plus intéressant.
    Et de plus j’ai toujours été sur un environnement Apple, avec un Mac. Donc je me voyais mal travailler sur un PC (ou sur Linux à la rigueur).
    Donc le fait de travailler sur du Swift et iOS, pour lesquels des appareils Apple sont nécessaires me convenait bien.
  • Maxime : Je n’ai pas de formation spécifique en développement mobile, puisque j’ai appris par moi-même. À l’époque j’étais intéressé par la création d’interfaces avec des objets connectés, des serveurs, … Et je me suis tourné vers ce qui avait le vent en poupe. Mais je n’ai jamais été focalisé uniquement sur iOS, je préfère garder une vue globale.
  • Christian : On évolue au fil du temps, quelle que soit la techno qu’on utilise. Après est-ce que ces évolutions sont liées à une montée en compétences ou à une technologie, c’est plus difficile à dire.
    Mais en tout cas j’ai pris certaines nouvelles habitudes avec les possibilités du langage Swift. Notamment sur la gestion de la nullité qui est très sécurisée en Swift. En écrivant notre code, cela permet de toujours avoir conscience de la possibilité ou l’impossibilité d’avoir une valeur nulle.
    J’ai également pris l’habitude de faire de la programmation fonctionnelle. Ça se fait beaucoup dans la communauté Swift et on a tous les outils pour le faire dans le langage Swift, notamment avec la fonction .map.
    Et le système de gestion automatisé de la mémoire est aussi intéressant. On n’a pas à se préoccuper de l’allocation ou de la désallocation de l’espace mémoire pris par les variables. C’est gérer de manière totalement invisible, ce qui en fait une préoccupation en moins.

Pourquoi devrait-on apprendre à développer sur iOS et en Swift ?

  • Meryl : L’Objective C a moins d’avenir, car il n’y a plus vraiment de nouveaux projets qui sont créés avec ce langage. C’est une technologie qui peut encore être demandée pour de la maintenance de projets existants, mais 90% de ce qui est créé aujourd’hui dans la sphère Apple est en Swift.
    De plus Swift est un langage assez facile à comprendre, et autre point pratique : il est très proche de Kotlin. Ce sont deux langages avec des ressemblances, donc il y a une facilité à faire la passerelle entre les deux.
    Même si leur utilisation correspond chacune à une façon de faire distincte.
  • Maxime : Je recommande avant tout de choisir par préférence. Et de se tourner vers le développement sur iOS et vers Swift si on est passionné par l’univers Apple. Même si c’est un environnement plus restrictif, il offre une robustesse du système et de la rapidité.
    De plus Swift peut sembler récent, mais c’est déjà un langage éprouvé, qui ressemble à d’autres langages objet actuels. Il permet donc de s’y retrouver assez facilement.
  • Christian : Alors je ne le conseillerai évidemment pas pour quelqu’un qui veut faire du développement Android.
    Pour du développement iOS, je recommanderai Swift car je pense qu’il n’y a pas beaucoup d’autres options natives. L’Objective C est une technologie vieillissante et plus réellement maintenue par Apple. Toutes les nouvelles fonctionnalités qui apparaissent ces dernières années apparaissent en Swift.
    Pour du développement hybride, React Native était beaucoup utilisé, mais aujourd’hui je recommanderai Flutter. Ce framework lancé par Google semble surpasser les autres technologies d’application hybride. On en entend énormément parler actuellement, il s’agit vraiment de la dernière tendance.
    Mais au-delà du langage pratiqué, l’important est de maîtriser les règles de clean code et de prendre l’habitude de mettre en place de bonnes pratiques. Il est aussi primordial de faire les bons choix d’architecture pour avoir une application facile à maintenir sur le long terme et la plus stable possible. C’est le plus important dans la philosophie du développeur.

Quel est le ‘truc en plus’ d’iOS et de Swift ?

  • Meryl : Swift est un langage considéré comme étant open source, car on peut participer au développement du langage en tant que tel. Mais il reste très bien encadré car il reste la propriété d’Apple.
    De plus tout est pensé pour que Swift soit le plus facile d’utilisation. Il y a énormément de fonctionnalités qui sont mises à disposition pour faciliter l’usage et qui restent faciles à comprendre pour savoir dans quel cas les utiliser. Il a aussi une bonne lisibilité.
  • Maxime : iOS est un système d’exploitation propriétaire, donc qui permet de mieux gérer ses applications et de mieux encadrer les bugs. C’est un système robuste qui inspire la confiance pour développer. Alors que sur Android, certains paramètres sont gérés au bon vouloir de chaque fabricant, ce qui peut entraîner des différences comme une gestion de la mémoire différente selon les devices par exemple.
    Quant à Swift c’est un langage récent, maintenu et ouvert à tous développeurs en open source, donc pour lequel on peut proposer de nouvelles fonctionnalités. De plus il est assez similaire à d’autres langages de développement web orientés objet.
  • Christian : Il y a une grosse communauté d’utilisateurs Swift, avec tous les développeurs iOS. De ce fait on retrouve notamment des Meetups, comme Cocoaheads, et il y a aussi un Slack ‘Swift-Baguette’ qui réunit tous les développeurs Swift qui le souhaitent. Ce qui permet d’échanger et de poser des questions aux autres développeurs de la communauté. C’est agréable de sentir que l’on n’est pas tout seul, peu importe le problème rencontré.

Quelles sont les limites d‘iOS et de Swift ?

  • Meryl : Les limites sur lesquelles je tombe sont plus des limites propres à Apple. La société verrouille pas mal l’utilisation de certains composants du téléphone, par rapport à des questions de sécurité notamment.
    Par exemple, j’ai déjà rencontré des difficultés sur un projet faisant appel au Bluetooth du téléphone, auquel on n’a pas directement accès.
  • Maxime : C’est parfois trop restrictif. La protection des utilisateurs rend certaines choses plus compliquées à gérer pour les développeurs. Par exemple niveau RGPD, si l’application ne respecte pas les guidelines d’Apple, elle peut être refusée. Il faut également gérer les certificats de sécurité et les fichiers de registre pour republier de nouvelles versions. L’upload sur l’App Store prend généralement 2 à 3 jours, ce qui rend la validation des applications assez longue même avec des outils comme Fastlane.
  • Christian : Pendant un moment on parlait pas mal de Swift Server qui permet de faire du back en Swift, mais je ne sais pas trop si ça s’est popularisé ou si ça a montré ses limites. Mais pour moi aujourd’hui ça reste une limite car il y a très peu de monde qui écrit son back en Swift, c’est plutôt un langage utilisé pour faire du client et des applications. À l’époque en tout cas ce n’était pas très répandu.
    On peut aussi dire que Swift est un langage lourd à compiler, et que dès que l’application grossit on perd vite du temps à la compilation. Je pense que c’est aussi vrai pour d’autres langages, mais typiquement l’Objective C était beaucoup plus rapide. Au quotidien on s’en rend vite compte.

Nos experts évoluent également sur d’autres environnements techniques. Vous pouvez découvrir leur retour d’expérience dans ces articles :

Nous publions régulièrement des articles sur des sujets de développement produit web et mobile, data et analytics, sécurité, cloud, hyperautomatisation et digital workplace.
Suivez-nous pour être notifié des prochains articles et réaliser votre veille professionnelle.

Retrouvez aussi nos publications et notre actualité via notre newsletter, ainsi que nos différents réseaux sociaux : LinkedIn, Twitter, Youtube, Twitch et Instagram

Vous souhaitez en savoir plus ? Consultez notre site web et nos offres d’emploi.

--

--

CBTW
L’Actualité Tech — Blog CBTW

Nos experts partagent leur vision et leur veille en développement web et mobile, data et analytics, sécurité, cloud, hyperautomation et digital workplace.