Pragma 2017: il racconto dell’iOS conference, dai trend al focus sull’esperienza utente

Pragma 2017: il racconto dell’iOS conference, dai trend al focus sull’esperienza utente

Pubblicato da IQUII il 17/10/2017 in Thinking

Il 12 e 13 Ottobre il nostro team iOS è stato a Verona per partecipare per il secondo anno consecutivo alla Pragma Conference: un momento di confronto e di formazione durante il quale approfondire nuovi temi e lasciarsi ispirare da nuove opportunità nell’ambito dello sviluppo su piattaforme iOS e macOS.

L’edizione 2016, della quale vi abbiamo raccontato le novità più interessanti, ha coinvolto più di 300 sviluppatori da tutto il mondo, 20 speaker con 20 talk e 5 workshop. Lo scorso anno abbiamo portato alcune delle novità e dei temi affrontati nei talk all’interno di nostri progetti quali Terranova, Original Marines e altri di cui vi racconteremo nei prossimi mesi.

Anche quest’anno la partecipazione è stata elevata, e la conferenza si è sviluppata su due filoni principali sui quali si sono focalizzati i talk in programma: da un lato interventi tecnici fortemente verticali, dall’altro il tema dell’esperienza utente.

Da questi due ambiti apparentemente sconnessi emerge un discorso più ampio sulla rilevanza assunta in questi anni dall’esperienza.

Nei talk più tecnici sono stati analizzati molti dei problemi ricorrenti nello sviluppo di soluzioni software, e sono stati proposti e individuati nuovi approcci di risoluzione che potrebbero diventare in poco tempo standard di fatto.

L’esperienza utente, focus che ha caratterizzato gli altri talk è stato invece raccontata attraverso alcuni dei temi trend degli ultimi mesi. In quest’ambito si situano ad esempio l’intervento di John Sundell sul suo framework per lo sviluppo di app e giochi, e quello di Sebastiaan de With sull’approccio di design che gli ha permesso di progettare e realizzare una delle camera app più note.

Anche se molto diversi tra loro e spesso focalizzati su soluzioni e nuovi progetti, i contributi presentati hanno infatti raccontato i modi in cui il passaggio ad un focus sull’esperienza abbia trasformato anche il campo dello sviluppo.

Per chi non avesse potuto partecipare, vi raccontiamo di cosa si è parlato nei talk della quinta edizione della Pragma Conference:

#Pragma2017: Getting started with ARKit di Glenna Buford

La Realtà Aumentata è una delle tecnologie che hanno assunto maggior rilievo nell’ultimo anno per le potenzialità che è in grado di generare in molti settori come sport, retail, travel e ovviamente gaming, diventando il driver principale di un mercato VR/AR che si stima raggiungerà i 108 miliardi di dollari nel 2021.

ARKit, il framework di casa Apple lanciato con iOS 11, permette di portare il concetto di realtà aumentata, finora relegato a dispositivi ad hoc, nella vita di tutti i giorni.

Con ARKit, iPhone e iPad possono analizzare la scena presentata dalla vista della fotocamera. ARKit può rilevare piani orizzontali nella stanza, tracciare e posizionare oggetti su punti più piccoli, stimare la quantità totale di luce disponibile in una scena per applicare la giusta quantità di illuminazione agli oggetti virtuali. Mediante l’utilizzo di SceneKit è possibile inoltre far sì che gli oggetti inseriti in realtà aumentata abbiano le stesse caratteristiche fisiche di oggetti reali come ad esempio la gravità o le collisioni.

Un’altra feature interessante è la Face Recognition, portata alle luci della ribalta da iPhone X con il suo FaceID, che consente attraverso API di tracciare gli elementi caratteristici di un viso (occhi, labbra, sopracciglia ecc).

#Pragma2017: Game development for app developers di John Sundell

L’anno scorso l’ex Lead iOS Developer di Spotify aveva dedicato il suo talk alla Pragma Conference al tema della backend-driven UI per iOS.

In questa edizione Sundell ha invece presentato il suo nuovo progetto Image Engine, un framework per la creazione di motori grafici 2D veloci ed altamente performanti che riduce le complessità e semplifica il debugging di alcuni elementi che lo sviluppo gaming porta, grazie all’utilizzo di librerie note agli sviluppatori di applicazioni utilities (UIKit e AppKit).

Il progetto, reso open-source e disponibile agli sviluppatori già al termine della conferenza con un perfetto annuncio in stile Apple, pur essendo ancora in fase di sviluppo, dimostra già delle performance interessanti sfruttando appieno le nuove tecnologie messe a disposizione dall’azienda di Cupertino nelle nuove versioni dei propri OS (es. Metal).

Pragma Conference 2017

Sundell ha infatti messo a confronti i differenti strati dai quali è composta un’applicazione con animazioni ed un gioco per illustrare come la sua libreria permetta di usare i differenti strati di un’app per sviluppare giochi.

