Nos coups de coeur à la Frenchkit 2017

#Blog #Lecture #Evénement

La seconde édition de la FenchKit s’est tenue à Paris du 22 au 23 septembre et Beapp y était ! Nous avons assisté, durant ces deux jours, à de nombreuses conférences passionnantes, données par des intervenants internationaux qui avaient à coeur de partager leurs connaissances sur iOS et macOS.

21992725_1711558772218911_2653941446135316114_o

 

À l’origine de ces rencontres: les français de CocoaHeads, une communauté de fervents développeurs Apple, ainsi que Xebia. C’est au Pan Piper, un lieu événementiel au coeur du 11ème arrondissement de Paris, que nous avons partagé ces moments avec plus de 200 personnes. Sur le même modèle que les conférences de la WWDC, le programme était intense : 9 conférences par jour suivies d’une class-room en fin d’après-midi.

Voici les quelques unes dont nous voulions absolument vous parler !

CONFERENCES
Playground Driven Development – Brandon Williams

Brandon Williams a débuté ce cycle de conférences en nous rappelant à quel point Playground peut guider nos développements et nos tests.

En rendant chaque contrôleur autonome (c’est-à-dire qu’il ne nécessite pas d’autre contrôleur parent ou de module externe pour fonctionner), il est possible de l’exécuter seul dans Playground.

Dans son exemple, Brandon nous montre une vue de suivi de projet l’application Kickstarter. Au travers de playground, il manipule un jeu de données qui représente les participations au projet des backers et tout le contrôleur se recharge en live pour afficher les nouvelles statistiques !

L’intérêt aussi réside dans la possibilité de développer un contrôleur en dehors de tout le contexte et le cheminement menant à son affichage dans l’application. Ainsi, il peut travailler sur cette vue de suivi de projet sans avoir à lancer le simulateur ni parcourir tous les écrans de connexion, menu, liste des projets, etc.

Table and Collection Views Optimization – Janina Kutyn

Ensuite, Janina Kutyn, qui a travaillé dans l’équipe de développement d’Apple Music, nous explique comment optimiser les performances des listes (UITableView et UICollectionView) que nous utilisons si souvent.

D’abord par quelques pratiques simples, comme éviter de donner des dimensions décimales aux vues car un demi pixel déclenche de l’antialiasing ou encore éviter les transparences, en donnant la même couleur de fond aux différentes vues plutôt qu’une seule couleur de fond au conteneur puis de la transparence aux sous-vues.

Enfin, elle nous explique, statistiques à l’appui, que de limiter le nombre de sous-vues augmente significativement les performances : dessiner une cellule dans drawRect plutôt qu’en Xib avec autolayout !

Server(less) Swift – Chris Bailey

En tant que développeurs Swift, nos yeux se sont éclairés quand Chris Bailey nous a expliqué qu’il était d’ores et déjà possible d’être fullstack en Swift !

L’intérêt du serverless, c’est de développer des fonctions qui seront exécutées de façon indépendante et à la demande, au lieu d’un serveur consommant des ressources constamment.

Sans chercher à remplacer entièrement une implémentation classique d’un serveur, le serverless peut venir en complément et apporter réactivité, efficacité et économie.

Les frameworks existent déjà, mais des applications aussi : BluePic et WeatherGod étaient ses deux exemples.

https://fr.slideshare.net/cnbailey

You Deserve Nice Things – Soroush Khanlou

Soroush Khanlou nous a épatés ! Il rappelle que l’ObjectiveC et le Swift étaient loin d’être parfaitement lisibles et qu’il ne tenait qu’à nous de prendre de bonnes habitudes : utiliser les surcharges et les extensions à foison afin de rendre notre code plus lisible.

Son exemple le plus parlant reprenait la célèbre difficulté de “retourner” un tableau en ObjectiveC :
NSArray* reversedArray = [[startArray reverseObjectEnumerator] allObjects];

Ce qui, non-seulement, est peu lisible, mais crée surtout un tableau intermédiaire (et donc consomme des ressources) simplement pour récupérer son contenu et s’en débarrasser ensuite.

Une simple extension permet donc d’écrire :
NSArray* reversedArray = startArray.reversed;

http://oredev.org/2017/sessions/you-deserve-nice-things

Pushing Forward iOS Notifications – Adrien Humilière

Les nouvelles possibilités de notifications offertes par Apple permettent à une application de sortir du lot des nombreuses notifications reçues aujourd’hui par les utilisateurs.

