Kategoriler
Genel

Ekran okuyucu teknolojisinin gelişimine

Bu yazının büyük bir kısmı öngörülerimden ibaret. Bilgiler ile alakalı ya da fikirleriniz ile ilgili, yorum bölümlünden ulaşmanızı rica ediyorum.

Ekran okuyucu teknolojisine yönelik birkaç bilgi Hatırlayalım isterseniz.

 

Ekran okuyucuların, konuşma sentezlemekten ve braille çıktı üretmezden evvel, bir nesne bulması gerekir. MS dos tarzı sadece yazı ile etkileşim kurulan ara yüzlerin olduğu zamanlarda, o zamanki teknolojinin kısırlığı göz önüne alındığında, oldukça akılcı bir çözüm geliştirdiklerini görebiliriz. Çoğunlukla harici bir konuşma üreteci ile ekran okuyucu yazılımın yada betiğin terminal girdi ve çıktılarını sentezlemesi ve bundan alınan verimin oldukça en azından bu günküne göre yüksek olması yadsınamaz ve doğal bir gerçek. O zaman kolayca tanımlanabilir ve nitelenebilir nesne türü olan metinler, bunun için oldukça uygun. Tek sorun, biraz güçlü bir işlemci ve muhtemelen pahalı olan bir konuşma üretecinin gerekmesi. Bilgisayar donanımlarının önce seri yal, sonra paralel bağlanması kısır döngüsünü düşünürsek, konuşma üretecinin seril port üzerinden bilgisayara bağlandığını tahmin ediyorum. Bu sadece tahmin.

Kişisel bilgisayar endüstrisinin biraz da mac’ın zorlaması ile grafiksel bir ara yüze doğru ilerlemesi, ekran okuyucu geliştiricilerine, özellikle ticari olanlarının geliştiricilerine baya küfürler ettirmiş, uykusunu kaçırmış olsa da, akıllıca bir yöntem geliştirdiler. Ben her zaman laf ediyorum ama bu sefer üronü yapmıyorum. Hakikaten akıllıca bir yöntem buldular. Grafiksel arayüzün nesneleri ya da grafiksel nesneler, grafik ile tanımlanabilseler de kesinlikle grafiksel olarak nitelenemezlerdi. Ekran okuyucu geliştiricileri ise, c++ benzeri bellek okuma yazma yetkilerine sahip, arayız nesnelerinin UIID ve benzeri kaynak niteliklerini yakalayarak nesneleri saptayabileceklerdi. En zor durumda ise, piksel aralıklarını nesne olarak algılayıp bunlar tanımlanabilir olmasalar bile kullanıcının seçeceği niteleyici ve sistem davranışlarından biri ile nesne ile etkileşim kurulabilmesini, kullanıcı ya da az çok işten anlayan kullanıcılar tarafından sağlanmasına ortam hazırladılar. Bunun için bellek erişim ve arayız niteleyicilerini okuyabilmeleri için yapısal programlama ya da hem yapısal, hem de üç nesne yönelimli programlama kullanabilecekleri güçlü bir dil seçmeleri gerekiyordu. Nitekim, seçtiler de. C ailesinden diller kullandılar ve kompleks git gide yamanan hantal ekran okuma çözümleri gelişti. İlk başlanıldığında her şey çok güzeldi. Ben görmedim, öyle olsa gerek. En azından geliştiriciler için. Çalıştıkları işletim sistemlerinde tanımlanabilecek nesnelerin türü kısıtlıydı. İşletim sistemleri ve çapraz programlama dilleri oldukça azdı. bunun etkisi ve o zamanın geleceğinin x86 olması ve 16 bitten 32 bgit we geçmenin pür issiz olması bu sürecin, uç uca eklenerek ve freni patlamış kamyon gibi ilerlemesine sebep oldu. Desteklenmeyen, altı temizlenmeden, üstüne eklendi. Bilirsiniz, yazılım dünyasında her şey e sıfırdan başlama ihtimaline karşı, ya da mimariyi temiz tutmak amaçlı oldukça temiz çalışmak gerekir. Bu yıllara gelindiğinde birçok ekran okuyucu yenilenemeyecek kadar karışmış durumda.