#Pragma2017: Designing Halide: a tactile iOS app di Sebastiaan de With

Pragma Conference 2017

Sebastiaan de With, ex designer di Apple, per il suo contributo ha scelto di raccontare come la sua carriera e il susseguirsi di fallimenti e successi lo hanno portato al suo recente successo con Halide, app fotocamera che ha ritagliato il suo spazio in un settore (quello della fotografia mobile) ormai saturo.

Ciò che ne ha determinato il suo successo è stata l’attenta analisi delle abitudini del target di utenti dell’app, che gli ha permesso di ricreare la stessa esperienza di una macchina fotografica fisica, in quello che potremmo definire un approccio people-driven.

De With ha raccontato alla platea di come questo approccio sia maturato durante la sua esperienza in Apple e il lavoro di rebranding delle applicazioni di Rubrica e Find My Friends, nelle quali ha introdotto lo scheumorfismo, caratteristica che contraddistingueva le versioni di iOS fino all’arrivo della settima release.

#Pragma2017: Error Handling Made Easy di Eleni Papanikolopoulou e Kostas Kremizas

Error handling is the art of fail gracefully.

L’intervento dedicato all’error handling si è focalizzato sull’importanza di una corretta gestione degli errori nel codice attraverso l’analisi di un’applicazione client-server.

La definizione delle modalità attraverso cui gestire gli errori è fondamentale per evitare non solo problemi di inconsistenza e stabilità nel software, ma anche che gli utenti, vivendo un’esperienza negativa, perdano fiducia nel prodotto.

È  quindi fondamentale una corretta gestione degli errori al fine di garantire da un lato la stabilità del software e dell’altro fornire messaggi comprensibili all’utilizzatore finale. Nel caso di errori di rete questo si traduce in una gestione a basso livello, tipicamente già nel layer di networking.

#Pragma2017: Metaprogramming in Swift di Krzysztof Zablocki

Metaprogramming si riferisce ai diversi modi con cui un programma ha conoscenza e può manipolare se stesso. In linguaggi molto dinamici come Ruby questa tecnologia è utilizzata per creare nuovi flussi/comportamenti durante l’esecuzione del codice.

Linguaggi meno dinamici sono più limitati offrendo soltanto l’opportunità di analizzare il proprio codice (reflection) e operare delle scelte in base a questa conoscenza.

Tutte queste tecniche possono permettere ad un programma di implementare da sé porzioni di codice spesso ripetitive la cui stesura, altrimenti demandata al programmatore, non aggiungerebbe valore al software e anzi potrebbe essere fonte di bug.

Swift, non offrendo le caratteristiche tipiche di un linguaggio dinamico, ha uno spazio di manovra molto limitato.

La soluzione proposta da Krzysztof Zablocki nel suo talk è stata quella di realizzare un semplice tool che, attraverso un piccolo linguaggio di templating, fosse in grado di replicare alcune funzioni offerte dal metaprogramming, consentendo:

  • la scrittura di una quantità minore di codice ripetitivo (boilerplate code) attraverso il DRY principle;
  • la riduzione dei rischi dovuti a errore umano;
  • la restituzione di feedback immediati al programmatore attraverso l’esecuzione live dei template;
  • la disponibilità di un linguaggio di templating, che consente la creazione di regole in grado di generare automaticamente del codice (eliminando il codice boilerplate spesso necessario per implementare azioni sostanzialmente ripetitive).

#Pragma2017: Sharing Code between iOS and macOS di Matthias Tretter

Il contributo di Matthias Tretter ha preso le mosse dal suo progetto Mindnode, un’app per la produttività disponibile sia per Mac che per iOS, per analizzare le best practice nello sviluppo di un progetto cross-platform.

Soprattutto per le applicazioni di produttività come Mindnode avere una presenza cross-platform è necessario e consigliabile, sia a livello tecnico sia a livello commerciale.

Una singola codebase permette infatti di:

  • avere un codice maggiormente testato, in quanto utilizzato su più sistemi (aumentando le possibilità di scovare errori e di conseguenza di avere un codice tendenzialmente più stabile);
  • avere una singola sorgente di verità invece di molteplici implementazioni della stessa logica.

Spostando il focus dall’analisi verticale sul codice cross-platform allo sviluppo in generale, Tretter ha poi definito alcuni dei punti chiave sui quali ogni sviluppatore dovrebbe basarsi, e cioè:

  • Be Pragmatic: evitare cioè quanto più possibile di essere overkiling, affrontando temi quali la generalizzazione e ottimizzazione del codice già durante le prime fasi di sviluppo nella speranza di coprire tutti i casi possibili;
  • Creare, quando possibile, uno strato di disaccoppiamento che isoli la logica tipica di ogni piattaforma;
  • Don’t take too many responsibilities: ogni classe dovrebbe avere una ed una sola responsabilità, interamente incapsulata al suo interno (uno dei principi di SOLID);
  • Nel caso in cui avere una singola codebase non sia un’opzione praticabile (ad esempio nella stesura della UI per due piattaforme) la soluzione proposta è quella dello shimming: incapsulare all’interno del codice le differenti logiche necessarie utilizzando il conditional compiling per eseguire l’una o l’altra a seconda della piattaforma.

