2005-07-03

Grid mania

Re: Death to Paging! - Rico LiveGrid Released.

Grid tai datagrid jokaisesta nykyaikaisesta käyttöliittymäkirjastosta löytyvä elementti. Kyseessähän on tämä tuttu taulukko, jonka sarakkeet on mahdollista lajitella ja jonka tietoja voi usein muuttaa esimerkiksi kaksoisnapauttamalla solua.

Näiden elementtien etuna on, että ne tarjoavat yhtenäisen käyttöliittymän minkä tahansa taulukkomuotoon taipuvan tiedon selailuun ja usein myös muokkaamiseen. Ne ovat myös usein helppokäyttöisiä ohjelmoijan näkökulmasta, jopa siihen asti että pelkkä tietolähteenä käytettävän tietokannan taulun valitseminen riittää ja loppu onkin sitten automaattista.

Koska lukemattomat yritysten sisäisessä käytössä olevat sovellukset rakentuvat näiden elementtien ympärille, on paljon työtä tehty gridien saattamiseksi Web-ympäristöön. Ensimmäinen vaihe olivat sarakeotsikkoa napautettaessa lajittelujärjestystä vaihtavat taulukot. Seuraavaksi tulivat Java- ja ActiveX-tekniikoilla toteutetut elementit.

Nykyinen vaihe tässä kehityksessä ovat DOM-pohjaisiin skripteihin perustuvat ratkaisut, joista ehkä tunnetuin on ActiveWidgetsin kehittämä ActiveGrid (saatavana sekä kaupallisella että GPL-lisenssillä). Vielä uudempi vaihe on XMLHttpRequestin hyödyntäminen vasteaikojen parantamiseen. Esimerkkinä löytyy vastikään julkaistu OpenRico LiveGrid.

Tästä päästäänkin itse aiheeseen, josta olen harkinnut kirjoittavani jo jonkin aikaa. Uskon nimittäin gridien olevan reilusti yliarvostettuja ja että niiden saaminen Web-sovelluksiin on lopulta vain pieni askel käytettävyyden parantamisessa.

Perusteluni ovat ensisijaisesti seuraavat:

1. Tuhansissa laskettavat rivit ovat joka tapauksessa liian moninaisia, jotta ihminen voisi lukea tai silmäillä ne läpi mukavasti. Jos oletetaan, että ihminen joutuu käyttämään aikaa keskimäärin kymmenesosasekunnin yhtä riviä kohti, voi tuhannen rivin gridin läpikäyntiin mennä puolitoista minuuttia. Ei mikään mahdoton aika, mutta kyllä riittävä aiheuttamaan turhautumista.

2. Pelkkä lajittelu ei paranna tilannetta merkittävästi. Lajittelu pystyy auttamaan vain, mikäli ollaan kiinnostuneita listan alku- tai loppupäästä jonkun kriteerin mukaan.

3. Tietylle taulukon riville hyppäämisellä rivin sijainnin perusteella ei myöskään paranna tilannetta merkittävästi. Ellei määräävä tekijä ole lineaarisesti kasvava lukuarvo, on mahdollisuus nähdä rivi numero 658 tuhannesta lopulta aika hyödytön. Vaikka taulukolla olisikin tietty järjestys, olisi haarukointi yhä tarpeen.

4. Vieritys on lopulta taulukon riville hyppäämistä rivin sijainnin perusteella, joka ei siis oikeastaan paranna tilannetta merkittävästi.

5. Grid pakottaa yksinkertaiseen taulukkorakenteeseen tiedon esittämisessä. Jokaisen tietoalkio on oma rivinsä, jokainen sarake kuvaa yhtä alkion ominaisuuksista.

6. Yksi grid näyttää kerrallaan vain yhden näkymän tietoihin.

Tästä on seurauksena, että näytölle ei voi lätkäistä gridiä ja olettaa työn olevan valmista. Mitkä olisivat sitten parempia ratkaisuja? Tilanteesta riippuen jokin seuraavista saattaa olla gridiä parempi tapa laittaa tieto saataville:

- Yhteenveto tai raportti

- Kuvaaja tai muu graafinen esitys

- Helppo tarkentaminen ja suodattaminen (esimerkiksi multifaceted navigation - tai Query by Example -tekniikoilla)

- Silmäilynäyttö (jotain tämän tyylistä tarkoitan)

Vielä on jäljellä yksi tärkeä kysymys, eli miksi gridit ovat niin tavallisia ja miksi ne halutaan Webiin niin kovasti. Sanoisin seuraavaa:

- Työpöytäsovelluksen toteuttajalle grid on heti käyttöön valmis elementti, muut ratkaisut vaatisivat enemmän työtä. Koska ihmiset ovat tottuneet grideihin työpöydillään, haluavat he niitä myös Webiin.

- Grid tarjoaa yhtenäisen käyttöliittymän yhtenäisellä tavalla esitetyn tiedon tutkimiseen ja käsittelyyn.

- Henkinen kynnys gridin käyttämiseen on todella pieni, vieritys vaikuttaa todella helpolta tavalla liikkua tiedossa. Kaikkein yksinkertaisinkin suodatuskäyttöliittymä on monimutkaisemman näköinen kuin grid.

- Gridin vierittely ja lajittelujärjestyksen napsuttelu pitää mielen virkeänä. Aikaa jää myös pienten vasteaikojen ihailuun joko tietoisesti tai tiedostamatta. Se, että tietokone antaa suoraan vastauksen on huomattavasti tylsempää, ainakin tiettyyn rajaan asti.

Yhteenvetona, sanoisin että jos sinulle ehdotetaan gridin lisäämistä sovellukseen, harkitse aluksi muita vaihtoehtoja ja mieti tai tutki millaista tyypillisten tehtävien suorittaminen gridiä käyttäen olisi. Vaikka grid tuskin huonontaa minkään sovelluksen käytettävyyttä, saattaisi suurempia parannuksia saada aikaan jossain muualla samalla vaivalla.