Ekran okuyucular kaynaktan erişebildikleri nitelikler ile yetinemeyince, daha etkin sebep olarak çapraz programlama kültürü geliştiğinden, erişilebilirlik niteliklerini programlama dili geliştiricilerine kabul ettirdiler. Bu baskı bir süre sorunu çözecek gibiydi. Çözemedi, çünkü programlama dili geliştiricilerinin zorla kabul ettiği çözümü, geliştiriciler öne çıkarılmadığı için ne işe yaradığını öğrenemedi ve kullanmadılar. Çapraz programlama ile gelişen nesnelerin niteliklerinin standart dışılığı, geliştiricilerin erişilebilirlik niteliklerini kullanmaması. Programlama dili geliştiricilerinin, bu nitelikleri ön plana çıkarmaması falan derken, ekran okuyucu geliştiricileri ilginç ve akrobatik yöntemler üzerinde çalıştılar.

Kendimi belgesel senaryosu yazıyormuş gibi hissediyorum şuan.

Geliştiriciler neden bu imkanları kullanmadılar ki? Diye sorduğunuzu düşünüyorum. Öncelikle erişilebilirlik nitelikleri zorla kabul ettirildi. Sadece işi bilen kesim tarafından bu baskılar yapılıyordu ve çoğunlukla çizel kişilikler ve bu işten para kazanan kurumsal yapılar ile yürütülüyordu. Bu niteliklerin kabulü sağlandıktan sonra, tüm erişilebilirlik hizmetleri gibi, son sayfalarda yerini aldılar. Geliştiriciler ise ne olduğunu tam anlamadıkları bu nitelikleri nesnelerine tanımlamadılar. Ben de bir geliştirici olsam, yüzlerce saat harcayarak geliştirdiğim bir projenin, ne olduğunu tam bilmediğim bir şeyi tanımlayarak hata vermesine sebep olmak istemem. Bilirsiniz, erişilebilirlik hizmetleri son sayfalarda açıklanır ya da özet olarak bahsedilir. Erişilebilirlik hizmetlerini geliştiren takım ile kılavuzları yazan takım aynı olmayınca ve bir iletişimsizlik durumu söz konusu olunca ortaya ancak bu kadarı çıkıyor. Önemli kazanımlar ilk sayfalara çıkarılıyordu ama çoğu zaman erişilebilirlik yeterince önemli görülmedi. Ta ki bireysel olarak erişilebilirlik talepleri dile getirilinceye kadar.

Ekran okuyucu geliştiricilerini, ticari olanları ilk başta sorun çözmek için çıktıkları bu yolda, kazanç elde edince ve zamanla dönülmesi sancılı olacak kurumsal anlaşmalar imzalayınca 2 adım geride kaldıkları teknolojinin hızına yetişmeye çalışıyorlar.

Artık bu günlere geliyoruz. Nasıl 2 adım?

Ekran okuyucu teknolojisinin, özellikle 3. taraf hizmetlerin durumu aslında görünenden daha kötü. Sanıldığının aksine, teknolojinin bir adım değil iki adım gerisindeler. İlk adım, nesnenin bulunması, ikinci adım ise sınıflandırılması ve yorumlanması.

Ben google ana sayfasında arama kutusunu ve bunun etiketini bulacağım, ki bu nesnenin bulunması oluyor; sonra bunun bir yazım alanı yada giriş kutusu olduğuna karar vereceğim, bu da sınıflandırılması oluyor.

Daha önce de bahsetmiştim, ekran okuyucular nesne bazlı hareket etmek zorundadırlar.

Çapraz programlama gelişmeye başlayınca ve yeni programlama teknikleri söz konusu olup programlama sürecinin mümkün olduğunca kısaltılması amaçlanınca geliştiricilere erişilebilir demekten bıkar olduk. Kesinlikle öncelikleri değildi.

Son birkaç gündür, artık ekran okuyucunun sunum ve yorum kısmının ayrıştırılabileceği görülmeye başladı. Tabii bunu tek gören ben değilsem. Yorum kısmı, nesneleri saptayan ve nesnelerin niteliğini belirleyen kısım. Sunum ise, nesnelere ulaşmayı sağlayan imleçler vs.

