এক টুকরো কাঠ থেকে App Store পর্যন্ত
প্রায় বিশ বছর আগে, আমার বিশ্ববিদ্যালয়ের রুমমেট আর আমি একটা স্কিপ থেকে এক টুকরো কাঠ তুলে এনেছিলাম, একটা রুলার দিয়ে তাতে গ্রিড এঁকেছিলাম, আর একটা আর্টস-অ্যান্ড-ক্রাফটস দোকান থেকে মাত্র তিন পাউন্ডে কিছু কাচের পাথর কিনে Go খেলতে শুরু করেছিলাম। আমি আসলে জানতামই না কী করছি। এখনও সত্যিকার অর্থে জানি না। কিন্তু খেলাটা সঙ্গে সঙ্গে আমাকে টেনে ধরল — এত সহজ মনে হওয়া কিছু যে এত অসম্ভব গভীর হতে পারে, সেটাই আমাকে মুগ্ধ করেছিল। ১৯×১৯ বর্গের গ্রিড। কালো আর সাদা পাথর। পাঁচ মিনিটে শেখা যায় এমন নিয়ম। অথচ সেই সময় পৃথিবীর সবচেয়ে শক্তিশালী কম্পিউটারগুলোও একজন দক্ষ মানব খেলোয়াড়কে হারাতে পারত না। এটাই আমাকে মোহিত করেছিল।
প্রথম আসক্তি
সেই মুগ্ধতা এতটাই গভীর ছিল যে Kingston University-তে আমার ফাইনাল ইয়ার প্রজেক্ট ছিল কম্পিউটার ভিশন নিয়ে — আমি হাতে-কোড করা একটা অ্যালগরিদম তৈরি করেছিলাম যেটা একটি ফটোগ্রাফ থেকে Go বোর্ডের অবস্থা পড়তে পারত, ৮৭%-এরও বেশি নির্ভুলতায়। ২০০০-এর দশকের শুরুতে, ডিপ লার্নিং বিপ্লবের আগে, আমি চুপিসারে এটা নিয়ে গর্বিত ছিলাম।
প্রায় একই সময়ে, আমি দুই সপ্তাহের জন্য জাপান সফরে গিয়েছিলাম — শুধুমাত্র Go সংস্কৃতি সরাসরি অনুভব করতে এবং স্থানীয় খেলোয়াড়দের বিরুদ্ধে খেলতে। প্রতিটি ম্যাচ হেরেছিলাম। একটি ম্যাচ এখনও মনে আছে স্পষ্ট: একজন তরুণ, সম্ভবত ড্যান-লেভেলের, অত্যন্ত লাজুক, চমকপ্রদভাবে লম্বা নখওয়ালা, তার বাবার সাথে এসেছিল। আমি বুঝে ওঠার আগেই সম্পূর্ণ ধ্বংস হয়ে গিয়েছিলাম — রেজাইন করার সময় হয়েছে বুঝতেই বেশ কিছুক্ষণ লেগেছিল।
আমি যতগুলো Go সেলনে গিয়েছিলাম সেগুলো এত সিগারেটের ধোঁয়ায় ভরা ছিল যে তাজা বাতাস ছাড়া একটা খেলা শেষ করা প্রায় অসম্ভব ছিল — আর আমি নিজেও ধূমপায়ী। খেলোয়াড়রা ছিলেন প্রায় সবাই বয়স্ক। Go মনে হচ্ছিল বৃদ্ধদের অবসর বিনোদন, যা আমাকে অবাক করেছিল — প্রযুক্তি ও উদ্ভাবনে জাপানের খ্যাতির কথা ভাবলে। কেউই যেন Go-কে কম্পিউটিংয়ের সাথে যুক্ত করছিলেন না। তখনও না।
দীর্ঘ বিরতি
জীবন এগিয়ে গেল। Java ডেভেলপার হিসেবে কাজ করলাম, বিশ্ববিদ্যালয়ের সময় Accenture-এ এক বছর কাটালাম (সেই চাপে মাথার সব চুল পড়ে গিয়েছিল), এবং শেষ পর্যন্ত স্বাস্থ্যগত সমস্যার কারণে দীর্ঘ সময়ের জন্য বেকার হয়ে পড়লাম। ইন্ডাস্ট্রি এগিয়ে গেল, আর আমার Java দক্ষতা ক্রমশ অপ্রাসঙ্গিক হয়ে পড়ল। পার্থক্যটা পূরণ করার চেষ্টা করলাম, কিন্তু ফাঁকটা অনেক বড় হয়ে গিয়েছিল — আর জানলাম সেই অংশের ইন্ডাস্ট্রিতে বেতন আসলে কমে গেছে। লাভ নেই।
সবকিছুর মাঝে Go খেলতে থাকলাম। সিরিয়াসভাবে নয় — প্রায় পনেরো বছর ধরে মাঝে মাঝে Exeter Go Club-এ যাচ্ছি, আর খুব বেশি হলে গড়পড়তা খেলোয়াড়। কিন্তু খেলাটা কখনো আমাকে ছাড়েনি।
একসাথে সব মিলে গেল
তারপর, আশ্চর্যরকম অল্প সময়ের মধ্যে, একসাথে কয়েকটি ঘটনা ঘটল।
COVID লকডাউন এল। দিশেহারা হয়ে পড়লাম, কিছু করার নেই, কিন্তু সৌভাগ্যক্রমে তিনটি Apple ডিভাইস ছিল আমার কাছে — পরিবার আর সঙ্গীর উপহার। AlphaGo-র ডকুমেন্টারি দেখলাম আর বিদ্যুৎস্পৃষ্টের মতো অনুভব করলাম। বিশ্ববিদ্যালয়ে আমাকে যেটা মুগ্ধ করেছিল — কোনো মেশিনের পক্ষে Go-তে পারদর্শী হওয়া অসম্ভব — সেটা সমাধান হয়ে গেছে। আর তার থেকে শুরু হওয়া AI বিপ্লব সবে শুরু হচ্ছিল। ChatGPT এল। তারপর Claude। তারপর Apple ঘোষণা করল Vision Pro।
KataGo নিয়ে খেলতে গিয়ে দেখলাম এর কোনো ঠিকঠাক App Store® ইন্টারফেস নেই। iPhone® আর iPad®-এর জন্য পাওয়া Go অ্যাপগুলো দেখলাম — সেগুলো ঠিকঠাক ছিল। কার্যকরী। কিন্তু কোনোটাতেই কোনো অ্যাক্সেসিবিলিটি ফিচার ছিল না। পুরো App Store-এ একটাও Go অ্যাপ VoiceOver, Voice Control, Dynamic Type বা Apple-এর কোনো অ্যাক্সেসিবিলিটি স্ট্যান্ডার্ড সাপোর্ট করে বলে ঘোষণা করেনি। একটাও না।
যে খেলাটা দশকের পর দশক ধরে দৃষ্টিহীন মানুষেরা খেলে আসছেন — জাপানে উঁচু রেখার স্পর্শযোগ্য বোর্ডে, ফরাসি Go ফেডারেশনে, কোরিয়ায় — সেই খেলার কোনো ডিজিটাল অ্যাক্সেসিবল সংস্করণ না থাকাটা এমন একটা শূন্যতা যেটা থাকা উচিত নয়। দৃষ্টিহীন Go খেলোয়াড়রা পুরোপুরি অ্যাপ ইকোসিস্টেম থেকে বাদ পড়ে গিয়েছিলেন।
সবকিছু একসাথে মিলে গেল। আমি শূন্য থেকে iOS ডেভেলপমেন্ট শিখব, AI টুল ব্যবহার করে শেখার গতি বাড়াব, আর এমন একটা Go অ্যাপ বানাব যেটা যে কেউ খেলতে পারবে — দৃষ্টিসম্পন্ন হোক বা না হোক।
শূন্য থেকে শুরু
২০২৪ সালের ১ জুলাই, আমি "RenderedGoApp" নামে একটা ফাঁকা Xcode প্রজেক্ট তৈরি করলাম — খুব একটা অনুপ্রেরণাদায়ক নাম না। Swift, SwiftUI, RealityKit, বা Apple-এর ডেভেলপমেন্ট প্রযুক্তি সম্পর্কে কিছুই জানতাম না। Apple-এর অফিশিয়াল ডকুমেন্টেশন আর বিনামূল্যের WWDC সেশনের মাধ্যমে সবকিছু নিজে শিখলাম — কোনো আনুষ্ঠানিক প্রশিক্ষণ, বুটক্যাম্প বা ডেভেলপার ইভেন্ট ছাড়া।
দুই সপ্তাহ পরে, ১৭ জুলাই, নাম বদলে রাখলাম "Goban3D"। গোবান হলো সেই ঐতিহ্যবাহী মোটা কাঠের পা-দেওয়া বোর্ডের জাপানি নাম যার উপর Go খেলা হয়। নামটা সঠিক মনে হলো — Apple-এর নামকরণ মানদণ্ড মেনে চলে, আর অ্যাপটা ঠিক কী সেটা সরাসরি বলে দেয়।
প্রাথমিক বিদ্যালয় থেকে কলেজ পর্যন্ত ডিসলেক্সিয়ার সাহায্য পেয়েছি। জানি কেমন লাগে যখন টুলগুলো তোমাকে মাথায় রেখে বানানো হয় না। তাই কোডের প্রথম লাইন থেকেই অ্যাক্সেসিবিলিটি ছিল পরে-ভাবার-বিষয় নয় — বরং এই প্রজেক্ট তৈরির কারণটাই ছিল সেটা।
SceneKit বিপর্যয়
সবচেয়ে কঠিন মুহূর্তটা এল যখন Apple SceneKit-কে deprecated ঘোষণা করল — সেই 3D ফ্রেমওয়ার্ক যেটায় আমি পুরো বোর্ড সিন তৈরি করেছিলাম। আমি এটায় দক্ষ হয়ে উঠেছিলাম। সিনে একটা প্রজাপতি উড়ছিল, ঘাস দুলছিল, ফিজিক্যালি-বেসড লাইটিং ছিল। ন্যূনতম CPU ব্যবহারে অসাধারণ চলছিল। তারপর Apple ঘোষণা করল এটা RealityKit দিয়ে প্রতিস্থাপিত হবে।
আমি রীতিমতো রেগে গিয়েছিলাম। কিন্তু অত্যাধুনিক কিছু তৈরি করার প্রতিশ্রুতি আর টেকনিক্যাল ডেটের প্রতি শূন্য সহনশীলতার কারণে জানতাম SceneKit-এর প্রতিটি লাইন তুলে ফেলে প্রতিস্থাপন করতে হবে। প্রজাপতিটা বেঁচে থাকেনি। RealityKit হলো Apple-এর নতুন পোস্টার চাইল্ড, কিন্তু এটা তার পূর্বসূরির চেয়ে অনেক বেশি ক্ষুধার্ত একটা জন্তু — যেটা নিয়ে কোনো একদিন Apple ইঞ্জিনিয়ারের সাথে আলোচনা করতে পারলে ভালো লাগত।
বর্তমান অবস্থা
আজ, Goban3D iOS এবং macOS-এর জন্য App Store-এ এক্সটার্নাল বেটায় রয়েছে। Apple-এর সাতটি অ্যাক্সেসিবিলিটি ক্যাটাগরি — VoiceOver, Dynamic Type, Voice Control, Reduce Motion, Reduce Transparency, Sufficient Contrast, এবং Differentiate Without Color — সবগুলোতেই ১০০% অ্যাক্সেসিবিলিটি কভারেজ রয়েছে। ৩.৫" SE থেকে ৬.৯" Pro Max পর্যন্ত প্রতিটি iPhone-এ, ৯.৭" থেকে ১৩" পর্যন্ত প্রতিটি iPad-এ, এবং Catalyst-এর মাধ্যমে Mac®-এ নেটিভভাবে চলে। 3D বোর্ড RealityKit-এ ফিজিক্যালি-বেসড ম্যাটেরিয়াল দিয়ে রেন্ডার করা হয়েছে যেগুলো আসল কাঠ আর পাথরের মতো আলো ধরে রাখে। সরলতা বা ব্যাটারি লাইফের জন্য একটি পরিষ্কার 2D মোডও আছে।
ডেভেলপমেন্ট প্রক্রিয়ার বাইরে কেউ এখনও জানে না এটার অস্তিত্ব আছে। কোনো প্রেস কভারেজ নেই, কোনো কমিউনিটি সচেতনতা নেই, কোনো এক্সটার্নাল বেটা টেস্টার নেই। এই ব্লগ পোস্টটি, এক অর্থে, প্রথমবারের মতো প্রকাশ্যে বলা।
এরপর কী
সবচেয়ে বড় অগ্রাধিকার হলো সত্যিকারের অ্যাক্সেসিবিলিটি প্রয়োজন আছে এমন বেটা টেস্টার খোঁজা — দৃষ্টিহীন খেলোয়াড়, কম দৃষ্টিশক্তির মানুষ, মোটর সমস্যায় আক্রান্ত ব্যক্তিরা। অ্যাপটা Apple-এর স্ট্যান্ডার্ড মেনে তৈরি করা হয়েছে, কিন্তু স্ট্যান্ডার্ড শুধু শুরু। আমার দরকার সত্যিকারের মানুষ যারা বলবেন কী কাজ করছে, কী করছে না, আর কী আমি ভাবিইনি। তাদের খুঁজে পাওয়া ইউনিকর্ন খোঁজার মতো হবে, কিন্তু আমি হাল ছাড়ব না। সবাইকে অন্তর্ভুক্ত করতে হবে।
যদি Goban3D চেষ্টা করতে চান, অথবা এমন কাউকে চেনেন যিনি একটি অ্যাক্সেসিবল Go অ্যাপ থেকে উপকৃত হবেন, আমি সেটা জানতে চাই। "Beta Tester" সাবজেক্ট লাইন দিয়ে support@goban3d.com-এ একটা ইমেল পাঠান এবং আপনার iPhone, iPad, বা Mac-এর Apple ID ইমেল ঠিকানা দিন। শীঘ্রই একটা TestFlight® আমন্ত্রণ পাবেন।
এটা আমার জীবনে করা সবচেয়ে কঠিন এবং সবচেয়ে পুরস্কারদায়ক কাজ। বিশ্ববিদ্যালয়ের ফ্ল্যাটে এক টুকরো কাঠ থেকে App Store পর্যন্ত — বিশ বছর লেগেছে, কিন্তু পৌঁছে গেছি।