← Trở lại Blog

Từ một khúc gỗ đến cửa hàng ứng dụng App Store

Khoảng hai mươi năm trước, tôi và bạn cùng phòng đại học nhặt một mảnh gỗ từ thùng rác, vẽ một lưới lên đó bằng thước kẻ, mua vài quân cờ thủy tinh từ một cửa hàng đồ thủ công mỹ nghệ với giá khoảng ba bảng Anh, và bắt đầu chơi cờ vây. Tôi chẳng biết mình đang làm gì cả. Thực ra đến giờ tôi vẫn không biết. Nhưng có điều gì đó ở trò chơi này đã thu hút tôi ngay lập tức — cái cách mà một thứ tưởng chừng đơn giản như vậy lại có thể sâu sắc đến khó tin. Một lưới 19x19. Quân cờ đen và trắng. Luật chơi bạn có thể học trong năm phút. Vậy mà, vào thời điểm đó, những chiếc máy tính mạnh nhất trên thế giới cũng không thể đánh bại một người chơi giỏi. Điều đó đã làm tôi say mê.

Một nỗi ám ảnh thuở nhỏ

Sự say mê đó đủ sâu sắc đến nỗi dự án năm cuối của tôi tại Đại học Kingston là về thị giác máy tính — tôi tự tay lập trình một thuật toán để đọc trạng thái bàn cờ vây từ một bức ảnh, đạt độ chính xác hơn 87%. Vào đầu những năm 2000, trước khi bùng nổ lĩnh vực học sâu, tôi đã thầm tự hào về điều đó.

Cũng vào khoảng thời gian đó, tôi đã đến Nhật Bản trong hai tuần để trực tiếp trải nghiệm văn hóa cờ vây và chơi với những người chơi địa phương. Tôi thua tất cả các trận đấu. Có một ván cờ mà tôi nhớ mãi: một chàng trai trẻ, có lẽ ở cấp độ dan, rất nhút nhát, với bộ móng tay dài nổi bật, đi cùng với cha của cậu ấy. Tôi bị đánh bại hoàn toàn trước khi kịp nhận ra điều gì đã xảy ra — phải mất một lúc tôi mới nhận ra mình cần phải bỏ cuộc.

Mỗi quán cờ vây tôi ghé thăm đều nồng nặc mùi khói thuốc lá đến nỗi gần như không thể chơi hết một ván cờ nếu không có không khí trong lành — và bản thân tôi cũng là người hút thuốc. Người chơi hầu hết đều là người lớn tuổi. Cờ vây dường như là thú vui của những người ở tuổi xế chiều, điều này khiến tôi khó hiểu khi xét đến danh tiếng của Nhật Bản về công nghệ và sự đổi mới. Dường như không ai liên hệ cờ vây với máy tính. Ít nhất là cho đến hiện tại.

Khoảng cách dài

Cuộc sống vẫn tiếp diễn. Tôi từng làm lập trình viên Java, trải qua một năm làm việc tại Accenture trong thời gian học đại học (trong thời gian đó tóc tôi rụng hết vì căng thẳng), và cuối cùng rơi vào tình trạng thất nghiệp dài hạn do vấn đề sức khỏe. Kỹ năng Java của tôi ngày càng trở nên lỗi thời khi ngành công nghiệp phát triển mà không có tôi. Tôi cố gắng bắt kịp, nhưng khoảng cách đã quá lớn — và phát hiện ra rằng mức lương trong lĩnh vực đó thực tế đã giảm xuống. Điều đó không đáng để tôi tiếp tục.

Suốt thời gian đó, tôi vẫn tiếp tục chơi cờ vây. Không phải chơi nghiêm túc — tôi tham gia Câu lạc bộ Cờ vây Exeter không thường xuyên trong khoảng mười lăm năm, và tôi chỉ là một người chơi trung bình. Nhưng trò chơi này chưa bao giờ buông tha tôi.

Mọi thứ bỗng nhiên ăn khớp với nhau.

Sau đó, chỉ trong một khoảng thời gian ngắn đáng kinh ngạc, nhiều sự việc đã xảy ra cùng một lúc.

Rồi đại dịch COVID ập đến. Tôi phát điên lên vì không có việc gì làm, nhưng may mắn thay tôi có ba thiết bị của Apple — quà tặng từ gia đình và người yêu. Tôi xem bộ phim tài liệu về AlphaGo và vô cùng phấn khích. Điều mà tôi từng say mê hồi đại học — sự bất khả thi của việc máy móc có thể chơi cờ vây giỏi — đã được giải đáp. Và cuộc cách mạng trí tuệ nhân tạo mà nó khởi xướng mới chỉ bắt đầu. ChatGPT xuất hiện. Rồi Claude. Sau đó Apple công bố Vision Pro.

Tôi bắt đầu dùng thử KataGo và nhận thấy nó không có giao diện App Store® đúng nghĩa. Tôi xem qua các ứng dụng Go có sẵn cho iPhone® và iPad® và chúng... cũng ổn. Chức năng tốt. Nhưng không ứng dụng nào có tính năng hỗ trợ người khuyết tật. Không một ứng dụng Go nào trên toàn bộ App Store tuyên bố hỗ trợ VoiceOver, Voice Control, Dynamic Type, hay bất kỳ tiêu chuẩn hỗ trợ người khuyết tật nào của Apple. Không một ứng dụng nào cả.

Đối với một trò chơi mà người khiếm thị đã chơi trong nhiều thập kỷ — sử dụng bàn cờ có vạch nổi ở Nhật Bản, tại Liên đoàn Cờ vây Pháp, ở Hàn Quốc — việc hoàn toàn thiếu vắng bất kỳ phiên bản kỹ thuật số nào dường như là một thiếu sót không nên tồn tại. Người chơi cờ vây khiếm thị đã hoàn toàn bị loại khỏi hệ sinh thái ứng dụng.