Bu kısımda, doğrudan ekran üstünde ve sanal bir ön bellekte bunların yürütüldüğünü anlattım diye hatırlıyorum.

Ekran okuyucu geliştirme işlemi, bu yorumlama ve sunum kısmının beraber geliştirilmesi gerekliliğinden dolayı yavaşlıyor. Oyun geliştiricileri bu işi çözmek için motorlar kullanmaya başladılar. Tanımlanan senaryoya göre ortam üretiminin motor kendisi gerçekleştiriyor. Dokular, nesneler vs. sanal gerçeklik ve artırılmış gerçeklik geliştirmelerinde, her nesnenin tekrarlamasını engellemek amaçlı bu yöntem kullanılıyor. Dev bir nesne havuzu ve bu nesneleri nasıl kullanacağını yorumlayan bir yapay zeka.

Benim öngörüm ise: daha önce ocr için denenen farklı bir motor kullanarak yazının tanımlanması meselesinin tüm arayüz ve gerçek nesneler için kullanılabileceği yönünde. Bunu microsoft başlattı. Şaşırtıcı, microsoft bunca yıl sonra erişilebilirlik alanında bir adım attı ve bu alanda bir ilk gerçekleşti. Nesne niteleme işleminin ve saptamanın yapay zeka tarafından yapılması işlemi. Şuan el ile olsa da, herhangi bir nesne veri tabanı üzerinden eşleştirilebiliyor.

Peki bu yöntemin avantajları ne?

·       Kaynak erişimine gereksinim azalacak ve ekran okuyucuların kanayan yarası, 64 bit sorununa başka bir çözüm getirilmiş olacak.

·       Geliştiricilerin tek tek nesneleri bulmasına gerek kalmayacak, onlar sadece nesnenin nasıl sunulacağının geliştirecekler. İsterseler tüm Arayüzü tarama kipi ile gezdirsinler.

·       Tanımlanabilecek nesne sınırı ortadan kalkacak ve erişilebilirlik köprüsüne gereksinim çok ciddi oranda azalacak.

·       Hangi çapraz geliştirme işlemi olursa olsun tanımlanan nesneler, gerçek nesneler olacağı için daha doğru tanımlanabilecek.

·       Son olarak ihtiyaca cevap verme süresi oldukça hızlanacak.

 

Son paragrafta şunları açıklamak gerekir.

Ben bu terimlerin teknik karşılıklarını araştırmak yerine aklıma geldiği gibi kullandım. Niteleme meselesi, bir nesnenin etiketi, rengi gibi onu niteleyen özellikleri. Örneğin kuş resminin, etiketinin kuş olması gibi.

Tanımlama ise, bir nesnenin kuş resmi, düğme, link olmasıdır. Bazı durumlarda niteleme karşılaştırma anlamında da kullanılmıştır.

Örneğim, bir grafiğin grafik ile nitelenemeyeceğini söylerken, onun ekran okuyucu tarafından kuş resmi ile eşleştirilemeyeceğini  anlatmaya çalıştım. Ekran okuyucu sadece metin ile nitelenmişse onun farkına varabilir. Yapay zeka ise o resmi algılayabilir ve veri tabanında işleyip, istenen çıktıyı elde edebilir.

Ekran okuyucu ileri düğmesini, ok işareti ile etiketlenmişse kullanıcıya sunamaz; ancak yapay zeka o ok işaretinin ileri anlamına geldiğini bulabilir. Daha da ileri gidersek Orada bir düğme olduğunu, kaynak ya da UIID verisi üzerinden buton olduğunu algılayamazsa, bir düğme olarak görmez; yapay zeka orada bir düğme olduğunu algılayabilir ve ekran okuyucuya iletebilir. Ekran okuyucu ister mevcut ister daha modern teknikler ile kullanıcısına veri sunmaya devam edebilir.

Umarım daha akılcı ve daha olması gereken yöntemler ile en çok ihtiyaç duyduğumuz bu teknolojiler geliştirilir.