خانه
جستجو
Close this search box.
جستجو
برنامه های کامپیوتری چگونه دسترسی پذیر (accessible) می شوند؟

سلام به دوستان عزیزم.

من در طول سالیان گذشته از بچه های نابینا و کم بینا دور بودم ولی هر وقت ارتباط داشتم یه کسی ازم سؤالی پرسیده که مثلا فلان برنامه رو چه طور accessible کنیم و یا خواسته که من براش یه برنامه رو accessible کنم.

توی این پست می خوام راجع به فرایند این کار توضیح بدم و بگم چه برنامه هایی رو چه قدر می شه accessible کرد. قبل از توضیحات بیشتر باید بگم که من در این زمینه تخصص عمیقی ندارم و به شکل خیلی خیلی کمی با این مسأله سر و کار داشتم. در حد ابتدایی ده سال پیش سعی کردم script های مربوط به jaws رو بنویسم و بعد ها هم کم و بیش با این مسأله سر و کار داشتم. من در مورد سیستم های accessiblity در موبایل چیزی نمی دونم و توضیحاتم برای windows هست ولی اون سیستم عامل ها هم باید مکانیزم هایی شبیه به ویندوز داشته باشند و البته قطعا محدودیت های بیشتری رو سر راه شما می ذارند. من از هیچ screen reader موبایلی مطلع نیستم که قابلیت scripting داشته باشه.

در سیستم های عامل قابلیت هایی برای قابل دسترس کردن برنامه ها وجود داره. این تکنولوژی ها توضیحات اضافه در باره المان های گرافیکی کنترل ها رو در اختیار برنامه نویس می ذارند تا بتونه در screen reader یا screen magnifier با استفاده از اون ها کاربر نابینا یا کم بینا رو از همه اطلاعات موجود با خبر کنه. در ویندوز های قدیمیتر یک تکنولوژی به نام MSAA وجود داشت که اطلاعات accessibility برنامه ها رو در اختیار ما می ذاشت و در ویندوز های جدیدتر و تکنولوژی های جدید رابط کاربری سیستمی به نام UI Automation یا Iaccessible 2 این کار رو می کنه. چند لینک مربوط رو در زیر گذاشتم.
https://www.microsoft.com/en-us/accessibilityhttps://docs.microsoft.com/en-us/dotnet/framework/ui-automation/https:msdn.microsoft.com/accessibility/

برنامه هایی که با سیستم رابط کاربری یک سیستم عامل خاص مثل windows نوشته می شند معمولا به شکل خودکار پشتیبانی خوبی از accessibility انجام می دن. برای بهتر قابل دسترس کردنشون ممکنه مثلا screen reader کلید هایی تعریف کنه که اطلاعاتی در جاهای مختلف صفحه رو براتون بخونه. مثلا وقتی وارد یه خونه تو excel می شید، بهتون می گه مختصاتش چی هست. کار دیگه ای که انجام می دن اینه که اگه بخش هایی از برنامه با keyboard راحت قابل دسترسی نباشه، برنامه screen reader می تونه کارهای با mouse رو به شکل خودکار انجام بده و مثلا روی یک دکمه کلیک کنه یا یک پنجره رو فعال کنه. این کار ها معمولا با script انجام می شه. امکانات جانبی که برای انجام این کارها در اختیار شما قرار می گیره این هست که مثلا با دونستن متن یا اسم یا شناسه یک control (اجزای داخل برنامه مثل دکمه ها و کادر های متن و … کنترل هستند) می تونید جای اون رو در صفحه بگیرید و ماوس رو ببرید روش و …

برنامه های screen reader یا magnifier معمولا از امکانات دیگه سیستم عامل که مستقیم به accessibility مربوط نیست هم برای این کار استفاده می کنند و سعی می کنند تا جای ممکن امکانات اضافه به شما بدن. مثلا JAWS حد اقل اون قدیما یه درایور گرافیک مجازی برای خودش می ساخت تا بتونه مقداری اطلاعات اضافه از برنامه ها رو طبق چیزی که برای نمایش به کارت گرافیک ارسال می شه بگیره. همچنین از تکنولوژی COM (که توضیحش در این جا نمی گنجه) و … هم برای یافتن روشی برای کسب اطلاعات راجع به وضعیت فعلی برنامه ها استفاده می کرد. اگه درست یادم باشه window eyes هم همین طور هست و NVDA هم حد اقل از تکنولوژی های خود سیستم عامل برای accessibility استفاده می کنه و کمی تکنولوژی جانبی هم داره.

