والله يا جماعة، ما بنسى هداك اليوم. كنا في المكتب، مبسوطين وفرحانين بإطلاق النسخة الجديدة من تطبيقنا. تصميم عصري، ألوان “تريندي”، وأيقونات مرسومة باليد… شغل، زي ما بنقول، “بالصلاة على النبي”. الأرقام كانت في صعود، والمراجعات الإيجابية تتوالى، وشعور الفخر كان يملأ قلوب الفريق.
إلى أن وصلت تلك الرسالة عبر البريد الإلكتروني. لم تكن شكوى من خطأ تقني، ولا اقتراح لميزة جديدة. كانت رسالة من شاب اسمه “محمد”، مستخدم كفيف. كتب محمد بأسلوب هادئ ومؤدب كيف أنه تحمس لتجربة تطبيقنا بعد أن سمع عنه الكثير، لكنه اصطدم بحائط. قال إن قارئ الشاشة (Screen Reader) الذي يعتمد عليه لتصفح هاتفه كان يخبره بعبارات مثل: “زر غير مسمى”، “صورة”، “زر غير مسمى مرة أخرى”. وصف لنا كيف أن تطبيقنا الجميل كان بالنسبة له مجرد مجموعة من الألغاز الصامتة، وكيف شعر بالإحباط والاستبعاد. ختم رسالته بجملة ما زالت ترن في أذني حتى اليوم: “تطبيقكم جميل، لكنه ليس لي”.
تلك الرسالة كانت كفيلة بإسكات ضجيج الاحتفال في المكتب. لأول مرة، أدركنا أننا بنينا بيتاً جميلاً ولكننا نسينا أن نضع له مدخلاً. بنينا حصناً منيعاً، ليس أمام المخترقين، بل أمام شريحة مهمة من مجتمعنا. يومها، بدأنا رحلة طويلة ومجزية، رحلة فهم وتطبيق معايير الوصول الرقمي (Accessibility).
ما هي “إمكانية الوصول” (Accessibility)؟ وليش هي “مش قصة”؟
ببساطة، إمكانية الوصول (تُختصر أحياناً بـ a11y، حيث الرقم 11 يمثل عدد الحروف بين a و y) هي ممارسة تصميم وبناء المنتجات الرقمية (مواقع، تطبيقات، إلخ) بحيث يمكن للجميع استخدامها، بغض النظر عن قدراتهم الجسدية أو العقلية أو الظروف المحيطة بهم.
هذا “الجميع” يشمل:
- الأشخاص الذين يعانون من إعاقات بصرية (عمى، ضعف بصر، عمى ألوان).
- الأشخاص الذين يعانون من إعاقات سمعية.
- الأشخاص الذين يعانون من إعاقات حركية (صعوبة في استخدام الفأرة أو الشاشات اللمسية).
- الأشخاص الذين يعانون من إعاقات إدراكية (مثل عسر القراءة أو صعوبات التعلم).
ولكن الأمر أوسع من ذلك. إمكانية الوصول تفيد الجميع! هل جربت أن تستخدم هاتفك تحت أشعة الشمس الساطعة؟ هنا تظهر أهمية تباين الألوان العالي. هل كنت تحمل أكياس التسوق بيد وتحاول فتح تطبيق باليد الأخرى؟ هنا تظهر أهمية التصميم الذي يسهل استخدامه بيد واحدة. هل كنت في مكان صاخب وشاهدت فيديو بدون سماعات؟ هنا تظهر أهمية وجود شروحات نصية (Captions).
إمكانية الوصول ليست ميزة إضافية، بل هي أساس تجربة المستخدم الجيدة. هي الفرق بين منتج يخدم فئة مختارة، ومنتج يرحب بالجميع دون استثناء.
خطوات عملية نحو تطبيق شامل للجميع
بعد صدمة رسالة محمد، شكلنا فريق عمل صغيراً، ومهمته كانت واضحة: تفكيك الحصن الذي بنيناه وإعادة بنائه ليكون بيتاً مفتوح الأبواب. وهذه بعض الدروس العملية التي تعلمناها، مقسمة بين المصممين والمطورين.
للمصممين: أنتم مهندسو التجربة الأول
التصميم الشامل يبدأ من مرحلة الرسم الأولي (Wireframe). إليكم بعض النقاط التي أصبحنا نعتبرها مقدسة:
- تباين الألوان ليس رفاهية: استخدموا أدوات فحص تباين الألوان (مثل Adobe Color Contrast Checker أو WebAIM’s tool) للتأكد من أن نسبة التباين بين لون النص ولون الخلفية لا تقل عن 4.5:1 للنص العادي. هذا يضمن القراءة المريحة ليس فقط لضعاف البصر، بل للجميع.
- لا تعتمدوا على اللون وحده: لا تستخدموا اللون كوسيلة وحيدة لنقل المعلومة. مثلاً، عند عرض رسالة خطأ، لا تكتفوا بتغيير لون حقل الإدخال إلى الأحمر، بل أضيفوا أيقونة ونصاً واضحاً يشرح الخطأ. هذا يساعد المصابين بعمى الألوان والمستخدمين العاديين على حد سواء.
- وضوح الخطوط والأحجام: اختاروا خطوطاً واضحة وسهلة القراءة، وتأكدوا من أن حجم الخط الافتراضي ليس صغيراً جداً. الأهم من ذلك، اسمحوا للمستخدم بتكبير وتصغير النص عبر إعدادات نظام التشغيل دون أن “ينكسر” التصميم.
- تصميم النماذج (Forms) بذكاء: كل حقل إدخال يجب أن يكون له تسمية (Label) واضحة ومرئية دائماً، وليس فقط نصاً مؤقتاً (Placeholder) يختفي عند الكتابة.
للمطورين: الكود يتحدث لغة لا نراها
دور المطور هو ترجمة التصميم الجميل إلى واقع وظيفي. وهنا، الكود الذي تكتبه يمكن أن يكون همساً مفهوماً لقارئ الشاشة، أو صراخاً غير مفهوم.
1. سحر الـ HTML الدلالي (Semantic HTML)
قبل أن تهرع لكتابة <div> لكل شيء، توقف وفكر. الـ HTML يوفر لنا عناصر ذات معنى تساعد المتصفحات وقارئات الشاشة على فهم بنية الصفحة.
مثال سيء (Div-itis):
<div class="header">
<div class="nav">
<div class="nav-item">الرئيسية</div>
<div class="nav-item">من نحن</div>
</div>
</div>
<div class="main-content">...</div>
<div class="button">اضغط هنا</div>
مثال جيد (Semantic):
<header>
<nav>
<ul>
<li><a href="/">الرئيسية</a></li>
<li><a href="/about">من نحن</a></li>
</ul>
</nav>
</header>
<main>...</main>
<button>اضغط هنا</button>
الفرق؟ في المثال الثاني، قارئ الشاشة سيعرف أن هذا <nav> هو قسم التنقل، وأن هذا <button> هو زر قابل للتفاعل، مما يعطي المستخدم سياقاً لا يقدر بثمن.
2. الصور تحتاج إلى صوت: النص البديل (Alt Text)
كل صورة تنقل معلومة يجب أن تحتوي على السمة alt التي تصف محتوى الصورة. هذه كانت إحدى أكبر مشاكلنا التي أشار إليها محمد.
مثال سيء:
<img src="user-avatar.png">
<a href="/settings">
<img src="gear-icon.png">
</a>
قارئ الشاشة سيقول: “صورة”، ثم “رابط، صورة”. لا فائدة ترجى!
مثال جيد:
<!-- صورة زخرفية، يمكن ترك النص البديل فارغاً -->
<img src="decorative-line.png" alt="">
<!-- صورة تنقل معلومة -->
<img src="salah-abdel-salam-avatar.png" alt="صورة المستخدم صلاح عبد السلام">
<!-- صورة كزر أو رابط -->
<a href="/settings">
<img src="gear-icon.png" alt="الإعدادات">
</a>
3. قوة ARIA عند الحاجة
ARIA (Accessible Rich Internet Applications) هي مجموعة من السمات التي يمكنك إضافتها لعناصر HTML لتوفير معلومات إضافية لقارئات الشاشة، خاصة عند بناء مكونات معقدة (مثل القوائم المنسدلة، نوافذ الحوار، إلخ).
لكن تذكر القاعدة الذهبية: No ARIA is better than bad ARIA. لا تستخدمها إلا إذا كنت تعرف ما تفعله. غالباً، استخدام HTML دلالي صحيح يغنيك عنها.
مثال بسيط: زر أيقونة فقط
هذا كان خطأنا الفادح. كان لدينا زر لإغلاق نافذة عبارة عن أيقونة (X) فقط.
<!-- سيء جداً -->
<button>X</button> <!-- قارئ الشاشة سيقرأ "إكس" -->
<!-- أفضل، ولكن يمكن تحسينه -->
<button>
<img src="close.svg" alt="إغلاق">
</button>
<!-- ممتاز باستخدام ARIA -->
<button aria-label="إغلاق النافذة الحالية">
<svg ... aria-hidden="true"></svg> <!-- نخفي الأيقونة عن قارئ الشاشة لأن الزر له تسمية -->
</button>
4. التنقل عبر لوحة المفاتيح
جرب أن تتصفح تطبيقك باستخدام زر Tab فقط. هل يمكنك الوصول إلى كل العناصر التفاعلية (روابط، أزرار، حقول)؟ هل ترى بوضوح أين أنت (Focus Indicator)؟ هل الترتيب منطقي؟ إذا كانت الإجابة “لا” على أي من هذه الأسئلة، فلديك عمل لتقوم به.
الخلاصة: من حصن منيع إلى بيت للجميع
رحلتنا مع إمكانية الوصول لم تنتهِ، فهي عملية مستمرة من التعلم والتحسين. لكن الدرس الأكبر الذي تعلمناه هو أن بناء منتجات شاملة ليس مجرد التزام أخلاقي، بل هو أيضاً قرار ذكي للأعمال. تطبيقنا أصبح أسهل في الاستخدام للجميع، وتوسعت قاعدة مستخدمينا، وحتى أداؤنا في محركات البحث تحسن (نعم، جوجل يحب المواقع الميسّرة!).
رسالة محمد غيرت مسار شركتنا. اليوم، لم نعد نرى إمكانية الوصول كعبء أو قائمة مهام إضافية، بل كجزء لا يتجزأ من هويتنا كصناع ومبدعين. نصيحتي لكل مبرمج ومصمم: لا تنتظروا رسالة مثل رسالة محمد لتتحركوا.
ابدأوا اليوم. افتحوا تطبيقكم، أغلقوا أعينكم، وشغلوا قارئ الشاشة. أو ببساطة، اتركوا الفأرة واستخدموا لوحة المفاتيح فقط. قد تتفاجؤون وتصدمون بما ستكتشفونه. ولكن هذا الاكتشاف هو الخطوة الأولى لبناء منتج لا يقول لأحد “أنت لست مدعواً”.
لنجعل من العالم الرقمي مكاناً أفضل وأكثر شمولاً للجميع. 💪