Publicité
Publicité

Contenu connexe

Présentations pour vous(20)

Publicité
Publicité

Ce qu'il faut retenir de la FrenchKit iOS

  1. FrenchKit 2019 Le debrief’
  2. Sommaire 1. La conférence 2. Les talks 3. Classrooms 4. Swift tips 5. À retenir
  3. La conférence
  4. La conférence ➔ 7 et 8 octobre 2019 au Beffroi de Montrouge ➔ 4ème édition ➔ 350 participants ➔ Speakers internationaux (dont Olivier Halligon) ➔ 23 talks ➔ 12 classrooms ➔ 2 masterclasses
  5. Les talks
  6. Animations with SwiftUI ➔ Animations natives dans le framework SwiftUI. ➔ Vous pouvez facilement animer tout changement dans SwiftUI ➔ Utilisation de fonctions pour animer les changements (démo avec sinus). ➔ Utilisation facile : syntaxe Swift déclarative. ➔ Mécanisme très puissant. Chris Eidhof https://www.youtube.com/watch?v=RjCrZWeCPZU
  7. Animations with SwiftUI
  8. Animations with SwiftUI
  9. Understanding Combine ➔ Nouveau framework de programmation réactive ajouté dans SDK13 ➔ Très proche de RxSwift ➔ Permet le binding lors de l'utilisation de l’architecture MVVM ➔ Une variable devient émettrice avec l’annotation @Published Daniel Seinberg https://www.youtube.com/watch?v=vDzIeFzGAuU
  10. Understanding Combine Daniel Seinberg https://www.youtube.com/watch?v=vDzIeFzGAuU
  11. SwiftUI & Redux ➔ Architecture dérivée de Flux (Facebook) ➔ Alternative à MVC, MVVM ou VIPER ➔ Data Flow unidirectionnel ➔ Une seule source de vérité : State ➔ Toute la logique métier en un seul endroit : Reducers ➔ State partagé par toute l’application, pouvant être modifié uniquement par des reducers suite à des actions reçues. ➔ Le State notifie ensuite toute l’application ➔ Les vues n’intègrent aucune logique métier Thomas Ricouard https://www.slideshare.net/ThomasRicouard/frenchkit-swiftui-data-flow-with-redux
  12. SwiftUI & Redux Thomas Ricouard https://www.slideshare.net/ThomasRicouard/frenchkit-swiftui-data-flow-with-redux
  13. Thomas Ricouard https://www.slideshare.net/ThomasRicouard/frenchkit-swiftui-data-flow-with-redux
  14. Testing & Declarative UIs ➔ SwiftUI : comment tester le code métier, les navigations et détecter les régressions ? ➔ Ne pas insérer de logique métier dans les vues ⚠ ➔ La navigation est également de la logique métier ➔ Utilisation de SnapshotTesting pour automatiser les tests d’interface ➔ Les debug previews SwiftUI servent de référence pour les snapshots Nataliya Patsovska https://www.slideshare.net/NataliyaPatsovska/french-kit2019
  15. Testing & Declarative UIs Nataliya Patsovska https://www.slideshare.net/NataliyaPatsovska/french-kit2019
  16. Showcase Driven Development ➔ Méthodologie développée chez Heetch basée sur l’intégration continue ➔ Pour chaque élément graphique, une Pull Request ➔ Permet d’explorer tous les éléments graphiques séparément (Showcase.Type) ➔ Permet l’injection de données pour tester les ViewControllers indépendamment ➔ Dependency Injection -> Long Live Data Injection ➔ Configurateurs de vue Jérôme Alves https://speakerdeck.com/jegnux/showcase-driven-development
  17. Showcase Driven Development Jérôme Alves https://speakerdeck.com/jegnux/showcase-driven-development
  18. Showcase Driven Development Jérôme Alves https://speakerdeck.com/jegnux/showcase-driven-development
  19. Building Voice-First Apps ➔ Nécessité de contrôler nos applications avec la voix (en voiture, en cuisine) ➔ Tour d’horizon des solutions existantes dans le SDK iOS et des solutions tierces ➔ Nul besoin d’implémenter toutes les fonctionnalités de l’application (actions mains libres, recherches) ➔ Privilégier les solutions natives sur mobile Elaine Dias Batista https://speakerdeck.com/elainedb/building-voice-first-ios-apps
  20. Building Voice-First Apps Elaine Dias Batista https://speakerdeck.com/elainedb/building-voice-first-ios-apps
  21. Note encryption : 10 lines for encryption, 1000 lines for key management ➔ Chiffrement de bout en bout des données sans compromettre l’UX de l’app ➔ Mettre en place plusieurs couches de sécurité ➔ Privilégier solutions de chiffrement haut niveau ➔ Se fier au stockage chiffré en local (Keychain) mais pas sur le cloud (iCloud Keychain) ➔ « failure of single security control is a question of time. Failure of security system is a question of design » Anastasiia Voitova https://speakerdeck.com/vixentael/10-lines-of-encryption-1500-lines-of-key-management
  22. Note encryption : 10 lines for encryption, 1000 lines for key management Anastasiia Voitova https://speakerdeck.com/vixentael/10-lines-of-encryption-1500-lines-of-key-management
  23. An introduction to Property-Based Testing ➔ Tests unitaires classiques en “Given, when, Then” efficaces pour détecter les régressions ➔ Difficulté de détecter de nouveaux cas d’erreur ➔ Utilisation de SwiftCheck pour tester en utilisant des données aléatoires Vincent Pradeilles https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
  24. An introduction to Property-Based Testing Vincent Pradeilles https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
  25. An introduction to Property-Based Testing Vincent Pradeilles https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-an-introduction-to-property-based-testing.pdf
  26. Shipping a Catalyst app : The Good, the Bad and the Ugly ➔ Créateur de PSPDFKit et de l’app PDFViewerApp. ➔ S’est demandé s’il suffisait de cocher la case “Mac” de Xcode 11 pour porter une app iPhone/iPad sur Mac. ➔ S’est frotté à pas mal de problèmes pour accéder à des fonctions réservées à AppKit : menus natifs, recherche, popovers, curseur. Peter Steinberger https://www.youtube.com/watch?v=Xo3zGlyxXcI
  27. Shipping a Catalyst app : The Good, the Bad and the Ugly Peter Steinberger https://www.youtube.com/watch?v=Xo3zGlyxXcI
  28. Shipping a Catalyst app : The Good, the Bad and the Ugly Peter Steinberger https://www.youtube.com/watch?v=Xo3zGlyxXcI
  29. And that’s a wrap ! ➔ Présentation des property wrappers introduits avec Swift 5 ➔ Pleinement utilisé par SwiftUI ➔ Permet d’implémenter la wrappedValue d’une propriété via l’utilisation de tags Olivier Halligon https://speakerdeck.com/alisoftware/and-thats-a-wrap
  30. And that’s a wrap ! Olivier Halligon https://speakerdeck.com/alisoftware/and-thats-a-wrap
  31. And that’s a wrap ! Olivier Halligon https://speakerdeck.com/alisoftware/and-thats-a-wrap
  32. Classrooms
  33. Exploring Combine ➔ Présentation des principes de la programmation réactive ➔ Présentation de Combine, des émetteurs/souscripteurs, des combinaisons, des promesses. ➔ Exercices permettant de valider un formulaire à partir de données d’identification (login+mdp) ➔ Solutions fournies 👀 https://github.com/AvdLee/CombineWorkshop
  34. SwiftUI ➔ Projet démo en SwiftUI fourni ➔ Liste de bugs présent dans l'application à résoudre ➔ Actions simples comme un dismiss assez complexes à appréhender ➔ Utilisation assez intuitive de Combine https://github.com/Dimillian/FrenchKitSwiftUIClassroom
  35. Swift tips #1 Vincent Pradeilles https://github.com/vincent-pradeilles/swift-tips
  36. Encapsulating [weak self] closure = { [ weak self ] in guard let self = self else { return } // Do something with self } https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-1.pdf
  37. Encapsulating [weak self] protocols Weakifiable: class { } extension NSObject: Weakifiable { } extension Weakifiable { func weakify(_ code: @escaping (Self) -> Void ) -> () -> Void { return { [ weak self ] in guard let self = self else { return } code(self) } } } https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-1.pdf
  38. Encapsulating [weak self] closure = { [ weak self ] in guard let strongSelf = self else { return } // Do something with self } closure = weakify { strongSelf in // Do something with strongSelf 🎉 } https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-1.pdf
  39. Swift tips #2 Vincent Pradeilles https://github.com/vincent-pradeilles/swift-tips
  40. Parlons d’@autoclosure https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-2.pdf
  41. Parlons d’@autoclosure
  42. Parlons d’@autoclosure @autoclosure vous permet donc d’encapsuler en tant qu’argument une closure, de sorte qu'elle ne soit évalué qu'en cas de besoin. https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-2.pdf
  43. Swift tips #3 Vincent Pradeilles https://github.com/vincent-pradeilles/swift-tips
  44. Optionnals 💪 https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-3.pdf
  45. Optionnals 💪 RTFM 🤓
  46. Optionnals 💪 https://github.com/vincent-pradeilles/slides/blob/master/frenchkit-2019-swift-pills-3.pdf
  47. Optionnals 💪
  48. À retenir
  49. À retenir ➔ SwiftUI n’est pas encore fin prêt pour la mise en production mais a de l’avenir dans le développement sur les environnements Apple. ➔ Catalyst ne se résume pas en une case à cocher. ➔ Combine is the new RxSwift ! ➔ La sécurité sur mobile n’est pas une option. ➔ Tests unitaires sur iOS : ce n’est pas une nouveauté ! ➔ Les Classrooms et Masterclass ➔ Conférence très enrichissante.
  50. One more thing… Vincent Pradeilles
  51. ios_memes Vincent Pradeilles
  52. ios_memes Vincent Pradeilles Les ingénieurs chez Apple lors de la sortie d’iOS 13
  53. ios_memes Vincent Pradeilles Les développeurs lors de la migration Swift 2 => Swift 3
  54. ios_memes Vincent Pradeilles Quand le client me demande où sont les tests unitaires de l’app iOS
  55. ios_memes Vincent Pradeilles
  56. Vincent Pradeilles
  57. Merci
Publicité