Puupalasesta App Storeen
Noin kaksikymmentä vuotta sitten yliopiston huonetoverini ja minä vedimme puupalasen jätepapereista, piirrimme siihen ruudukon viivaimella, ostimme lasikivet käsityöliikkeestä noin kolmella punnalla ja aloimme pelata goa. Minulla ei ollut aavistustakaan mitä olin tekemässä. Ei oikeastaan vieläkään. Mutta jokin pelissä tarttui minuun välittömästi — se, miten jotain näennäisen yksinkertaista voi olla niin käsittämättömän syvällistä. 19×19-ruudukko. Mustat ja valkoiset kivet. Säännöt, jotka oppii viidessä minuutissa. Ja kuitenkin silloin maailman tehokkaimmilla tietokoneilla ei ollut mitään mahdollisuutta voittaa vahvaa ihmispelaajaa. Se kiehtoi minua.
Varhainen pakkomielle
Tämä lumous oli niin syvä, että viimeisen vuoden projektini Kingston Universityssä oli tietokonenäössä — koodasin käsin algoritmin, joka luki go-laudan tilan valokuvasta saavuttaen yli 87 % tarkkuuden. Varhaisen 2000-luvun mittapuulla, ennen syväoppimisen räjähdystä, olin hiljaa tyytyväinen siihen.
Samaan aikaan vierailin Japanissa kahden viikon ajan nimenomaan kokeakseni go-kulttuuria omakohtaisesti ja pelatakseni paikallisia pelaajia vastaan. Hävisin jokaisen yksittäisen ottelun. Yksi peli erottuu: nuori mies, todennäköisesti dan-tasolla, hyvin ujo, silmiinpistävän pitkillä kynsillä, isänsä seurassa. Minut tuhottiin täysin ennen kuin edes tajusin mitä tapahtui — kesti hetken ennen kuin huomasin minun täytyi luovuttaa.
Jokainen go-salonki, jossa vierailin, oli niin tupakansavun täyttämä, että oli melkein mahdotonta selvitä pelin läpi ilman raitista ilmaa — ja olen itse tupakoija. Pelaajat olivat lähes yksinomaan vanhuksia. Go vaikutti olevan harrastus eläkeläisille, mikä hämmensi minua Japanin teknologian ja innovaatioiden maineen huomioon ottaen. Kukaan ei näyttänyt yhdistävän goa tietotekniikkaan. Ei vielä ainakaan.
Pitkä tauko
Elämä jatkui. Tein töitä Java-kehittäjänä, vietin vuoden Accenturella yliopiston aikana (jonka aikana kaikki hiukseni varisivat stressistä), ja lopulta löysin itseni pitkään työttömänä terveysongelmien seurauksena. Java-taitoni kävivät yhä irrelevantimmiksi teollisuuden edetessä ilman minua. Yritin ottaa kiinni, mutta kuilu oli kasvanut liian suureksi — ja huomasin, että palkat sillä alalla olivat itse asiassa laskeneet. Se ei ollut sen arvoista.
Kaiken tämän läpi jatkoin gon pelaamista. En vakavasti — olen käynyt Exeterin go-kerhossa noin viidentoista vuoden ajan, ja olen korkeintaan keskitasoinen pelaaja. Mutta peli ei päästänyt minusta irti.
Kaikki napsahti yhtaikaa
Sitten, hämmästyttävän lyhyen ajan sisällä, useita asioita tapahtui yhtaikaa.
COVID-sulku iski. Kiipeilin seinillä ilman tekemistä, mutta olin onnekkaasti saanut kolme Apple-laitetta — lahjoja perheeltä ja puolisoltani. Katsoin AlphaGo-dokumentarin ja sähköistyin. Asia, jota olin ollut lumoutunut yliopistossa — mahdottomuus siitä, että kone hallitsee gon — oli ratkaistu. Ja sen käynnistämä tekoälyvallankumous oli vasta alkamassa. ChatGPT saapui. Sitten Claude. Sitten Apple ilmoitti Vision Prosta.
Aloin leikkiä KataGolla ja huomasin, ettei sillä ollut kunnollista App Store® -käyttöliittymää. Katsoin iPhone®lle ja iPad®ille saatavilla olevia go-sovelluksia ja ne olivat... ihan ok. Toimivia. Mutta yhdessäkään niistä ei ollut esteettömyysominaisuuksia. Yksikään go-sovellus koko App Storessa ei ilmoittanut tukevansa VoiceOveria, Voice Controlia, Dynamic Typea tai mitään Applen esteettömyystandardeista. Ei yksikään.
Pelille, jota sokeat ihmiset ovat pelanneet vuosikymmeniä — kohotetulla taktiilaisten linjojen laudalla Japanissa, Ranskan go-federaatiossa, Koreassa — täysin digitaalisesti saavutettavan version puuttuminen tuntui aukolta, jota ei pitäisi olla. Sokeat go-pelaajat olivat täysin lukittu ulos sovellusekosysteemistä.
Kaikki sopi yhtaikaa yhteen. Opettaisin itselleni iOS-kehityksen alusta alkaen, käyttäen tekoälytyökaluja oppimisen nopeuttamiseen, ja rakentaisin go-sovelluksen, jota kuka tahansa voi pelata — näkevä tai ei.
Aloittaminen nollasta
1. heinäkuuta 2024 loin tyhjän Xcode-projektin nimeltä "RenderedGoApp" — ei kovin inspiroiva nimi. En tiennyt mitään Swiftistä, SwiftUI:sta, RealityKitistä tai mistään Applen kehitysteknologioista. Opetin itselleni kaiken Applen virallisen dokumentaation ja ilmaisten WWDC-istuntojen kautta, ilman muodollista koulutusta, bootcampeja tai kehittäjätapahtumia.
Kaksi viikkoa myöhemmin, 17. heinäkuuta, nimesin sen uudelleen "Goban3D":ksi. Goban on perinteinen japanilainen nimi paksulle puiselle jalalliselle laudalle, jolla goa pelataan. Nimi tuntui oikealta — se noudatti Applen nimeämistandardeja ja sanoi täsmälleen mitä sovellus oli.
Sain dysleksian tukea peruskoulusta koulun loppuun saakka. Tiedän miltä tuntuu kun työkaluja ei ole rakennettu sinua ajatellen. Niinpä ensimmäisestä koodirivestä lähtien esteettömyys ei ollut jälkiajatus — se oli syy projektin olemassaoloon.
SceneKit-katastrofi
Yksi vaikeimmista hetkistä tuli kun Apple hylkäsi SceneKitin — 3D-kehyksen, johon olin rakentanut koko laudan kohtauksen. Olin tullut hyväksi siinä. Kohtauksessa lensi perhonen, heilui ruoho, fyysisesti perustuva valaistus. Se toimi kauniisti minimaalisella CPU:lla. Sitten Apple ilmoitti sen korvaamisesta RealityKitillä.
Olin raivoissani. Mutta sitoutuneena toimittamaan jotain huipputeknistä, ja nollatoleranssilla tekniselle velalle, tiesin että jokainen rivi SceneKitiä piti repiä irti ja korvata. Perhonen ei selvinnyt. RealityKit on Applen uusi lemmikki, mutta se on paljon nälkäisempi peto kuin edeltäjänsä — jotain jonka haluaisin keskustella Applen insinöörin kanssa jonain päivänä.
Missä tilanne on
Tänään Goban3D on ulkoisessa betassa App Storessa iOS:lle ja macOS:lle. Sillä on 100 % esteettömyyskattavuus kaikissa Applen seitsemässä esteettömyyskategoriassa — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast ja Differentiate Without Color. Se toimii jokaisella iPhonella 3,5":n SE:stä 6,9":n Pro Maxiin, jokaisella iPadilla 9,7":stä 13":iin, ja natiivisti Macilla Catalystin kautta. 3D-lauta on renderöity RealityKitissä fyysisesti perustuvilla materiaaleilla, jotka heijastavat valoa kuten oikea puu ja kivi. On myös selkeä 2D-tila, kun haluat yksinkertaisuutta tai akkukestoa.
Kukaan kehitysprosessin ulkopuolella ei tiedä sen olemassaolosta vielä. Ei lehdistöä, ei yhteisötietoisuutta, ei ulkoisia beta-testaajia. Tämä blogipostaus on tavallaan ensimmäinen kerta, kun kerron siitä julkisesti kenellekään.
Mitä seuraavaksi
Tärkein prioriteetti on löytää beta-testaajia, joilla on todellisia esteettömyystarpeita — sokeat pelaajat, ihmiset joilla on heikko näkö, motoriset häiriöt. Sovellus on rakennettu Applen standardien mukaisesti, mutta standardit ovat vasta alku. Tarvitsen todellisia ihmisiä kertomaan minulle mikä toimii, mikä ei, ja mitä en ole ajatellut. Heidän löytäminen on kuin yksisarvisen löytäminen, mutta en luovuta. Kaikkien tulee olla mukana.
Jos haluaisit kokeilla Goban3D:tä, tai tunnet jonkun joka hyötyisi esteettömästä go-sovelluksesta, kuulen mielelläni sinusta. Lähetä sähköpostia osoitteeseen support@goban3d.com aiheella "Beta Tester" ja Apple ID -sähköpostiosoitteesi iPhonellesi, iPadillesi tai Macillesi. Saat TestFlight®-kutsun pian sen jälkeen.
Tämä on ollut vaikein ja palkitsevin asia, jonka olen koskaan tehnyt. Puupalasesta yliopiston asuntolassa App Storeen — kesti kaksikymmentä vuotta, mutta pääsimme perille.