Comment faire ? Isoler les informations importantes que l’on souhaite communiquer à l’utilisateur. Dans un de ses exemples : “Your train is about to leave from plateform 4”, ce qui importe, c’est le numéro de la plateforme, y a-t-il donc besoin de rédiger toute une phrase pour le dire à l’utilisateur ? Ne pourrait-on pas lui proposer un affichage plus élégant et limpide ?

Il nous a aussi rappelé que l’on pouvait mettre-à-jour une notification a posteriori, afin qu’elle reste pertinente plus longtemps, ou même la supprimer.

https://adhumi.fr/user-notifications

Core ML – Let’s Talk about Models – David Bonnet

Nous avons eu droit a une magnifique démonstration des nouveautés apportés par le framework CoreML.

La première démonstration nous a prouvé qu’avec un iPhone il était possible de reconnaitre tous les éléments d’une photo.
Chaque fois que David pointait son appareil photo sur un objet, nous avions le nom de l’objet qui apparaissait sur l’écran.

La seconde démonstration était une app de reconnaissance faciale, capable de donner l’âge, le sexe ainsi que les émotions présente sur le visage de la personne.

Je crois même avoir entendu quelques applaudissement pendant cette partie

Et pour finir, David a abordé la création de Model, de sorte a mieux coller aux features souhaité. Cela permet aussi de limiter la place prise par CoreML sur les téléphone ou l’application sera installé

Don’t Worry, Be Lazy – Olivier Halligon

Lors de la présentation d’Olivier Halligon, nous avons découvert un outil dont l’objectif est de faciliter la vie du développeur (nos préférés !).
La conférence portait sur 3 outils, SwiftGen, qui permet de transformer les assets en code et Sourcery qui est plus conçu pour générer du code à partir d’un code déjà effectué. Sourcery et SwiftGen sont donc complémentaires puisqu’ils ne s’utilise pas sur les mêmes types de données.
Le dernier outil présenté était Gyro. Gyro sert a générer des modèles de données pour Realm, ce qui permet de n’avoir qu’un seul modèle de données à maintenir indépendamment de la plateforme.

Scaling Open Source Communities – Felix Krause

Felix Krause explique comment gérer une communauté sur un projet openSource.

Il nous a expliqué qu’il y avait 4 étapes :

– la mise à disposition des sources sur Github
– le moment ou des développeur commencent a utilisé l’outil
– ensuite vient le moment ou le projet devient populaire
– pour finir le moment où il y a tellement d’utilisateur du projet qu’il est impossible pour une personne de répondre à toutes les questions posé par les nouveaux utilisateurs

La chose la plus importante dans la création d’une communauté est de ne pas négliger les utilisateurs. Felix a mit un point d’honneur à répondre a toutes les issues sur Github et lorsqu’il n’a pas pu y répondre par manque de temps, il a mis en place un bot, capable de détecter si une issue similaire à déjà été créée auparavant et potentiellement déjà résolue.
Ce qui permettait à l’utilisateur d’avoir une réponse rapide sans avoir besoin d’une action de la part de Félix

https://krausefx.com/blog/scaling-open-source-communities

CLASS ROOMS

Leveraging Swift and GLSL shaders to animate realtime music visualisations – Adrien Coye de Brunélis – Deezer

Adrien Coye de Brunélis, de chez Deezer, nous guides pendant deux heures dans nos premiers pas dans l’utilisation de GLSL (OpenGL Shading Language) et des shaders en réalisant… le logo de Deezer qui s’anime au rythme de la musique !

C’était passionnant et nous sommes repartis avec une jolie application à montrer autour de nous ! Voici le lien du projet sur GitHub : https://github.com/FrenchKit/DeezerClassroom

UI Automation with XCUITest – Dmitry Bespalov

XCUIT est est un outil intégré dans XCode qui permet de développer des scénarios de tests d’interface. L’objectif de cette class-room était donc de nous montrer comment développer ces tests. L’intérêt pour la suite serait de les automatiser dans une ferme de device afin d’apporter une meilleur couverture de tests à chaque livraison.

 

Robin Trigodet, Cédric Guinoiseau & Julien L’Hernault

Ces articles peuvent vous intéresser

Accessibilité et handicap : quels conseils pour vos applications mobiles ?

25 octobre 2018

Malheureusement, l’accessibilité des services Internet et mobiles aux personnes en situation de handicap...

Lire l'article

Quelles nouveautés pour iOS 12

17 septembre 2018

Alors que la Keynote de rentrée d’Apple avait lieu mercredi 13 septembre, nous avons fait un petit...

Lire l'article