← Tornar al blog

D'un tros de fusta a l'App Store

Fa uns vint anys, el meu company de pis a la universitat i jo vam agafar un tros de fusta d'un contenidor, hi vam dibuixar una quadrícula amb una regla, vam comprar unes pedres de vidre en una botiga d'artesania per uns pocs euros i vam començar a jugar al Go. No tenia ni idea del que feia. En realitat, encara no en tinc gaire. Però quelcom d'aquell joc em va atrapar de seguida: la manera en què alguna cosa aparentment tan simple podia ser tan increïblement profunda. Una quadrícula de 19×19. Pedres negres i blanques. Regles que s'aprenen en cinc minuts. I tanmateix, en aquella època, els ordinadors més potents del món no podien vèncer un jugador humà fort. Aquell fet em fascinava.

Una obsessió primerenca

Aquella fascinació va arribar tan endins que el meu projecte de final de carrera a la Kingston University va ser de visió per computador: vaig programar a mà un algorisme per llegir l'estat d'un tauler de Go a partir d'una fotografia, assolint una precisió superior al 87%. Per als inicis dels anys 2000, abans de l'explosió del deep learning, estava discretament orgullós d'aquell resultat.

Al voltant del mateix moment vaig visitar el Japó durant dues setmanes, específicament per experimentar la cultura del Go de primera mà i jugar contra jugadors locals. Vaig perdre totes i cadascuna de les partides. Una em va quedar gravada: un noi jove, probablement de nivell dan, molt tímid, amb les ungles sorprenentment llargues, acompanyat del seu pare. Em van aniquilar completament abans que m'adonés del que havia passat — vaig trigar una estona a adonar-me que havia de rendir-me.

Tots els salons de Go que vaig visitar estaven tan carregats de fum de cigarreta que gairebé era impossible acabar una partida sense sortir a respirar aire fresc — i això que jo mateix soc fumador. Els jugadors eren gairebé exclusivament persones grans. El Go semblava un passatemps per a la gent gran, cosa que em va sorprendre donat el renom del Japó en tecnologia i innovació. Ningú no semblava connectar el Go amb la informàtica. Encara no, almenys.

El llarg parèntesi

