İçeriğe geç
academia.sh

Ders 07 / 27

Erişilebilirlik Standartları

Erişilebilirliği ölçülebilir kılan dört ilke, ölçüt numaralarının yapısı, uygunluk düzeylerinin bağlaç kuralı ve uygunluğun sayfa değil süreç ölçeğinde tanımlı olması.

İçindekiler

Başarım bu noktada ölçülebilir bir bütçeye bağlandı: her ölçüte bir eşik yazıldı, eşiği aşan değişiklik bir gerileme sayıldı, gerileme yayından önce yakalandı. Bu disiplinin değeri kararı tartışmadan çıkarıp ölçüme taşımasıydı — “sayfa hızlı mı” sorusunun yerini “hangi ölçüt hangi eşiği aşıyor” sorusu aldı.

Aynı disiplin ikinci bir kalite ekseninde gerekir. Bir arayüzün kullanılabilir olup olmadığı, gören bir kullanıcının fareyle denediği bir izlenim olarak bırakılırsa ölçülemez; ölçülemeyen şey gerilediğinde fark edilmez. Sorunun yanıtı bu derste kurulacak yapıdadır: kullanılabilirlik, sayılabilir ve doğru–yanlış olarak sınanabilir ölçütlere bağlanır.

Dört İlke

Erişilebilirlik ölçütleri dört ilke altında toplanır. İlkeler ölçüt değildir; sınanamazlar. Ölçütleri gruplayan ve her birinin hangi soruya yanıt verdiğini söyleyen çerçevedir.

Algılanabilirlik (perceivable). İçerik ve arayüz bileşenleri, kullanıcının algılayabileceği biçimde sunulmalıdır. Bir bilgi yalnızca tek bir duyuya bağlıysa o duyuyu kullanamayan kullanıcı için yoktur. Görselin alternatif metni, videonun altyazısı, rengin tek taşıyıcı olmaması ve metnin karşıtlık eşiği bu ilkeye girer.

Çalıştırılabilirlik (operable). Arayüz bileşenleri ve gezinme kullanılabilir olmalıdır. Buradaki ölçüt kullanıcının bilgiye ulaşması değil, arayüzü işletebilmesidir: klavyeyle her denetime erişmek, girdiği yerden çıkabilmek, odağın nerede olduğunu görmek, yeterli zamana sahip olmak.

Anlaşılabilirlik (understandable). Bilgi ve arayüzün işleyişi anlaşılır olmalıdır. Dil bildirimi, öngörülebilir davranış, hataların tanımlanması ve düzeltme önerisi bu ilkededir. Bir form alanı odak aldığında sayfanın kendiliğinden değişmesi, çalışan ama anlaşılmayan bir arayüz üretir.

Sağlamlık (robust). İçerik, yardımcı teknolojiler dahil olmak üzere çok çeşitli kullanıcı aracıyla yorumlanabilecek kadar sağlam olmalıdır. Bu ilke ürettiğimiz işaretlemenin belirli bir gerçekleştirimin davranışına değil, tanımlı karşılıklara dayanmasını ister. Bir bileşenin adının, rolünün ve değerinin program yoluyla okunabilir olması bu ilkenin ölçütüdür.

Dört ilkenin sırası rastgele değildir ve bir bağımlılık zinciri kurar: algılanamayan bir şey çalıştırılamaz, çalıştırılamayan bir şeyin anlaşılırlığı sorulmaz, hiçbiri sağlam biçimde bildirilmemişse üçü de yardımcı teknolojiye ulaşmaz.

Ölçüt Numarası Ne Söyler

Her ölçütün üç parçalı bir numarası vardır ve numara konuşulan şeyi tek başına konumlandırır.

İlk sayı ilkedir: 1 algılanabilirlik, 2 çalıştırılabilirlik, 3 anlaşılabilirlik, 4 sağlamlık. İkinci sayı ilkenin altındaki yönergedir; yönergeler de sınanamaz, ölçütleri konuya göre toplar (2.4 gezinilebilirlik, 3.3 girdi yardımı gibi). Üçüncü sayı o yönergenin altındaki başarı ölçütüdür ve sınanabilir tek birim odur.

Böylece 2.4.7 numarası okunduğunda, ölçütün adı bilinmese bile çalıştırılabilirlik ilkesinin gezinme yönergesine ait olduğu bilinir. Numaralar yayımlandıktan sonra yeniden kullanılmaz: bir ölçüt eklendiğinde yeni numara alır, var olan numaraların anlamı değişmez. Bu, iki kişinin aynı numaradan aynı şeyi anlamasını sağlar ve hata kayıtlarında ölçüt numarasının yazılmasını değerli kılar.

