← Vissza a bloghoz

Egy fadarabtól az App Store-ig

Körülbelül húsz évvel ezelőtt az egyetemi szobatársam és én kivettünk egy fadarabot egy konténerből, vonalzóval rárajzoltunk egy rácsot, vettünk néhány üvegkövet egy kézműves boltból körülbelül három fontért, és elkezdtük játszani a go-t. Fogalmam sem volt, mit csinálok. Igazából ma sem nagyon. De a játék azonnal megragadott — az a mód, ahogy valami ennyire látszólag egyszerű ilyen lehetetlenül mély lehet. Egy 19×19-es rács. Fekete és fehér kövek. Szabályok, amelyeket öt perc alatt meg lehet tanulni. Mégis akkoriban a világ legerősebb számítógépei sem tudtak legyőzni egy erős emberi játékost. Ez lenyűgözött.

Korai megszállottság

Ez a lenyűgözöttség annyira mélyre hatolt, hogy a záródolgozatom a Kingstoni Egyetemen számítógépes látásból szólt — kézzel kódoltam egy algoritmust, amely fényképről képes volt leolvasni egy go-tábla állását, több mint 87%-os pontossággal. A 2000-es évek elejére, a mélytanulási robbanás előtt, titokban büszke voltam erre.

Körülbelül ugyanebben az időben két hétre Japánba utaztam kifejezetten azért, hogy első kézből tapasztaljam meg a go-kultúrát, és helyi játékosok ellen játsszak. Minden meccset elvesztettem. Egy meccs különösen kiemelkedik: egy fiatal férfi, valószínűleg dan-szintű, nagyon félénk, feltűnően hosszú körmökkel, az apjával. Mielőtt észrevettem volna, mi történt, teljesen szétvertek — egy ideig tartott, amíg rájöttem, hogy fel kell adnom.

Minden go-szalon, amelyet felkerestem, annyira tele volt cigarettafüsttel, hogy szinte lehetetlen volt befejezni egy meccset friss levegő nélkül — és én magam is dohányzom. A játékosok szinte kizárólag idős emberek voltak. A go idősek időtöltésének tűnt, ami meglepett, tekintve Japán technológia és innováció terén szerzett hírnevét. Úgy tűnt, senki sem kapcsolta össze a go-t a számítástechnikával. Még nem.

A hosszú szünet

Az élet ment tovább. Java-fejlesztőként dolgoztam, egy évet töltöttem az Accenture-nél az egyetem alatt (ami alatt az egész hajam kihullott a stressztől), és végül egészségügyi nehézségeket követően hosszú ideig munkanélküliségbe kerültem. Java-tudásom egyre irrelevánsebbé vált, ahogy az iparág nélkülem haladt tovább. Megpróbáltam felzárkózni, de a szakadék már túl nagy volt — és rájöttem, hogy az iparág ezen részén a bérek valójában csökkentek. Nem érte meg.

Mindezek ellenére tovább játszottam a go-t. Nem komolyan — körülbelül tizenöt éve járok az Exeteri Go Klubba időről időre, és legjobb esetben is átlagos játékos vagyok. De a játék soha nem engedett el.

Minden egyszerre kattant a helyére

Aztán egy feltűnően rövid időszak alatt több minden egyszerre történt.

Beütött a COVID-lezárás. A falakon másztam, nem volt mit csinálni, de szerencsés voltam, hogy három Apple-eszközöm volt — ajándékok a családomtól és a partneremtől. Megnéztem az AlphaGo-dokumentumfilmet és lenyűgözött. A dolog, amely annyira lenyűgözött az egyetemen — a gép go-t megcélzó lehetetlensége — megoldódott. És az általa kirobbantott MI-forradalom csak elkezdett kibontakozni. Megérkezett a ChatGPT. Aztán a Claude. Aztán az Apple bejelentette a Vision Pro-t.

Elkezdtem a KataGo-val játszani és észrevettem, hogy nincs megfelelő App Store® felülete. Megnéztem az iPhone®-ra és iPad®re elérhető go alkalmazásokat és... jók voltak. Funkcionálisak. De egyiküknek sem volt semmilyen akadálymentességi funkciója. Az App Store egyetlen go alkalmazása sem jelentette be a VoiceOver, Voice Control, Dynamic Type vagy az Apple akadálymentességi szabványainak bármelyikének támogatását. Egy sem.

Egy olyan játéknál, amelyet vakok játszottak évtizedekig — emelt vonalú tapintható táblákon Japánban, a Francia Go Szövetségnél, Koreában — a digitálisan akadálymentes változat teljes hiánya olyan résnek tűnt, amelynek nem kellene létezni. A vak go-játékosok teljesen ki voltak zárva az alkalmazás-ökoszisztémából.

