由一塊木板到 App Store
大約二十年前,我同大學室友由一個廢料堆撿咗一塊木板, 用尺子喺上面畫咗棋盤格,又花咗大約三英鎊喺手工藝品店買咗一些玻璃棋子, 然後開始下圍棋。我完全唔知自己喺做咩。老實說,而家都差唔多。 但圍棋一下子就抓住咗我——呢樣睇似咁簡單嘅嘢,點解可以深不見底? 一張19×19嘅棋盤,黑白兩色棋子,五分鐘就能學識嘅規則。 然而喺嗰個年代,地球上最強大嘅電腦都無法擊敗頂尖嘅人類棋手。 呢件事令我著咗迷。
最初嘅癡迷
呢份著迷深入骨髓,以至於我喺Kingston University嘅畢業專題就係電腦視覺方向—— 我由零開始手寫咗一個演算法,透過照片辨識棋盤上嘅棋局狀態,準確率超過87%。 喺深度學習大爆發之前嘅2000年代初期,我對此還係幾自豪嘅。
差不多同一時期,我專程去咗日本兩週,目的就係親身體驗圍棋文化,同當地棋手對弈。 每一局都輸咗。有一盤棋我至今難忘:對手係一位年輕人,大概有段位水準, 非常靦腆,指甲長得引人注目,身旁有父親陪同。 我仲未反應過來就被徹底擊潰——過咗好一陣我先意識到自己應該認輸了。
我去過嘅每一家圍棋沙龍都瀰漫著濃到化唔開嘅煙霧, 就連我呢個煙民都幾乎無法喺唔透口氣嘅情況下下完一整局。 棋手幾乎清一色係老年人。考慮到日本喺科技同創新方面嘅聲譽, 圍棋淪為老年人嘅消遣令我覺得好不可思議。 似乎仲冇人把圍棋同運算聯繫到一起。至少當時仲未。
漫長嘅空白
生活繼續。我做過Java開發,大學期間喺Accenture實習咗一年 (壓力大到頭髮全掉光咗),後來因為健康問題陷入咗很長一段時間嘅失業。 我嘅Java技能喺產業飛速發展中逐漸過時。 我試過追趕,但差距已經拉得太大—— 更令人沮喪嘅係,我發現嗰個領域嘅薪資水準竟然仲下降咗。 唔值得再堅持了。
然而,喺呢一切起伏中,我一直喺下圍棋。算唔上認真—— 大約十五年來,我斷斷續續地參加Exeter圍棋俱樂部嘅活動,水準頂多算中等。 但圍棋從未真正放開過我。
一切同時到位
接著,喺一段出奇短暫嘅時間裡,好幾件事同時發生咗。
新冠疫情來咗,封城開始。我百無聊賴,快把牆壁都爬遍了, 但幸運嘅係手頭有三台Apple裝置——都係家人同伴侶送嘅禮物。 我睇咗AlphaGo嘅紀錄片,整個人好似被電擊咗一樣。 大學時代令我著迷嘅嗰件事——機器不可能掌握圍棋——竟然已經被攻克咗。 而由此引發嘅AI革命才剛剛拉開序幕。 ChatGPT出現咗,緊接著係Claude,然後Apple發布咗Vision Pro。
我開始玩KataGo,發現它並沒有一個像樣嘅App Store介面。 我翻遍咗iPhone同iPad上嘅圍棋應用程式,它們……還好。功能係有嘅。 但冇一個具備任何無障礙功能。 整個App Store上嘅圍棋應用程式,冇一個宣告支援VoiceOver、Voice Control、 Dynamic Type或Apple嘅任何無障礙標準。一個都冇。
對於一項幾十年來一直有盲人參與嘅運動來說—— 喺日本、法國圍棋聯合會同韓國,都有使用凸線觸覺棋盤下棋嘅傳統—— 數位世界中竟然完全冇無障礙版本,呢個空白不應該存在。 視障圍棋愛好者被整個應用程式生態完全排斥喺外了。
所有呢啲因素同時匯聚,一下子全對上了。 我要由零自學iOS開發,藉助AI工具加速學習過程, 做一款人人都能玩嘅圍棋應用程式——無論睇得見定睇唔見。
由零起步
2024年7月1日,我建立咗一個空白嘅Xcode專案,叫「RenderedGoApp」—— 呢個名完全冇靈感可言。我對Swift、SwiftUI、RealityKit以及Apple嘅各種開發技術一無所知。 我完全透過Apple嘅官方文件同免費嘅WWDC影片自學, 冇參加過任何正式培訓、訓練營或開發者活動。
兩週後嘅7月17日,我把專案改名為「Goban3D」。 碁盤(goban)係圍棋中傳統厚木棋桌嘅日語名稱。 呢個名感覺恰到好處——符合Apple嘅命名規範, 亦精準地表達咗呢款應用程式係咩。
由小學到大學,我一直接受讀寫障礙方面嘅支援。 我深知當工具唔係為你而設計時係咩感覺。 所以由第一行程式碼開始,無障礙就唔係事後補救—— 它係呢個專案存在嘅理由本身。
SceneKit嘅災難
最痛苦嘅時刻之一,係Apple宣布棄用SceneKit—— 嗰係我用嚟建構整個棋盤場景嘅3D框架。 我已經用得好熟練了。場景裡有蝴蝶翩翩飛舞、草叢隨風搖曳、 基於物理嘅光照效果。運行流暢,CPU佔用極低。 然後Apple宣布它將被RealityKit取代。
我氣炸了。但既然立志要做最前沿嘅嘢, 又對技術債務零容忍,我知道SceneKit嘅每一行程式碼都必須推倒重來。 嗰隻蝴蝶冇能倖存。RealityKit係Apple新嘅招牌框架, 但它比前任要貪婪得多—— 呢個話題我好想有朝一日同Apple嘅工程師好好傾吓。
目前嘅狀態
如今,Goban3D已喺App Store上以iOS同macOS外部測試版嘅形式發布。 它喺Apple無障礙功能嘅全部七個類別中實現咗100%覆蓋—— VoiceOver、Dynamic Type、Voice Control、Reduce Motion、Reduce Transparency、 Sufficient Contrast同Differentiate Without Color。 它能喺由3.5吋SE到6.9吋Pro Max嘅所有iPhone上運行, 亦支援由9.7吋到13吋嘅所有iPad, 並透過Catalyst喺Mac上原生運行。 3D棋盤使用RealityKit渲染,採用基於物理嘅材質, 光影效果如同真實嘅木頭同石頭。 仲有一個簡潔嘅2D模式,適合追求簡約或節省電量時使用。
除咗開發過程中嘅參與者之外,目前仲冇人知道它嘅存在。 冇媒體報導,冇社群認知,冇外部測試人員。 呢篇網誌文章,某種意義上係我第一次公開談論它。
下一步
當前最重要嘅事情係搵到有真實無障礙需求嘅測試者—— 盲人棋手、低視力使用者、運動功能障礙人群。 呢款應用程式係按照Apple嘅標準建構嘅,但標準只係起點。 我需要真實使用者告訴我哪些做得好、哪些唔夠好、哪些係我冇想到嘅。 搵到佢哋或許像大海撈針,但我唔會放棄。每個人都應該被包含喺內。
如果你想試用Goban3D,或者認識可能受益於一款無障礙圍棋應用程式嘅朋友, 我非常期待收到你嘅訊息。請發送電子郵件至 support@goban3d.com, 主旨寫「Beta Tester」,並附上你iPhone、iPad或Mac嘅Apple ID電子郵件地址。 我會盡快發送TestFlight邀請。
呢係我做過最艱難、亦係最有成就感嘅事情。 由大學宿舍裡嘅一塊木板到App Store——花咗二十年,但我們走到咗呢度。