Iquii Pragma Conference 2017

#Pragma2017: You Deserve Nice Things di Soroush Khanlou

Soroush Khanlou ha approfondito durante la conferenza la sua modalità di estensione delle classi di sistema in Swift, una delle caratteristiche principali del linguaggio di programmazione creato da Apple, che permette di avere codice più leggibile, più potente e più espressivo, facendo sparire le classi di utilità.

Il suo approccio permette di identificare quali logiche possono essere espresse come estensioni delle classi di appartenenza e quali invece devono essere trattate come tipi separati.

Il vantaggio dell’uso delle estensioni è quello di evitare il riuso di codice in più parti dentro un’applicazione. Lo svantaggio è che l’uso esagerato di estensioni può rendere difficile il debugging o la lettura da parte di terzi.

#Pragma2017: How to get started contributing to open source di Felix Krause

Felix Krause, sviluppatore di Fastlane in Google, nel suo intervento ha approfondito i vantaggi di un codice sorgente liberamente consultabile per lo sviluppo software e per le aziende. In particolare, il suo intervento si è focalizzato su vantaggi che un approccio open può fornire, quali:

  • accrescersi non solo attraverso il supporto dell’azienda che li ha creati, ma trovando nuovi contributi da parte di altre aziende o community di sviluppatori;
  • generare maggiore trust sia nell’azienda che li implementa sia negli utenti che le utilizzano grazie alla possibilità di osservarne e verificarne il funzionamento;
  • ampliare la crescita di conoscenza nei team attraverso il confronto con molteplici approcci e metodologie.

#Pragma2017: Gems of GameplayKit di Tobias Due Munk

Tobias Due Munk durante il suo intervento ha mostrato il parallelismo e i punti di convergenza che esistono tra lo sviluppo di videogames e applicazioni mobile attraverso l’analisi di alcuni tool creati specificatamente per lo sviluppo di videogiochi.

Nel suo excursus ha esplorato alcuni aspetti del framework GameplayKit applicati a problemi comuni quali la generazione naturale di sequenze casuali di elementi, la ricerca all’interno di un grafo o il classico problema del path finding, cioè la ricerca del cammino tra due punti, cardine fondamentale in applicazioni come i navigatori.

#Pragma2017: Declarative Architecture di Chris Eidhof

Chris Eidhof ha affrontato l’interessante tema del declarative programming approfondendo l’uso della metodologia Redux nello sviluppo in Swift. Redux consente infatti di definire lo stato di un sistema attraverso l’uso di un singolo oggetto che diventa la sorgente di verità per l’applicazione sia lato UI sia di business logic.

Usando questa metodologia è possibile semplificare e rendere prevedibili dinamiche di flusso spesso complesse, che possono essere fonte di bug.

#Pragma2017: Focus sull’esperienza utente

Le app viste come semplici utilities in grado di semplificarci la vita, che nel 2010 hanno visto un’esplosione – ricordate il there is an app for that? –hanno lasciato il posto ad esperienze sempre più immersive.

L’obiettivo è mettere l’utente al centro dell’esperienza ricorrendo ad interfacce ed interazioni più naturali, collegando il mondo digitale con la realtà di tutti i giorni attraverso l’uso di AR e VR e realizzando tecnologie in grado di rendere trasparente e privo di frizioni un mondo ormai intimamente interconnesso e complesso.

Anche nell’ultima edizione del Pragma è emersa chiaramente questa trasformazione in corso, che impatta non solo su chi progetta e realizza tecnologia, ma anche su come, da utenti, la viviamo ogni giorno.

 

Pragma Conference 2017

 

Il team iOS Daniele MarguttiFederico Meloni e Matteo Nati

& Eleonora Scialanca, la nostra Digital Strategist

METTI IN ATTO LA TUA TRASFORMAZIONE DIGITALE

Inviaci un messaggio e ti ricontatteremo presto!



b95ab49676911f8236da252a962e5170?s=64&d=mm&r=g

IQUII

IQUII Srl è la Digital Consulting Company che guida le imprese operanti nei settori sport, finance, retail, nel percorso di trasformazione digitale offrendo una vasta gamma di servizi e soluzioni strategiche, tecnologiche e creative.


iquii_icon_footer.png IQUII S.r.l.Part of Be Group

Sede Legale: Viale dell'Esperanto 71 – 00144 Roma

P.iva 11289201003 - Cap.Soc. 10.000 €
Reg. Imprese di Roma REA n.1293642

Email. info@iquii.com

Sedi Operative
Roma - Milano - Bolzano

  • facebook.svg
  • twitter.svg
  • instagram.svg
  • linkedin.svg