Dostępność... zacznijmy od początku
02.10.2010 17:33
Każdy autor piszący na temat doskonale mu znany, ma tendencje do pisania w sposób skrótowy, zakładając porównywalną wiedzę czytelników. Ja także popełniłem ten błąd pisząc notatkę na temat dostępności przeglądarek internetowych i dostało mi się za to w komentarzach. Dostało mi się słusznie, bom przecież nie wyjaśnił, o co właściwie mi chodzi. Teraz postaram się naprawić ten błąd, chociaż zapewne popełnię następne. Jednak lubię się uczyć, więc i krytyka jest dla mnie użyteczna. Zacznę zatem od początku i postaram się wyjaśnić, czym jest dostępność
No to w końcu czym jest ta dostępność?
Najbardziej ogólnikowo można powiedzieć, że dostępność to możliwość używania. Kłopot polega na tym, że w języku polskim mamy jedno słowo na dwa pojęcia, które w języku angielskim mają dwa oddzielne słowa i zupełnie inne znaczenia: availability i accessibility. To o tym pierwszym znaczeniu napisał w komentarzu ktoś, że każda przeglądarka jest dostępna, bo można ją pobrać. Ja zaś pisałem w drugim znaczeniu - o możliwości używania.
Accessibility oznacza zatem dostępność wszystkich funkcji, możliwości, zawartości opisywanego obiektu, którym może być samochód, telefon komórkowy, dom lub program komputerowy. Wyobraźmy sobie bowiem osobę bardzo niską, która nie może sięgnąć do pedałów, a zatem samochód jest dla niej dostępny (kupiła go sobie),a jednocześnie nie jest dostępny, bo nie może nim jeździć. Ten brak odpowiedniego słowa jeszcze nie raz będzie sprawiał problem, ale chyba nie ma na to rady. Trzeba przyjąć, że dostępność w tekstach pisanych przeze mnie oznacza accessibility, a nie availability.
Dostępność w technologiach teleinformatycznych oznacza możliwość korzystania z tych technologii. Definicji i opisów wymyślono sporo, więc ja nie zamierzam dokładać własnych. Wygrzebałem ukutą przez starą i poważną firmę z USA i przedstawiam ją poniżej.
Można zatem przyjąć wyjaśnienie zaproponowane przez IBM na ich stronie Accessibility Q&A Accessibility means enabling IT hardware, software and services to be used by more people, either directly or in combination with assistive technology products.I od razu wyjaśnienie, czyn są te tajemniczo brzmiące technologie asystujące: Assistive technology is specialized hardware or software that is used to help increase, maintain or assist the functional capabilities of people with disabilities. It can be any device or technique that assists people in removing or reducing barriers to computing technology and information and enhances their everyday activities. An example of assistive technology is a screen reader, which uses a text-to-speech synthesizer to translate what is displayed on a screen into audible text. Zatem można przyjąć, że w tym rozumieniu dostępność oznacza możliwość korzystania z aplikacji przez osoby używające technologii asystujących.
Technologie asystujące w przypadku systemów operacyjnych i aplikacji uruchamianych pod ich kontrolą oznaczają pewien kolejny interfejs użytkownika. Ten interfejs ma za zadanie przetransformować standardowy interfejs (najczęściej GUI, czyli graficzny interfejs użytkownika) na inną formę, która będzie użyteczna w alternatywny sposób. Zatem najczęściej jej zadaniem jest zamiana obrazu interfejsu na jego dźwiękową lub dotykową reprezentację. Może też oznaczać zmianę sposobu wprowadzania danych, na przykład za pomocą wirtualnej klawiatury bądź rozpoznawania mowy.
Jak się to robi?
Do projektowania dostępnego interfejsu aplikacji można podejść na dwa sposoby: zadbać o dostępność samemu lub powierzyć to zadanie dedykowanym interfejsom programistycznym. Pierwsze podejście nie jest zbyt popularne, ponieważ wymaga od programisty włożenia dużej i - trzeba to wyraźnie powiedzieć - najczęściej niepotrzebnej pracy. W wyniku tego podejścia powstają aplikacje typu selfvoicing, czyli takie, które nie wymagają technologii asystujących. Jednak rzeczywistość jest taka, że niepełnosprawni użytkownicy komputerów najczęściej dysponują swoim własnym oprogramowaniem i niepotrzebne są im takie rozwiązania, a w skrajnych przypadkach mogą im przeszkadzać.
Dlatego preferowanym i dominującym rozwiązaniem jest stosowanie gotowych bibliotek, co daje przynajmniej częściową pewność przygotowania dostępnego interfejsu użytkownika. Firma IBM opracowała nawet IBM software accessibility checklist, gdzie każdy programista może przeczytać najbardziej skondensowane uwagi na temat tworzenia dostępnych aplikacji. Streszczając i nieco ograniczając można przyjąć trzy podstawowe zasady:
1. Każdą funkcję aplikacji można wywołać zarówno za pomocą myszy, jak i klawiatury. 2. Każdy element interfejsu powinien być interpretowalny przez technologie asystujące. 3. Każdy element graficzny powinien mieć swoją etykietę tekstową, a etykieta powinna być z nim powiązana logicznie.
W praktyce
Programowanie interfejsów w ten sposób wydaje się być ograniczające dla autora, ale to tylko pozór. Ogromna większość bibliotek graficznych zawiera w sobie odpowiednie mechanizmy, które tylko czekają na ich wykorzystanie. Bardzo często programiści po prostu nie wiedzą, do czego służą właściwości "label" lub "alt_text" kontrolek i pozostawiają je puste lub wpisują cokolwiek. Podstawowa biblioteka firmy Microsoft jest wyposażona w całą kolekcję narzędzi do uzupełniania interfejsów o brakujące informacje oraz w specjalne narzędzie inspect.exe, którego zadaniem jest testowanie dostępności interfejsu aplikacji. Podobnie jest z bibliotekami Swing i AWT w Jawie oraz we wszystkich nowoczesnych bibliotekach, a kto ciekaw, niechaj w dokumentacji wyszuka rozdział o accessibility i doczyta więcej.
Jednak zaprojektowanie interfejsu zgodnie z zasadami jeszcze wcale nie wystarcza. Trudno byłoby pisać oprogramowanie asystujące dla każdej aplikacji osobno. Dlatego powstała jeszcze jedna rodzina interfejsów pośredniczących, które służą wyłącznie tłumaczeniu zapytań technologii dostępowych skierowanych do GUI, a zwrotnie przekazujących odpowiedzi. W systemie Windows odpowiada za to MSAA (MicroSoft Active Accessibility), a w Linuksie AT‑SPI. Dzięki nim programiści po prostu programują po bożemu, a resztą zajmują się programy specjalistyczne. Może się zatem zdarzyć, że programista w ogóle nie myślał o osobach niepełnosprawnych, a napisał w pełni dostępną aplikację. To się zdarza leniwym programistom, którzy korzystają z gotowych rozwiązań. Prawdziwą zmorą dla niewidomych użytkowników są ambitni i pracowici programiści, którym nie wystarczają standardowe kontrolki i tworzą własne, które - ze swej natury - z interfejsami pośredniczącymi dogadać się nie potrafią. Czasem te problemy da się jakoś ominąć, ale nie zawsze i zazwyczaj praca nie jest efektywna.
A co z treścią?
Ponieważ dyskusję wywołała moja notatka na temat dostępności przeglądarek internetowych, to trzeba jeszcze wspomnieć o dostępności treści. W wypadku wielu aplikacji dostępność samego interfejsu wystarczy, ale są takie, gdzie konieczne staje się udostępnienie zawartości, nad którą pracuje użytkownik. Przykładami mogą być edytory tekstu, arkusze kalkulacyjne, edytory dźwięku, czy wreszcie przeglądarki internetowe. Cóż bowiem użytkownikowi z tego, że może bez problemu wpisać adres strony internetowej lub pozaznaczać odpowiednie opcje w ustawieniach, gdy nie ma dostępu do treści samej strony internetowej. Otóż i na to jest sposób, który został zaproponowany przez wspominany wcześniej interfejs MSAA. Strona internetowa staje się najwyższym poziomem drzewa dokumentu, a pozostałe elementy są odpowiednio interpretowane przez oprogramowanie asystujące. W ten sposób użytkownik wie, że dany fragment tekstu jest łączem, inny grafiką, a jeszcze inny - tabelą. Nie wchodząc w szczegóły, trzeba napisać, że przez lata prac programistów i uwag użytkowników mechanizmy dostępu do strony internetowej udoskonaliły się niewiarygodnie. I wszystko byłoby dobrze, gdyby nie kolejny rodzaj dostępności, o którym już w tym tekście nie będę się rozpisywał, a mianowicie dostępności treści internetowej. Tutaj także wiele zależy od twórców stron internetowych oraz od znajomości pewnych standardów. Tak czy inaczej - ten rodzaj dostępności (treści, a nie interfejsu) musi być zaprogramowany przez autora aplikacji. Dostępność Internet Explorera, Firefoxa i rozwijana obecnie Chrome musi być zaimplementowana na etapie produkcji programu. A że nie jest to już zadanie trywialne, to w niektórych przeglądarkach odpuszczono ją całkowicie lub zrobiono częściowo.
Czy coś wyjaśniłem?
Nadal nie jestem pewien, czy moje wywody są zrozumiałe. Takie rzeczy lepiej pokazywać, niż opisywać, bo wszak jeden obraz wart jest tysiąca słów. Mam jednak nadzieję, że przynajmniej samo pojęcie dostępności będzie już znaczyło coś więcej, niż dostępność pliku instalacyjnego. Chociaż zatem język polski w tym wypadku słabo się sprawdza, to jednak mam nadzieję, że dostępność będzie miała teraz podwójne znaczenie.