Mọi thứ dường như cùng lúc hội tụ và ăn khớp với nhau. Tôi tự học lập trình iOS từ đầu, sử dụng các công cụ AI để đẩy nhanh quá trình học tập, và tôi sẽ xây dựng một ứng dụng cờ vây mà bất cứ ai cũng có thể chơi được — dù có thị lực hay không.

Bắt đầu từ con số không

Vào ngày 1 tháng 7 năm 2024, tôi đã tạo một dự án Xcode trống có tên là "RenderedGoApp" — một cái tên không mấy ấn tượng. Tôi không biết gì về Swift, SwiftUI, RealityKit, hay bất kỳ công nghệ phát triển nào của Apple. Tôi tự học mọi thứ thông qua tài liệu chính thức của Apple và các buổi hội thảo WWDC miễn phí, mà không cần đào tạo bài bản, tham gia các khóa học ngắn hạn hay các sự kiện dành cho nhà phát triển.

Hai tuần sau, vào ngày 17 tháng 7, tôi đổi tên nó thành "Goban3D". Goban là tên gọi truyền thống của Nhật Bản cho loại bàn cờ bằng gỗ dày có chân dùng để chơi cờ vây. Cái tên này nghe có vẻ phù hợp — nó tuân thủ các tiêu chuẩn đặt tên của Apple và nói chính xác ứng dụng này là gì.

Tôi đã nhận được sự hỗ trợ về chứng khó đọc từ trường tiểu học cho đến hết đại học. Tôi hiểu cảm giác khi các công cụ không được thiết kế dành cho người dùng khó tính. Vì vậy, ngay từ dòng mã đầu tiên, khả năng tiếp cận không phải là điều được thêm vào sau cùng — mà chính là lý do dự án này tồn tại.

Thảm họa SceneKit

Một trong những khoảnh khắc khó khăn nhất đến khi Apple ngừng hỗ trợ SceneKit — khung phần mềm 3D mà tôi đã dùng để xây dựng toàn bộ khung cảnh bàn cờ. Tôi đã rất thành thạo nó. Khung cảnh có một con bướm đang bay lượn, cỏ đung đưa, ánh sáng dựa trên vật lý. Nó chạy rất mượt mà với mức sử dụng CPU tối thiểu. Rồi Apple thông báo rằng nó sẽ được thay thế bằng RealityKit.

Tôi vô cùng tức giận. Nhưng với cam kết cho ra mắt một sản phẩm tiên tiến nhất và không chấp nhận bất kỳ khoản nợ kỹ thuật nào, tôi biết rằng từng dòng mã của SceneKit đều phải được loại bỏ và thay thế. Con bướm đã không sống sót. RealityKit là "con cưng" mới của Apple, nhưng nó là một con quái vật tham lam hơn nhiều so với người tiền nhiệm của nó — điều mà tôi rất muốn thảo luận với một kỹ sư của Apple vào một ngày nào đó.

Tình hình hiện tại

Hiện tại, Goban3D đang trong giai đoạn thử nghiệm beta bên ngoài trên App Store dành cho iOS và macOS. Ứng dụng này có độ phủ hỗ trợ 100% trên tất cả bảy danh mục hỗ trợ của Apple — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast và Differentiate Without Color. Ứng dụng hoạt động trên mọi iPhone từ SE 3.5" đến Pro Max 6.9", mọi iPad từ 9.7" đến 13" và chạy trực tiếp trên Mac® thông qua Catalyst. Bảng 3D được hiển thị bằng RealityKit với các vật liệu dựa trên vật lý, bắt sáng giống như gỗ và đá thật. Ngoài ra còn có chế độ 2D đơn giản khi bạn muốn sự dễ sử dụng hoặc tiết kiệm pin.

Hiện tại, không ai ngoài quá trình phát triển biết đến sự tồn tại của nó. Không có bài báo nào đưa tin, không có sự nhận biết của cộng đồng, không có người thử nghiệm beta bên ngoài. Bài đăng trên blog này, theo một cách nào đó, là lần đầu tiên tôi công khai nói về điều này với mọi người.

Điều gì sẽ xảy ra tiếp theo?

Ưu tiên hàng đầu là tìm kiếm những người thử nghiệm phiên bản beta có nhu cầu thực sự về khả năng tiếp cận — người chơi khiếm thị, người có thị lực kém, người bị suy giảm vận động. Ứng dụng đã được xây dựng theo tiêu chuẩn của Apple, nhưng tiêu chuẩn chỉ là bước khởi đầu. Tôi cần những người dùng thực tế cho tôi biết điều gì hiệu quả, điều gì không hiệu quả và những điều tôi chưa nghĩ đến. Tìm được họ sẽ khó như tìm kỳ lân, nhưng tôi sẽ không bỏ cuộc. Tất cả mọi người đều nên được tham gia.

Nếu bạn muốn dùng thử Goban3D, hoặc biết ai đó có thể hưởng lợi từ một ứng dụng cờ vây dễ sử dụng, tôi rất mong nhận được phản hồi từ bạn. Hãy gửi email đến support@goban3d.com với tiêu đề "Người thử nghiệm phiên bản Beta" và địa chỉ email Apple ID của iPhone, iPad hoặc Mac của bạn. Bạn sẽ nhận được lời mời tham gia TestFlight® ngay sau đó.

Đây là việc khó khăn nhất và cũng bổ ích nhất mà tôi từng làm. Từ một mảnh gỗ trong căn hộ sinh viên đến App Store — phải mất hai mươi năm, nhưng chúng ta đã làm được.