Swift Heroes: Networking…non solo su API
17/05/2023
Swift Heroes 2023 ha offerto insight su Swift, SwiftUI e UX. Scopri le ultime tendenze nello sviluppo di app per dispositivi Apple.

La conferenza annuale Swift Heroes si è tenuta all’inizio del mese a Torino, offrendo due giorni di talk focalizzati su Swift, SwiftUI, UX e le sfide tecniche nel mondo dello sviluppo di app per dispositivi Apple.
È stata anche un’occasione per fare networking, conoscere colleghi e parlare a tu per tu con relatori italiani e stranieri per chiedere dritte e confrontarsi su dubbi relativi a questo vastissimo mondo.
Personalmente, ho avuto anche la possibilità di rivedere e scambiare chiacchiere con colleghi di progetti precedenti, con molti di loro vedendosi anche per la prima volta vis a vis. Questo ha creato un’atmosfera di scambio e arricchimento reciproco!
Tra i numerosi speech tenuti durante la conferenza (oltre 25!), ho selezionato quelli che ho ritenuto più significativi, con l’obiettivo di farvi immergere nell’entusiasmante clima dell’evento.
Indice
- SSL, ovvero come evitare i “guardoni”
- Murray: il tool multipiattaforma presentato agli Swift Heroes
- TCA: il paradigma architetturale presentato da Shai Mishali
- In conclusione: all’anno prossimo!
SSL, ovvero come evitare i “guardoni”
Pietro Messineo, Senior iOS Developer presso BlueThrone, ha tenuto uno speech, durante questo Swift Heroes 2023, in cui ha illustrato come controlli di SSL pinning (Secure Socket Layer) nel flusso di chiamate.
Lo SSL pinning è una tecnica utilizzata per prevenire attacchi MITM (Man In The Middle) volti a rubare o manipolare i dati di risposta tra il server e il dispositivo. L’attaccante, o “l’uomo di mezzo”, analizzando il traffico dati, può intercettare la risposta del server contenente i dati della nostra richiesta e inviare dati errati al client.

SSL pinning
L’integrazione di un certificato o una chiave pubblica lato client nel flusso di chiamate può impedire efficacemente questo tipo di attacchi. A tal proposito, il relatore ha consigliato l’utilizzo di TrustKit, una libreria che semplifica l’integrazione dello SSL pinning nell’applicazione.
La configurazione con TrustKit non è complessa: è sufficiente configurare il file Info.plist dell’app con le chiavi corrispondenti (che contiene impostazioni per deeplinks, nome dell’app e altri parametri del progetto) e… Voilà! In alternativa, le chiavi possono essere scritte tramite codice.
La prova del nove si può fare usando Proxyman, ne abbiamo già parlato in questo articolo, e nel caso di SSL pinning settato correttamente, avremo una schermata vuota sui dati delle chiamate effettuate. Provare per credere!
Tra l’altro Pietro ci ha confidato che una nota piattaforma di streaming non ha ancora integrato tutto ciò…senza dirci ovviamente quale fosse.
Murray: il tool multipiattaforma presentato agli Swift Heroes
Stefano Mondino, Platform Leader di Synesthesia, ha presentato nell’Auditorium il famoso strumento chiamato Murray durante l’evento Swift Heroes di quest’anno. Ma cosa è esattamente Murray?
Il nome del tool è ispirato al teschio che appare nel noto videogioco Monkey Island, ed è un framework multipiattaforma per la creazione di progetti (iOS e Android in particolare). Murray permette di creare un vero e proprio scheletro di progetto multipiattaforma con la creazione di template con pochi comandi da terminale e con uno scaffolding veramente pulito e organizzato.
Con Murray, è possibile definire procedure che rappresentano blocchi per la creazione di nuove features. A sua volta, la procedure, è formata da gruppi di file. Ad esempio, è possibile combinare un ViewController con un ViewModel per formare un “Bone”.
Tool da utilizzare in in tandem con Murray è Visual Studio Code, perché sfruttando la combinazione di editor e terminale, per scrivere e eseguire comandi in modo fluido, permette di non impazzire evitando di saltare continuamente tra le diverse finestre.
Dal download del tool ai primi passi nell’utilizzo, Murray spicca per semplicità e un assoluto rapporto fra effort e risultato: con pochi comandi possiamo tirar su un progetto runnabile!
Questo è particolarmente vantaggioso per progetti di grandi dimensioni, che coinvolgono più librerie e framework, poiché Murray facilita l’organizzazione e l’integrazione dei componenti, evitando complicazioni che potrebbero rallentare lo sviluppo software nei momenti critici.
Ah, ovviamente, è compresa anche la creazione delle classi di test…
TCA: il paradigma architetturale presentato da Shai Mishali
The Composable Architecture (TCA) è una libreria che consente di sviluppare applicazioni in modo consistente e comprensibile, seguendo il paradigma architetturale omonimo.
Shai Mishali, Senior iOS Tech Lead presso monday.com, ha vinto il premio della critica come miglior intervento dell’evento, ha presentato la libreria con l’esempio di una classica app: un Pomodoro Timer, per evidenziare la peculiarità del TCA.
The Composable Architecture offre la possibilità di suddividere l’app in “contenitori” con complessità decrescente e responsabilità sempre più focalizzate, consentendo di gestire la logica dell’app e scrivere codice di qualità. Questi piccoli componenti possono essere quindi riuniti per creare le funzionalità desiderate. La frammentazione consente di controllare gli “stati” possibili e propagarli nelle schermate di navigazione successive, assicurando un comportamento coerente dell’interfaccia utente (UI).
Ci sono alcuni componenti che si ripetono per gestire diverse parti dell’interfaccia utente e della logica:
- State: un tipo che descrive i dati per gestire la logica della funzionalità e l’interfaccia utente di conseguenza.
- Action: un tipo che rappresenta tutte le azioni possibili mnella tua nuova feature (azioni, notifiche, eventi).
- Reducer : una funzione che descrive come deve evolvere l’app dal suo stato corrente al successivo (gestisce anche le chiamate di rete).
- Store: il “contenitore ” menzionato in precedenza; ricevendo tutte le Actions, gestisce il Reducer che apporterà modifiche allo stato , consentendo al developer di gestire gli aggiornamenti dell’interfaccia utente.

The Composable Architecture
Naturalmente, tutto ciò fa anche riferimento all’aspetto del testing (che è stato affrontato in tre interventi durante l’evento), in cui è possibile scrivere test di unità tradizionali e test di integrazione.
Non vedo l’ora di poterla provare su un progetto personale per scoprire tutte le potenzialità di questa architettura!
In conclusione: all’anno prossimo!
Volendo fare un bilancio dell’evento a cui ho partecipato da spettatore-reporter, l’ho trovato interessante e, pur trattando di argomenti a volte nuovi, la possibilità di scegliere topic diversi in due sale conferenze differenti (secondo i propri interessi) ha creato un senso di leggerezza e le ore sono passate piacevolmente.
Come ho scritto anche nell’introduzione, la possibilità di interagire con gli speaker e ritrovarli in mezzo a noi come “persone normali” durante i vari coffee break ha permesso a tanti sviluppatori come me di conoscerli anche come persone oltre che come professionisti.
Non resta altro da dire se non: all’anno prossimo!