tiistai 28. marraskuuta 2017

WebView on datajournalistin uusi Internet Explorer

Kun Tim Berners-Lee vuonna 1990 kehitti nykyisin tuntemamme netin ensiaskeleet hänellä ei varmasti ollut käsitystä minkälaisen vallankumouksen hän aiheuttaisi. Berners-Lee on edelleen keskeinen hahmo, koska hän toimii netin standardointia ja suosituksia hoitavassa W3C-organisaatiossa.

Netin alkuaikoina käytänteistä käytiin perustavanlaatuisia kamppailuja kun päädyttiin esimerkiksi käyttämään Javascriptiä. Tuolloin suosituimmat selaimet Netscape Navigator ja Internet Explorer vetivät kehitystä omiin suuntiinsa (Kuva 1). Esimerkiksi CSS:n osalta tilanne on ollut erityisen ongelmallinen näihin päiviin asti.

Tämänkaltaiset ilmoitukset olivat hyvin tavallisia 2000-luvun taitteessa. (Kuva 1)
Nykyisin selainmarkkinoita hallitsevat Mozilla Firefox, Internet Explorer (Edge), Chrome ja Safari. Esimerkiksi Yle Uutisten sivuilla nämä neljä kattavat noin 90 % liikenteestä (lähde Google Analytics). Standardien noudattamisen osalta ollaan viime vuosina menty huimasti eteenpäin, mutta etenkin Internet Explorer oli pitkään piikki netinkehittäjien lihassa ja kirjoitinkin aiheesta vuonna 2012.

Vuosi 2012: "Toimiiko Internet Explorerissa"

Nykyisin tilanne Internet Explorerin suhteen on kehittäjän näkökulmasta uusien versioiden myötä  paljon siedettävämpi. Toisaalta myös, että IE:n osuus käytöstä on pudonnut huomattavasti.

Vuosina 2012–2016 nähtiin kuitenkin hyvin merkittävä mobiilikäytön kasvu. Nykyisin Yle Uutisten käytöstä yli puolet tulee mobiililaitteista kun vuonna 2012 osuus oli noin 10 % (lähde Google Analytics).

Ennen mobiilin tuloa netin kehitystyötä pystyi teskemään riittävän natiivisti ja kattavasti yhdellä tietokoneella. Mobiilikäytön kasvu tarkoitti, että päätelaitteiden ja selainten määrä kasvoi rajusti, joka taas johti siihen, ettei toteutusten testaaminen kaikilla päätelaitteilla ja selaimilla enää ollut mahdollista.

/* Good browsers */
opacity: 0.5;

/* IE 8 */
-ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=50)";

/* IE 5-7 */
filter: alpha(opacity=50);

Esimerkki siitä miten Internet Explorer tuli esimerkiksi huomioida CSS-tyyleissä.

Vuonna 2012 IE:llä toimimattoman toteutuksen saattoi vielä räätälöidä IE:lle toimivaksi, mutta mobiilimaailmassa tämä räätälöinti ei enää ollut käyttöympäristöjen määrästä johtuen mahdollista. Tässä uudessa tilanteessa standardien noudattaminen ja yhteiset netin käytänteet tulivat yhä tarkeämmiksi. Kehittäjän tuli voida luottaa, että jos hän noudattaa netin standardeja ja suosituksia toimii toteutus kaikissa päätelaitteissa.

Mobiilin alkuvuosina tilanne oli kaoottisempi ja ongelmat olivat teknisen lisäksi myös sisällöllisiä rajatusta näytönleveydestä johtuen (responsive = "toimii myös mobiilissa" ja mobile-first = "toimii myös desktopissa").

Vuosi 2015: "Toimiiko mobiilissa"

Verkko on toimintaympäristöltään siinä mielessä hyvin erityislaatuinen, että kehittäjä ei voi juurikaan määritellä tai rajata käyttäjän päätelaitetta. Esimerkiksi tehtäessä televisio-ohjelmaa toimintaympäristö ja jakelukanava on melko selkeästi määritelty. Tai jos kehityksen kohteena on HSL:n kortinlukijan käyttöliittymä, jossa päätelaite on vakioitu, ei järjestelmän tarvitse olla samalla tavalla skaalautuva kuin kehitettäessä nettipalveluita.

Verkossa päätelaitetta, käytettävissä olevia teknologioita eikä jakelukanavaa voi käytännössä rajata mitenkään. Toteutuksen tulisi skaalautua niin, että se toimii niin desktop-selaimella ADSL-yhteydellä kuin hitaammalla yhteydellä älykellosta. Toisaalta toteutuksen tulisi olla käytettävä yhtälailla esimerkiksi TV:stä kaukosäätimellä. Huomioon tulisi ottaa myös, että toisissa päätelaitteissa ei ole käytössä esimerkiksi Javascriptiä, Flashiä tai Javaa.

Tämä heterogeenisuus ei ole ongelma jos kaikki pelaavat yhteisten pelisääntöjen mukaan. Yhteisten pelisääntöjen noudattaminen on mahdollista, koska (suuria) laitevalmistajia on kuitenkin rajallinen määrä.

Tuorein haaste verkon kehityksessä on kuitenkin ns. WebView-kerros. WebView on älypuhelin sovelluksen (applikaatio) ominaisuus, jossa verkkosisältöä voidaan näyttää suoraan sovelluksessa.

Sovelluskehittäjälle tämä tarjoaa mahdollisuuden rakentaa nettisivusto ja tarjoilla sitä periaatteessa sellaisenaan applikaationa. WebView:tä käytetään myös natiiveissa sovelluksissa verkkosisältöjen tarjoilemiseen suoraan applikaatiossa ilman, että käyttäjää tarvitsee ohjata esimerkiksi puhelimen Safari-selaimeen. Sovelluksen näkökulmasta tämä on mukavaa, koska käyttäjä ei poistu sovelluksesta.

Etenkin jälkimmäisessä tapauksessa WebView:n tekee ongelmalliseksi se, että sovelluskehittäjä voi melko mielivaltaisesti ottaa käyttöön ja poistaa netin ominaisuuksia WebView:ssä.

Esimerkiksi tuoreessa Ilmakehä-jutussamme Ampparit-sovelluksen Webviewssä ei ilmeisesti oltu sallittu iPhonessa allowsInlineMediaPlayback-ominaisuutta, koska videosisällöt aukesivat määrittelystä poiketen koko ruudussa (full screen).

Vuosi 2017: "Toimiiko WebViewssä"

WebView on siinä mielessä haasteellinen, että virheiden korjaaminen siinä on erittäin vaikeaa ellei jopa mahdotonta. WebView on kehittäjälle mustalaatikko, jonka ominaisuuksista ja toiminnasta on todella vaikea saada palautetta.

Kuitenkaan toimivuutta WebViewssä ei voi ohittaa, koska esimerkiksi pikaviestin sovelluksissa (Facebook, Twitter) jaetut linkit jaetaan hyvin usein juuri WebViewssä. Toisaalta meillä Ylellä WebViewtä käyttävät myös Uutisvahti ja Yle.fi-applikaatio. Toisaalta taas erittäin suosittu WhatsApp avaa linkit (vielä) Safarissa.

Kehitys kehittyy!