Il y a 8 ans -
Temps de lecture 7 minutes
What was new at WWDC 2015?
Nous avions quitté la WWDC 2014 secoués par les annonces Apple et, en particulier, celle de Swift.
La conférence des développeurs iOS et Mac OS, cette année, ne pouvait pas être plus surprenante que la précédente, n’est-ce pas ?
Nous avons pris notre avion pour San Francisco sans trop d’attentes : les dernières rumeurs prévoyaient très peu de nouveautés et des releases mineures. Cependant, le 8 juin à 5 heures, nous rejoignions les rangs des aficionados : les longues attentes sont souvent l’occasion pour échanger avec des développeurs provenant de toutes les parties du globe et pour découvrir, peut-être, quelques nouvelles tendances de l’écosystème Apple.
Près de 8 heures plus tard, notre patience avait été récompensée : Swift 2 (et open source !), des améliorations importantes au testing sous Xcode, les APIs pour Spotlight et deep linking, bitcode, watchOS 2, apportent des fonctionnalités qui garantiront de très belles évolutions aux applications iOS.
En réalité, c’est toute la semaine qui fut intéressante, avec des conférences très réussies, telles que celles décrites dans une des nos dernières revues de presse.
Nous souhaitons ici vous décrire les nouveautés qui ont attiré notre attention et, en particulier :
- Recherche et deep linking
- Siri
- Optimisation des applications
- Multitasking sur iPad
- Bitcode
- WatchOS 2
- App Transport Security
- Swift
1. Recherche et deep linking
Concernant la recherche, une nouvelle page d’accès à la fonctionnalité a été introduite. Mais la vraie révolution est tout autre : il est maintenant possible d’ajouter et de personnaliser les résultats de la recherche opérée via la barre de l’écran d’accueil de l’iPhone (Springboard) en exploitant de nouvelles APIs. Par exemple, les API CoreSpotlight permettent d’enrichir la liste affichée en ajoutant des éléments qui proviennent d’une application.
Une autre introduction majeure est le deep linking, qui permet, grâce à un simple fichier de configuration déposé côté serveur, de rediriger des URLs https vers des pages spécifiques de notre application.
2. Siri
Siri a été amélioré pour être plus « proactif » et renvoyer des informations cohérentes selon le contexte à partir duquel il a été appelé. En revanche, il n’y a toujours pas d’API pour personnaliser l’assistant vocal Apple.
3. Optimisation des applications
Une des plus grandes nouveautés pour les applications concerne leur téléchargement. En effet, iOS 9 peut désormais télécharger depuis l’AppStore seulement les composants qui intéressent le terminal de l’utilisateur. Cette technique, appelée App Slicing, permet aux devices de ne télécharger que les éléments effectivement utilisables. Par exemple, dans le cas d’une application universelle, un iPad téléchargera uniquement les images dont il a besoin, ignorant les ressources utilisées par iPhone.
4. Multitasking pour iPad
Une autre amélioration majeure est le nouveau système de multitasking disponible sur iPad. Nous pouvons maintenant afficher deux applications en même temps et partager des données entre elles à l’aide de simples gestures de glisser/déposer. Afin de profiter pleinement de ce mode de visualisation, il suffit d’avoir pris en charge les size classes, introduites avec iOS 8.
Les nouvelles APIs, dont le document de pre-release est disponible ici, prennent en charge le passage des données entre deux applications affichées en mode Split View.
5. Bitcode
Une des plus grandes innovations est celle du processus de distribution de builds. En effet, à partir de Xcode 7, tout build soumis à Apple sera envoyé non plus en format exécutable mais sous forme de bitcode. C’est une représentation binaire intermédiaire (LLVM-IR) du code compilé par clang ou swiftc. L’intégration en fichier exécutable sera réalisée par les plateformes Apple après la soumission. Cela permettra de changer “à chaud” la LLVM associée à l’application.
Ce procédé sera celui par défaut dans Xcode même s’il sera encore possible de le désactiver pour les builds iOS et Mac OS. Cependant, tout build pour la Apple Watch devra obligatoirement être distribué sous forme de bitcode.
6. WatchOS 2
WatchOS 2 consiste en une vraie révolution pour tous ceux qui avaient commencé à développer des applications WatchOS. La plus grande nouveauté porte sur l’exécution native des applications WatchKit. En effet, jusqu’au mois dernier, toute application WatchOS était exécutée par le téléphone et les donnes transférées via Bluetooth à la montre. À partir de la nouvelle version du SDK, les applications tourneront finalement à bord de l’Apple Watch. Ceci permettra notamment aux applications WatchKit de s’exécuter beaucoup plus rapidement, d’accéder aux capteurs installés sur la montre et d’utiliser les nouvelles APIs, telles que celles pour accéder à la molette ou pour réaliser des animations fluides. Enfin, les applications WatchOS 2 pourront accéder directement au réseau internet sans passer par téléphone en raison de la puce WiFi installée sur la montre (et qui aujourd’hui pouvait être utilisée seulement par les applications first-party Apple).
7. App Transport Security
Last but not least, Apple a introduit un ensemble de mesures de sécurité réseau appelé « App Transport Security ».
Il a pour objectif de réduire les failles de sécurité concernant le transport des données via les protocoles basés sur HTTP.
Pour ce faire, le protocole HTTP sera bloqué par défaut. Il faudra, à partir de iOS 9, que toute application construite avec le nouveau SDK déclare en whitelist tous les domaines qui n’utilisent pas HTTPS TLS 1.2.
8. Autolayout simplifié
iOS 9 introduit de nouvelles fonctionnalités à Autolayout qui promettent de grandement simplifier son utilisation :
- UIStackView, nouvelle vue qui permet d’empiler les vues dans une direction (horizontal ou vertical). Cela devrait diminuer sensiblement le nombre de contraintes à créer pour placer ses composants. Apple conseille d’ailleurs d’utiliser massivement des UIStackView plutôt que des UIView.
- NSLayoutAnchor pour simplifier la création de NSLayoutConstraint. Elle risque très fortement de rendre obsolètes des pods tels que Masonry.
- UILayoutGuide pour créer des contraintes entre vues, sans créer de vue. Le but est de ne plus devoir créer des dummy views pour les contraintes les plus compliquées, comme espacer toutes les vues d’une distance égale.
9. Swift
La plus grande révélation de la WWDC a bien évidemment été (Apple Music) la mise à disposition de Swift sous licence Open Source : le code source du compilateur et le standard Library Swift seront disponibles publiquement et seront compilables dès le début, même sur Linux. Bien évidemment ceci ne sera pas le cas des autres librairies très utilisées dans le monde iOS, telles que UIKit et, surtout, Foundation.
Swift 2 apporte des changement très intéressants, qui sont décrits dans plusieurs billets de blog.
Les modifications les plus intéressantes concernent les points suivants :
- Gestion des erreurs : Swift 2 ajoute un système de gestion des erreurs avec une syntaxe basée sur try/catch. La logique Finally peut être aussi implémenté, à l’aide du mot clé defer.
- Une nouvelle API pour manipuler les OptionSet
- Guard let : afin de mettre en place, par exemple, une logique de « Exit Early » il est maintenant possible d’utiliser guard, qui permet de prendre en charge facilement le cas, par exemple, d’un optionnel vide.
- Protocol extension : ceci est peut être l’introduction la plus importante en Swift. Grâce aux Protocol extension il est possible d’ajouter un comportement par défaut à un protocole et, aussi, de spécifier sous quelles conditions l’implémentation est valable.
Ci-dessous, deux exemples de code qui concernent la gestion des erreurs et les protocols extensions.
[java]do {
let encrypted = try encryptString("secret information!", withPassword: "12345")
print(encrypted)
} catch {
print("Something went wrong!")
}[/java]
[java]protocol Business {
var name: String { get }
var canSellFood: Bool { get }
}
extension Business where Self: Restaurant {
var canSellFood: Bool { return true }
}[/java]
Conclusion
Vous l’aurez compris, cinq jours après, notre point de vue concernant la WWDC a complètement changé : si d’un côté les nouveautés n’ont pas été aussi sensationnelles que l’année passée, d’un autre côté l’ensemble des améliorations annoncées, notamment Swift 2, ATS, APIs de recherche et deep linking, vont immédiatement apporter énormément de valeur ajoutée à notre code et à nos applications.
Commentaire