La vida va seguir. Vaig treballar com a desenvolupador Java, vaig passar un any a Accenture durant la universitat (durant el qual em va caure tot el cabell per l'estrès) i finalment em vaig trobar en atur durant una llarga temporada a causa de problemes de salut. Les meves habilitats en Java van tornar-se cada cop més irrellevants mentre el sector avançava sense mi. Ho vaig intentar recuperar, però la distància s'havia fet massa gran — i vaig descobrir que els salaris en aquella part del sector, de fet, havien baixat. No valia la pena.

Tot i tot, vaig continuar jugant al Go. No seriosament — he estat anant al Club de Go d'Exeter de manera intermitent durant uns quinze anys, i soc un jugador mediocre en el millor dels casos. Però el joc mai no em va deixar anar.

Tot va fer clic alhora

Llavors, en un periode sorprenentment breu, van passar diverses coses alhora.

Va arribar el confinament per la COVID. Estava desesperant sense res a fer, però tenia la sort de comptar amb tres dispositius Apple — regals de la família i de la meva parella. Vaig veure el documental d'AlphaGo i em va electritzar. Allò que m'havia fascinat a la universitat — la impossibilitat que una màquina dominés el Go — s'havia resolt. I la revolució de la IA que va engegar just estava començant. Va arribar ChatGPT. Després Claude. Després Apple va anunciar el Vision Pro.

Vaig começar a jugar amb KataGo i vaig adonar-me que no tenia una interfície adequada per a l'App Store®. Vaig mirar les aplicacions de Go disponibles per a iPhone® i iPad® i eren... correctes. Funcionals. Però cap d'elles tenia cap funció d'accessibilitat. Ni una sola aplicació de Go de tota l'App Store declarava compatibilitat amb VoiceOver, Voice Control, Dynamic Type ni cap dels estàndards d'accessibilitat d'Apple. Cap.

Per a un joc que persones cegues han jugat durant dècades — amb taulers tàctils de línies en relleu al Japó, a la Federació Francesa de Go, a Corea — l'absència total de qualsevol versió digitalment accessible semblava un buit que no hauria d'existir. Els jugadors de Go cecs havien quedat completament exclosos de l'ecosistema d'aplicacions.

Tot va conspirar alhora i tot va encaixar. M'ensenyaria a mi mateix el desenvolupament per a iOS des de zero, fent servir eines d'IA per accelerar l'aprenentatge, i construiria una aplicació de Go que qualsevol pogués jugar — tant si veu com si no.

Partir de zero

L'1 de juliol de 2024 vaig crear un projecte Xcode en blanc anomenat "RenderedGoApp" — no un nom gaire inspirat. No sabia res de Swift, SwiftUI, RealityKit ni de cap de les tecnologies de desenvolupament d'Apple. Em vaig ensenyar-ho tot a través de la documentació oficial d'Apple i les sessions gratuïtes del WWDC, sense formació reglada, bootcamps ni esdeveniments de desenvolupadors.

Dues setmanes més tard, el 17 de juliol, el vaig reanomenar "Goban3D". Un goban és el nom tradicional japonès del gruixut tauler de fusta amb potes sobre el qual es juga al Go. El nom em va semblar encertat — complia amb els estàndards de nomenclatura d'Apple i deia exactament el que era l'aplicació.

Vaig rebre suport per dislèxia des de l'escola primària fins al batxillerat. Sé el que és quan les eines no estan pensades per a tu. Per això, des de la primera línia de codi, l'accessibilitat no era una reflexió de darrera hora — era la raó per la qual el projecte existia.

El desastre de SceneKit

Un dels moments més durs va arribar quan Apple va declarar obsolet SceneKit — el marc de treball 3D amb el qual havia construït tota l'escena del tauler. Me n'havia sortit molt bé. L'escena tenia una papallona que voltava, herba que s'ondulava, il·luminació basada en física. Funcionava de meravella amb un consum mínim de CPU. Llavors Apple va anunciar que seria substituït per RealityKit.

Estava furiós. Però amb el compromís de llançar alguna cosa d'última generació i una tolerància zero al deute tècnic, sabia que cada línia de SceneKit havia de ser arrancada i substituïda. La papallona no va sobreviure. RealityKit és el nou cavall de batalla d'Apple, però és una bèstia molt més exigent que el seu predecessor — quelcom que m'agradaria molt comentar amb un enginyer d'Apple algun dia.

On estan les coses avui

Avui dia, Goban3D es troba en beta externa a l'App Store per a iOS i macOS. Té una cobertura d'accessibilitat del 100% en les set categories d'accessibilitat d'Apple: VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast i Differentiate Without Color. Funciona en tots els iPhone, des del SE de 3,5 polzades fins al Pro Max de 6,9 polzades, en tots els iPad, des del de 9,7 polzades fins al de 13 polzades, i de manera nativa en Mac® mitjançant Catalyst. El tauler 3D es renderitza amb RealityKit amb materials físicament realistes que capten la llum com la fusta i la pedra reals. També hi ha un mode 2D net per quan es vol simplicitat o estalviar bateria.

Ningú fora del procés de desenvolupament sap que existeix encara. Cap cobertura de premsa, cap consciència de la comunitat, cap beta tester extern. Aquesta entrada del blog és, en certa manera, la primera vegada que ho explico públicament a algú.

Què ve ara

La prioritat absoluta és trobar beta testers amb necessitats reals d'accessibilitat: jugadors cecs, persones amb visió reduïda o amb dificultats motrius. L'aplicació s'ha construït seguint els estàndards d'Apple, però els estàndards només són el punt de partida. Necessito que persones reals em diguin què funciona, què no funciona i en què no he pensat. Trobar-les serà com trobar un unicorn, però no em rendiré. Tothom hauria d'estar inclòs.

Si voleu provar Goban3D, o coneixeu algú que es pogués beneficiar d'una aplicació de Go accessible, m'encantaria saber-ne. Envieu un correu electrònic a support@goban3d.com amb l'assumpte "Beta Tester" i l'adreça de correu electrònic de l'Apple ID del vostre iPhone, iPad o Mac. Rebreu una invitació de TestFlight® poc després.

Això ha estat el més difícil i el més gratificant que he fet mai. D'un tros de fusta en un pis d'estudiants a l'App Store — han calgut vint anys, però hem arribat.