Ölçütlerin ortak özelliği sınanabilir olmalarıdır: her biri, bir içerik parçası için doğru ya da yanlış olarak yanıtlanabilecek biçimde yazılmıştır. “Sayfa erişilebilir olmalı” bir ölçüt değildir; “metin ile arka planı arasındaki kontrast oranı en az 4.5:1 olmalı” ölçüttür.

Uygunluk Düzeyleri

Ölçütler üç uygunluk düzeyine dağıtılır: A, AA ve AAA. Düzey, ölçütün önemini değil karşılanma maliyetini ve kapsam genişliğini anlatır. A düzeyi karşılanmadığında kullanıcı grupları arayüzü hiç kullanamaz; AA düzeyi kullanımı ciddi biçimde zorlaştıran engelleri kaldırır; AAA düzeyi her içerik türüne uygulanamayabilecek ek gereklerdir.

Düzeyler birikimlidir ve bağlaç kuralıyla değerlendirilir: AA uygunluğu, bütün A ve bütün AA ölçütlerinin karşılanması demektir. Tek bir A ölçütü kalırsa yüzey hiçbir düzeye uygun değildir. Aşağıdaki betik bu kuralı Kuzey Yamaç Ölçüm İstasyonu arayüzünün üç yüzeyi üzerinde uygular.

// uygunluk.mjs — olcut numarasindan ilke turetimi ve uygunluk duzeyinin hesabi

const ILKE = { 1: "algilanabilirlik", 2: "calistirilabilirlik", 3: "anlasilabilirlik", 4: "saglamlik" };

const OLCUT = {
  "1.1.1": ["Metin Olmayan İçerik", "A"],
  "1.3.1": ["Bilgi ve İlişkiler", "A"],
  "1.4.1": ["Renk Kullanımı", "A"],
  "1.4.3": ["Kontrast (En Az)", "AA"],
  "1.4.6": ["Kontrast (Gelişmiş)", "AAA"],
  "1.4.11": ["Metin Dışı Kontrast", "AA"],
  "2.1.1": ["Klavye", "A"],
  "2.1.2": ["Klavye Tuzağı Yok", "A"],
  "2.4.1": ["Blokları Atlama", "A"],
  "2.4.3": ["Odak Sırası", "A"],
  "2.4.7": ["Odak Görünür", "AA"],
  "2.5.3": ["Addaki Etiket", "A"],
  "3.3.1": ["Hata Tanımlama", "A"],
  "3.3.2": ["Etiketler veya Yönergeler", "A"],
  "3.3.3": ["Hata Önerisi", "AA"],
  "3.3.5": ["Yardım", "AAA"],
  "4.1.2": ["Ad, Rol, Değer", "A"],
  "4.1.3": ["Durum İletileri", "AA"],
};

const DUZEYLER = ["A", "AA", "AAA"];

// Kuzey Yamac istasyonunun uc yuzeyi: "gecti" | "kaldi" | "uygulanmaz"
const KALAN = {
  "olcum-listesi": ["1.4.3", "1.4.6", "4.1.3"],
  "olcum-girisi": ["1.4.6", "3.3.5", "4.1.2"],
  "gonderim-onayi": ["3.3.5"],
};
const UYGULANMAZ = {
  "olcum-listesi": ["3.3.1", "3.3.2", "3.3.3"],
  "olcum-girisi": [],
  "gonderim-onayi": ["3.3.1", "3.3.2", "3.3.3"],
};

const sonuclar = (yuzey) =>
  Object.fromEntries(
    Object.keys(OLCUT).map((n) => [
      n,
      KALAN[yuzey].includes(n) ? "kaldi" : UYGULANMAZ[yuzey].includes(n) ? "uygulanmaz" : "gecti",
    ]),
  );

const duzeyKarsilandi = (s, duzey) =>
  Object.entries(OLCUT).filter(([, [, d]]) => d === duzey).every(([n]) => s[n] !== "kaldi");

function uygunlukDuzeyi(s) {
  let sonuc = "uygun degil";
  for (const d of DUZEYLER) {
    if (!duzeyKarsilandi(s, d)) break;
    sonuc = d;
  }
  return sonuc;
}

console.log("yuzey            gecti  kaldi  uygulanmaz  yuzde  uygunluk");
for (const yuzey of Object.keys(KALAN)) {
  const s = sonuclar(yuzey);
  const d = Object.values(s);
  const gecti = d.filter((v) => v === "gecti").length;
  const kaldi = d.filter((v) => v === "kaldi").length;
  const yok = d.filter((v) => v === "uygulanmaz").length;
  console.log(
    `${yuzey.padEnd(16)} ${String(gecti).padStart(5)} ${String(kaldi).padStart(6)} ${String(yok).padStart(11)} ` +
      `${((100 * gecti) / (gecti + kaldi)).toFixed(1).padStart(6)} ${uygunlukDuzeyi(s).padStart(11)}`,
  );
}