Minden összeesküdött egyszerre és a helyére kattant. Nulláról megtanulom az iOS-fejlesztést, MI-eszközöket használok a tanulás gyorsítására, és építek egy go alkalmazást, amelyet bárki játszhat — látó vagy sem.

Nulláról indulva

2024. július 1-jén létrehoztam egy üres Xcode-projektet „RenderedGoApp" névvel — nem egy túl inspiráló név. Semmit sem tudtam a Swiftről, SwiftUI-ról, RealityKit-ről vagy az Apple fejlesztési technológiáinak bármelyikéről. Mindent önképzetten tanultam meg az Apple hivatalos dokumentációján és ingyenes WWDC-munkamenetein keresztül, formális képzés, bootcamp vagy fejlesztői rendezvények nélkül.

Két héttel később, július 17-én átneveztem „Goban3D"-re. A goban a vastag fa állványos tábla hagyományos japán neve, amelyen a go-t játsszák. A név jónak érzett — megfelelt az Apple elnevezési szabványainak, és pontosan azt mondta, mi az alkalmazás.

Az általános iskolától a középiskoláig diszlexia-támogatásban részesültem. Tudom, milyen az, amikor az eszközök nem rád gondolva készültek. Ezért az első kódsor megírásától kezdve az akadálymentesség nem utólagos gondolat volt — hanem a projekt létezésének oka.

A SceneKit-katasztrófa

Az egyik legnehezebb pillanat akkor jött, amikor az Apple elavulttá nyilvánította a SceneKit-et — azt a 3D-keretrendszert, amelybe az egész tábla-jelenetet megépítettem. Jó lettem benne. A jelenetben lepke röpdösött, fű hullámzott, fizikai alapú megvilágítás volt. Minimális CPU-felhasználással gyönyörűen futott. Aztán az Apple bejelentette, hogy a RealityKit váltja fel.

Dühös voltam. De a csúcstechnológiás szállításra való elkötelezettséggel és a technikai adóssággal szembeni zéró toleranciával tudtam, hogy a SceneKit minden sorát ki kell tépni és helyettesíteni. A lepke nem élte túl. A RealityKit az Apple új ünnepelt gyermeke, de sokkal éhesebb bestia, mint elődje — valamit szívesen megvitatnék egy Apple-mérnökkel egyszer.

A jelenlegi helyzet

Ma a Goban3D külső bétában van az App Store-ban iOS-re és macOS-re. 100%-os akadálymentességi lefedettséggel rendelkezik az Apple mind a hét akadálymentességi kategóriájában — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast és Differentiate Without Color. Minden iPhone-on fut a 3,5"-es SE-től a 6,9"-es Pro Max-ig, minden iPaden a 9,7"-tól a 13"-ig, és natívan Macon Catalyst-on keresztül. A 3D tábla RealityKit-ben renderelt fizikai alapú anyagokkal, amelyek úgy fogják a fényt, mint az igazi fa és kő. Van egy tiszta 2D mód is, ha egyszerűséget vagy akkumulátor-élettartamot szeretnél.

A fejlesztési folyamaton kívül senki sem tud a létezéséről. Nincs sajtóvisszhang, nincs közösségi tudatosság, nincsenek külső béta-tesztelők. Ez a blogbejegyzés valamilyen értelemben az első alkalom, hogy nyilvánosan elmondok róla valamit.

Mi következik

A legfontosabb prioritás a valódi akadálymentességi igényekkel rendelkező béta-tesztelők megtalálása — vak játékosok, gyengén látók, mozgássérültek. Az alkalmazást az Apple szabványai szerint építettük, de a szabványok csak a kezdetet jelentik. Szükségem van valódi emberekre, akik megmondják, mi működik, mi nem, és mire nem gondoltam. Megtalálásuk olyan lesz, mint unikornist keresni, de nem adom fel. Mindenkit be kell vonni.

Ha ki szeretnéd próbálni a Goban3D-t, vagy ismersz valakit, aki hasznot húzna egy akadálymentes go alkalmazásból, szívesen hallanék rólad. Küldj e-mailt a support@goban3d.com címre „Beta Tester" tárggyal és az Apple ID e-mail-címmeddel iPhone-ra, iPadre vagy Macre. Hamarosan TestFlight®-meghívót kapsz.

Ez volt a legnehezebb és legjutalmazóbb dolog, amit valaha csináltam. Egy fadarabtól az egyetemi lakásban az App Store-ig — húsz évbe telt, de elértük.