← Tillbaka till bloggen

Från en träbit till App Store

För ungefär tjugo år sedan drog jag och min rumskamrat från universitetet fram en träbit ur en container, ritade ett rutnät på den med en linjal, köpte några glasstenar från en hantverksbutik för ungefär tre pund och började spela Go. Jag hade ingen aning om vad jag höll på med. Det har jag fortfarande inte, egentligen. Men något med spelet fångade mig omedelbart – hur något så till synes enkelt kunde vara så omöjligt djupt. Ett 19×19-rutnät. Svarta och vita stenar. Regler man kan lära sig på fem minuter. Och ändå, på den tiden, kunde de kraftfullaste datorerna på jorden inte slå en stark mänsklig spelare. Det fascinerade mig.

En tidig besatthet

Den fascinationen var så djup att mitt sistaårsprojekt vid Kingston University handlade om datorseende – jag handkodade en algoritm för att läsa tillståndet på ett Go-kort från ett fotografi, vilket uppnådde över 87 % noggrannhet. I början av 2000-talet, före explosionen av djupinlärning, var jag i stillhet stolt över det.

Ungefär samtidigt besökte jag Japan i två veckor specifikt för att uppleva Go-kulturen på nära håll och spela mot lokala spelare. Jag förlorade varenda match. En match sticker ut: en ung man, förmodligen på dan-nivå, väldigt blyg, med slående långa naglar, i sällskap med sin pappa. Jag var fullständigt förintad innan jag ens insåg vad som hade hänt – det tog ett tag innan jag insåg att jag behövde ge upp.

Varje Go-salong jag besökte var så tät av cigarettrök att det var nästan omöjligt att spela utan frisk luft – och jag är själv rökare. Spelarna var nästan uteslutande äldre. Go verkade vara ett tidsfördriv för dem i sina gyllene år, vilket förbryllade mig med tanke på Japans rykte för teknologi och innovation. Ingen verkade koppla Go till datorer. Inte än i alla fall.

Det långa gapet

Livet gick vidare. Jag arbetade som Java-utvecklare, tillbringade ett år på Accenture under universitetstiden (under vilken allt mitt hår föll av stress) och blev så småningom arbetslös under en längre period på grund av hälsoproblem. Mina Java-kunskaper blev alltmer irrelevanta i takt med att branschen gick vidare utan mig. Jag försökte komma ikapp, men skillnaden hade blivit för stor – och upptäckte att lönerna i den delen av branschen faktiskt hade sjunkit. Det var inte värt det.

Genom allt detta fortsatte jag att spela Go. Inte seriöst – jag har gått på Exeter Go Club till och från i ungefär femton år, och jag är i bästa fall en genomsnittlig spelare. Men spelet släppte mig aldrig.

Allt klickade på en gång

Sedan, under en anmärkningsvärt kort period, hände flera saker samtidigt.

Covid-nedstängningen slog till. Jag klättrade på väggarna utan att göra något, men jag hade turen att ha tre Apple-enheter – presenter från familjen och min partner. Jag såg AlphaGo-dokumentären och blev elektrifierad. Det jag hade fascinerats av på universitetet – omöjligheten för en maskin att bemästra Go – hade lösts. Och AI-revolutionen som den startade hade precis börjat. ChatGPT anlände. Sedan Claude. Sedan tillkännagav Apple Vision Pro.

Jag började experimentera med KataGo och märkte att det inte hade ett ordentligt App Store®-gränssnitt. Jag tittade på Go-apparna som finns tillgängliga för iPhone® och iPad® och de var... bra. Funktionella. Men ingen av dem hade några tillgänglighetsfunktioner. Inte en enda Go-app i hela App Store uppgav stöd för VoiceOver, röststyrning, dynamisk typ eller någon av Apples tillgänglighetsstandarder. Inte en enda.

För ett spel som har spelats av blinda i årtionden – med hjälp av taktila brädor med upphöjda linjer i Japan, på den franska Go-federationen, i Korea – kändes den fullständiga avsaknaden av digitalt tillgängliga versioner som en lucka som inte borde finnas. Blind Go-spelare hade blivit helt utelåsta från appens ekosystem.