برنامه هایی که با این تکنولوژی ها accessible تر می شند معمولا بدون کار اضافه هم تا حد خوبی قابل استفاده هستند. برنامه های دیگری وجود دارند که با تکنولوژی هایی نوشته می شند که رابط کاربری رو برای چند سیستم عامل مثل ویندوز و لینوکس و مک و … با استفاده از یک کتابخانه خاص این کار تولید می کنه. این برنامه ها از تکنولوژی هایی مثل QT و … برای این کار استفاده می کنند که اطلاعات accessibility رو به شکل خاص خود در اختیار برنامه نویسان می گذارند.
http://doc.qt.io/qt-5/accessible.html
در برنامه های javaی هم تکنولوژی به نام java access bridge وجود داشت که این کار را می کرد و ممکن است امروزه به چیز دیگری تغییر کرده باشد. اگر برنامه ای که از آن استفاده می کنید از سیستم های رابط کاربری غیر بومی سیستم عامل ها استفاده می کند، سازندگان برنامه باید زحمت بیشتری برای این کار بکشند و عموما برنامه های این چنینی خیلی accessible نیستند. یکی دیگر از دلایل این موضوع آن است که برخی از این برنامه ها برای به دست آوردن ظاهری یک سان در سیستم عامل های مختلف معمولا از کنترل های سفارشی استفاده می کنند و این کنترل ها ممکن است accessible نباشند. تلگرام برای مثال از QT استفاده می کند و برای همه سیستم عامل ها روی کامپیوتر رابط کاربری تولید می کند. معمولا بهترین راه قابل دسترس کردن این برنامه ها درخواست از سازندگان آن ها می باشد. در برخی کشور ها مثل آمریکا طبق قانون همه باید برنامه هایشان را accessible کنند ولی خیلی از سازندگان کوچکتر ممکن است به علت نداشتن کاربران زیاد نیازمند به این قابلیت آن را در اولویت پایینی قرار دهند. حتی خود windows 10 هم در نسخه های اولیه چندان accessible نبود که البته خیلی بهتر شده ولی همچنان برنامه های روی windows store خیلی خوب با magnifier کار نمی کنند و حتی خود edge هم گاهی مشکلاتی دارد.

نکته دیگری که باید در نظر بگیرید این است که گاهی accessible کردن برنامه فراتر از خواندن جای خاصی از صفحه می رود و یا شما به چیزی بیش از چند کلیک برای فعال کردن یک کنترل نیاز دارید. در این شرایط باید UI یا همان رابط گرافیکی برنامه تغییر کند و اطلاعات accessibility را در اختیار سیستم عامل بگذارد که کار کمی نیست و مثلا قابل دسترس کردن کامل بسته ای مثل Open office کاری نیست که یک نفر در یک ماه انجام دهد و به تجربه و زمان زیادی و شناختن کد برنامه open office نیاز دارد. البته open office نسبتا شرایط خیلی بدی ندارد و آن را به عنوان مثال آوردم.

در مورد وب سایت ها هم قوانینی شبیه حاکم است. یک سری تگ html وجود دارند که باید تولید کنندگان سایت در صفحه قرار دهند تا screen reader ها بهتر بتوانند اطلاعات را خوانده و در سایت گردش کنند.

در باره magnifier ها پشتیبانی کمتری لازم است اما به دلیل کمتر بودن تعداد کاربرهایشان گاهی یک برنامه از screen reader ها پشتیبانی خوبی دارد ولی از magnifier نه. تنها اشکالی که magnifier ممکن است با آن رو به رو باشد این است که نفهمد با تغییر مکان فعال در پنجره باید کجا را نشان دهد. مثلا وقتی شما متن تایپ می کنید دنبال متن تایپ شده حرکت نمی کند.

دسته دیگری از برنامه ها هستند که کل UIشان را خودشان به شکل سفارشی می نویسند و در این شرایط هم در خیلی موارد شما پشتیبانی خاصی برای accessibility ندارید. بیشتر این برنامه ها ابزارهای طراحی سه بعدی یا game engine ها هستند که معمولا برای نابینایان کاربرد زیادی ندارند. البته من دوستی در ایتالیا داشتم که بیناییش را از دست داد و از من خواست unity را برایش accessible کنم و هزینه را دریافت کنم. من بخش کوچکی از کار را به شکل دوستانه برایش انجام دادم و به شکل مستقیم اطلاعات متنی انتخاب شده را به NVDA ارسال می کردم و این گونه nvda مثلا نام فایل های انتخاب شده را می خواند ولی برای انجام کارهای پیشرفته ممکن بود به بنبست بخورم و نیاز به اطلاعات اضافه از رابط کاربر یونیتی داشته باشم که به علت نداشتن وقت از او خواستم با افراد دیگری این کار را دنبال کند.

امیدوارم این مطلب مفید بوده باشد. باید خدمت دوستان بگم که بنده قصد یا توانایی کار روی accessible کردن برنامه ها را ندارم و تخصصم هم در زمینه دیگری می باشد و لطفا درخواست انجام این کار را در کامنت ها ارسال نفرمایید ولی اگر سوال خاصی داشتید که لینک های درون صفحه پاسخ نمی داد از من بپرسید. سپاس

۱۶ دیدگاه دربارهٔ «برنامه های کامپیوتری چگونه دسترسی پذیر (accessible) می شوند؟»

درود. مرسی از پست. راستی پس یه سری هم به این دو لینکی که واست میذارم بزن, واس بیشتر کردن اطلاعاتت تو این زمینه خوبند.
http://mnsi.ir/fa/index.php/papers/231-article23
استانداردهایی برای مناسب سازی برنامه ها برای نابینایان و کم بینایان
http://mnsi.ir/fa/index.php/papers/230-article22
چاکریم. ارادت.

سلام.
تو پست قبلیتون براتون لینک سایت برنامه sumatra رو گذاشتم.
مشکلش از کدوم نوع برنامه هاست و کدوم برنامه نویسها با چه سطح تخصصی میتونن دسترسپذیرش کنن؟
libreoffice هم که مشکلات زیادی داره برای من مشکلش خوندن و ویرایش متون دارای اعرابه و بعدم پشتیبانی نکردن sayAll.

دیدگاهتان را بنویسید