console.log("\nkalan olcutler:");
for (const yuzey of Object.keys(KALAN)) {
  for (const n of KALAN[yuzey]) {
    const [ad, duzey] = OLCUT[n];
    console.log(`  ${yuzey.padEnd(16)} ${n.padEnd(6)} ${duzey.padEnd(4)} ${ILKE[n[0]].padEnd(20)} ${ad}`);
  }
}

const SUREC = ["olcum-listesi", "olcum-girisi", "gonderim-onayi"];
const enDusuk = SUREC
  .map((y) => uygunlukDuzeyi(sonuclar(y)))
  .reduce((a, b) => (DUZEYLER.indexOf(a) < DUZEYLER.indexOf(b) ? a : b));
console.log(`\nsurec: ${SUREC.join(" -> ")}`);
console.log(`  surecin uygunluk duzeyi: ${enDusuk}`);

const tum = SUREC.flatMap((y) => Object.values(sonuclar(y)));
const g = tum.filter((v) => v === "gecti").length;
const k = tum.filter((v) => v === "kaldi").length;
console.log(`  olcut basari yuzdesi: ${((100 * g) / (g + k)).toFixed(1)}`);
console.log(`  AA icin denetlenen olcut sayisi: ${Object.values(OLCUT).filter(([, d]) => d !== "AAA").length}`);
yuzey            gecti  kaldi  uygulanmaz  yuzde  uygunluk
olcum-listesi       12      3           3   80.0           A
olcum-girisi        15      3           0   83.3 uygun degil
gonderim-onayi      14      1           3   93.3          AA

kalan olcutler:
  olcum-listesi    1.4.3  AA   algilanabilirlik     Kontrast (En Az)
  olcum-listesi    1.4.6  AAA  algilanabilirlik     Kontrast (Gelişmiş)
  olcum-listesi    4.1.3  AA   saglamlik            Durum İletileri
  olcum-girisi     1.4.6  AAA  algilanabilirlik     Kontrast (Gelişmiş)
  olcum-girisi     3.3.5  AAA  anlasilabilirlik     Yardım
  olcum-girisi     4.1.2  A    saglamlik            Ad, Rol, Değer
  gonderim-onayi   3.3.5  AAA  anlasilabilirlik     Yardım

surec: olcum-listesi -> olcum-girisi -> gonderim-onayi
  surecin uygunluk duzeyi: uygun degil
  olcut basari yuzdesi: 85.4
  AA icin denetlenen olcut sayisi: 16

Üç satır üç ayrı durumu gösteriyor. Ölçüm listesi bütün A ölçütlerini karşılıyor ama iki AA ölçütünü kaçırıyor; düzeyi A’dır. Ölçüm girişi on beş ölçüt geçmesine rağmen tek bir A ölçütünde (4.1.2 Ad, Rol, Değer) kaldığı için hiçbir düzeye uygun değildir. Gönderim onayı yalnızca bir AAA ölçütünü kaçırıyor ve AA düzeyindedir.

Uygulanmaz sütunu bir muafiyet değildir. Gönderim onayı sayfasında form bulunmadığı için hata ölçütleri o yüzeyde değerlendirilmez; sayfaya bir form eklendiği anda üç ölçüt yeniden kapsama girer. Uygulanmaz sonucu, ölçütün o içerikte karşılığı olmamasıdır; karşılığı olan ölçütün atlanması değildir.

Uygunluk Sayfanın Değil Sürecin Özelliğidir

Betiğin son bölümü uygunluğun neden yüzey yüzey bildirilemeyeceğini gösteriyor. Ölçüm bildirimi üç yüzeyden geçen bir süreçtir: kullanıcı listeden bir kaydı seçer, giriş formunu doldurur, onay yüzeyinde sonucu görür. Zincirin bir halkası kırıldığında süreç tamamlanamaz; bu nedenle sürecin uygunluk düzeyi halkaların en düşüğüdür.

Bu kuralın üç uzantısı vardır ve üçü de uygulamada karar değiştirir.

Sayfanın tamamı sayılır. Bir yüzeyin uygunluğu, o yüzeyin bir bölümünün değil tamamının uygunluğudur. Sayfanın bir köşesindeki üçüncü taraf içeriğin bileşeni de aynı kapsamdadır.