Allt hängde ihop på en gång och bara klickade på plats. Jag skulle lära mig iOS-utveckling från grunden, med hjälp av AI-verktyg för att accelerera inlärningen, och jag skulle bygga en Go-app som vem som helst kunde spela – med eller utan syn.

Börjar från noll

Den 1 juli 2024 skapade jag ett tomt Xcode-projekt som hette "RenderedGoApp" – inte ett särskilt inspirerande namn. Jag visste ingenting om Swift, SwiftUI, RealityKit eller någon av Apples utvecklingstekniker. Jag lärde mig allt genom Apples officiella dokumentation och gratis WWDC-sessioner, utan formell utbildning, bootcamps eller utvecklarevenemang.

Två veckor senare, den 17 juli, döpte jag om den till "Goban3D". En goban är det traditionella japanska namnet på den tjocka träbrädan med ben som Go spelas på. Namnet kändes rätt – det överensstämde med Apples namngivningsstandarder och det sa exakt vad appen var.

Jag fick stöd med dyslexi från grundskolan och hela universitetstiden. Jag vet hur det är när verktyg inte är byggda med dig i åtanke. Så från allra första raden kod var tillgänglighet inte en eftertanke – det var anledningen till att projektet existerade.

SceneKit-katastrofen

Ett av de svåraste ögonblicken kom när Apple avfärdade SceneKit – 3D-ramverket jag hade byggt hela brädscenen i. Jag hade blivit bra på det. Scenen hade en fjäril som fladdrade runt, gräs som svajade och fysiskt baserad belysning. Det fungerade utmärkt med minimal processorkraft. Sedan meddelade Apple att det skulle ersättas av RealityKit.

Jag var rasande. Men med ett engagemang för att leverera något banbrytande och nolltolerans mot teknisk skuld, visste jag att varje rad av SceneKit måste rivas ut och ersättas. Fjärilen överlevde inte. RealityKit är Apples nya affischbarn, men det är ett mycket hungrigare odjur än sin föregångare – något jag gärna skulle diskutera med en Apple-ingenjör en dag.

Var saker och ting står

Idag finns Goban3D i extern betaversion på App Store för iOS och macOS. Den har 100 % tillgänglighetstäckning i alla sju av Apples tillgänglighetskategorier – VoiceOver, Dynamisk text, Röststyrning, Minska rörelse, Minska transparens, Tillräcklig kontrast och Differentiera utan färg. Den fungerar på alla iPhones från 3,5" SE till 6,9" Pro Max, alla iPads från 9,7" till 13", och direkt på Mac® via Catalyst. 3D-kortet renderas i RealityKit med fysiskt baserade material som fångar ljus, precis som riktigt trä och sten. Det finns också ett rent 2D-läge för när du vill ha enkelhet eller batteritid.

Ingen utanför utvecklingsprocessen vet att det existerar ännu. Ingen pressbevakning, ingen medvetenhet i samhället, inga externa betatestare. Det här blogginlägget är, på sätt och vis, första gången jag berättar om det offentligt för någon.

Vad händer härnäst

Den enskilt största prioriteringen är att hitta betatestare med verkliga tillgänglighetsbehov – blinda spelare, personer med nedsatt syn, motoriska funktionsnedsättningar. Appen har byggts enligt Apples standarder, men standarder är bara början. Jag behöver riktiga människor som kan berätta för mig vad som fungerar, vad som inte fungerar och vad jag inte har tänkt på. Att hitta dem kommer att vara som att hitta en enhörning, men jag kommer inte att ge upp. Alla borde inkluderas.

Om du vill prova Goban3D, eller känner någon som skulle ha nytta av en tillgänglig Go-app, vill jag gärna höra från dig. Skicka ett mejl till support@goban3d.com med ämnesraden "Betatestare" och Apple ID-e-postadressen för din iPhone, iPad eller Mac. Du får en TestFlight®-inbjudan strax efteråt.

Det här har varit det svåraste och mest givande jag någonsin gjort. Från en träbit i en universitetslägenhet till App Store – det tog tjugo år, men vi kom hit.