Bir süreç bütün olarak sayılır. Yalnızca listeleme yüzeyinin uygun olması, ölçüm bildirme sürecinin uygun olduğu anlamına gelmez.

Uygun olmayan içerik engel çıkarmamalıdır. Bir bölüm uygunluk kapsamı dışında bırakılsa bile, sayfanın geri kalanının kullanımını engellememelidir. Odağı yakalayan, kendiliğinden ses çalan ya da klavye dolaşımını kilitleyen bir bileşen, kapsam dışı sayılarak temizlenemez.

Bir dördüncü koşul teknoloji seçimine bakar: kullanılan işaretleme ve betikler, yardımcı teknolojilerin desteklediği biçimde kullanılmalıdır. Bu koşul, bir bileşenin tanımlı bir karşılığı olmayan bir yolla bildirilmesini uygunluk dışında bırakır — bileşen bir gerçekleştirimde çalışsa bile.

Bütçe ile Ölçütün Farkı

Başarım bütçesiyle uygunluk kuralı arasındaki fark, çıktının son satırlarında görünür. Üç yüzeyde ölçütlerin yüzde 85.4’ü geçiyor; buna rağmen sürecin uygunluk düzeyi yok. Bu oran hiçbir kararı beslemez.

Nedeni iki ölçünün matematiksel yapısının farklı olmasıdır. Başarım ölçütleri bir dağılım üzerinde tanımlanır: bir yükleme süresi ölçütü, kullanıcıların yüzde 75’inde belirli bir eşiğin altında kalmayı ister ve kalan yüzde 25 bilinçli olarak kabul edilir. Erişilebilirlik ölçütleri ise bir bağlaçtır: bütün ölçütler karşılanır ya da uygunluk yoktur. Ortalama alınmaz, çünkü kullanıcı ortalama bir sayfada gezmez — kullanamadığı tek yüzeyde durur.

Bu, erişilebilirliğin bütçelenemeyeceği anlamına gelmez; bütçenin biçimi değişir. Başarımda bütçe bir eşik listesidir, erişilebilirlikte bir sıfır sayımıdır: yayına çıkan sürümde karşılanmamış A ve AA ölçüt sayısı sıfır olmalıdır. Bilinen ve henüz düzeltilmemiş kusurlar, ölçüt numarasıyla, etkilenen yüzeyle ve düzeltme tarihiyle açık bir listede tutulur. Gerileme tanımı da aynıdır: dün geçen bir ölçüt bugün kalıyorsa gerileme vardır.

Özet

  • Erişilebilirlik ölçütleri dört ilke altında toplanır: algılanabilirlik, çalıştırılabilirlik, anlaşılabilirlik ve sağlamlık. İlkeler sınanmaz, ölçütleri gruplar.
  • Ölçüt numarasının ilk sayısı ilkeyi, ikincisi yönergeyi, üçüncüsü sınanabilir ölçütü verir; numaralar yeniden kullanılmaz ve hata kayıtlarında ortak bir dil sağlar.
  • Uygunluk düzeyleri birikimlidir: AA uygunluğu bütün A ve AA ölçütlerinin karşılanmasıdır; tek bir A ölçütü kaldığında yüzey hiçbir düzeye uygun değildir.
  • Uygunluk yüzey ölçeğinde değil süreç ölçeğinde anlamlıdır; sayfanın tamamı sayılır, süreç bütün olarak sayılır ve kapsam dışı içerik geri kalanı engellememelidir.
  • Başarım bütçesi bir dağılım eşiğidir, erişilebilirlik uygunluğu bir bağlaçtır; ölçüt başarı yüzdesi karar üretmez, karşılanmamış A ve AA ölçüt sayısı üretir.

Sonraki Adım

Bu ders ölçütlerin çerçevesini kurdu ama ölçütlerin denetlediği yapının ne olduğunu açmadı. 4.1.2 ölçütü bir bileşenin adının, rolünün ve değerinin program yoluyla okunabilmesini istiyor; bu üçlü nerede durur, kim üretir? Yanıt Anlamsal İşaretleme ve Medya konusunda tanıtılan erişilebilirlik ağacındadır: tarayıcı belge ağacından ikinci bir ağaç türetir ve yardımcı teknolojiler o ağacı okur. Sonraki ders bu türetmeyi kural düzeyinde ele alır, hangi ögenin hangi rolü ürettiğini ve bir ögenin erişilebilir adının hangi sırayla hesaplandığını gösterir.

İlerlemeni kaydetmek ve not almak için Giriş yap

Notlarım

Not almak için giriş yapmalısın.

Aramak için yazmaya başlayın.

↑↓ Esc gezin · aç · kapat