Rajapinnoista

Tsahi Levent-Levi, API calls, https://www.flickr.com/photos/86979666@N00/8692704103
Tsahi Levent-Levi, API calls, https://www.flickr.com/photos/86979666@N00/8692704103

Tampereen teknillisen yliopiston Ohjelmallinen sisällönhallinta -opintojaksossa tarjottiin helmikuussa vierailuluento web-ohjelmointirajapinnoista. Luennolla puhuivat OKM:n kehittämispäällikkö Jarkko Moilanen ja Tampereen kaupungin tietohallinnon edustaja Joonas Dukpa.

Moilanen pohdiskeli ohjelmointirajapintojen (application programming interface, API) merkitystä tietojärjestelmien kehittämisessä ja Dukpa kertoi Tampereen kaupungin avoin data -ohjelmasta.

Moilasen mukaan suunta on se, että maailmalla start-up-yrityksissä homma lähtee nykyään rajapintojen rakentamisesta. Rajapintoja ja pilviteknologiaa pidetään välttämättöminä digitaaliselle liiketoiminnolle.

Rajapinta ideana on vanha juttu: yhtenä aloituskohtana pidetään Roy Fieldingsin vuonna 2000 julkaisemaa väitöskirjaa Architectural styles and the design of network-based software architecture. Käännekohtana Moilanen pitää vuotta 2006, jolloin julkaistiin muun muassa sosiaalisen median verkkopalvelujen rajapintoja (Facebook API, Twitter API) ja Amazonin pilvipalveluja (Amazon S3, Amazon EC2). Vuonna 2007 telekommunikaatioteknologiaan erikoistunut yritys Twilio on kiinnostava rajapintojen näkökulmasta, koska sen liiketoimintaidea perustuu ohjelmointirajapintojen tarjoamiseen puhelin- ja tekstiviestiliikenteen hallinnointiin.

Tekninen rajapinta vain yksi osa kokonaisuutta. Kyse on ekosysteemistä, jonka muodostavat muun muassa kehittäjät, itse järjestelmä, konteksti, asiakkaat, trendit & tarpeet. Asiakkaissakin on eroa: rajapinnan asiakas eri kuin lopputuotetta käyttävä asiakas.

Verkkopalvelun tekninen arkkitehtuuri on monimutkaistunut. Vuonna 2006 voitiin verkkopalvelu-ympäristö kuvata kutakuinkin 3 palikalla, jotka olivat web-sovellus + taustalla oleva tietokanta (esim. SQL) + loppukäyttäjä. Web-sovelluksen takana oli useita rajapintoja (esimerkiksi SOAP ja JSON (esimerkiksi laskutuksessa käytetyt rajapinnat), screen scraping -”rajapinta”, WMS (esim. karttapalveluissa käytetty rajapinta), jotka osaltaan muodostavat web-sovellus-kokonaisuuden.

Vuonna 2013 rajapintoja on edelleen useita + tietokanta + yrityksen/palvelun tarjoajan ulkoinen API:en käyttö. Rajapintojen kautta tarjotaan palveluja ja dataa erilaisille web-sovelluksille, mobiili-sovelluksille ja Internet of Things -palveluille. Verkkopalvelujen tarjoajat ovat kaupallistaneet rajapintapuolen. Rajapintojen kautta haravoitavan datan jatkojalostuksessa Python on yksi ammattilaisten käytetyimmistä työkaluista.

SOAP/XML on java-lähtöinen, liike-elämän tarpeiden ehdoilla (ideointi ja määrittely) kehitetty rajapintaprotokolla. Kansallisen palveluväylän versio 6 tulee olemaan tätä, mutta data muljutellaan myös JSON-muotoon. SOAP/XML:n etuna ovat Moilasen mukaan monipuolisemmat vuorovaikutusmahdollisuudet kuin REST/JSONilla.

REST/JSON -arkkitehtuurimallin taustalla oleva ideologia edustaa standardoituun SOAP/XML:ään verrattuna joviaalimpaa, kehittäjäyhteisön pragmaattista lähestymistapaa. Malli on javascript-lähtöinen ja käytössä muun muassa tavallisissa, arkipäivän web-sovelluksissa. Malli on keveämpi ja vapaampi verrattuna SOAP/XML:ään.

Nousussa on teollinen Internet alias esineiden Internet (Internet of Things). Esineiden Internetistä on pari mainintaa kertynyt (Online 11: mobiili tuli jo ja ITK 2010: tulevaisuudesta). Tällä puolella aktiivisia ovat muun muassa Konecranes ja Kone. Esimerkiksi teollisuusnostureissa on rajapintoja kommunikointiin muiden laitteiden/järjestelmien kanssa.

Nyt kun avoimen datan kanssa ollaan jo edetty jonkin verran, seuraava nouseva trendi on mahdollisesti omadata eli my data.

Ohjelmointirajapinta on tuote. Rajapintoja on erilaisia erilaisiin käyttötarkoituksiin: Ns. sisäinen API on tarkoitettu palvelunrakentajan omaan käyttöön tarkoitettu. Kumppani-API helpottaa yhteistyötä, jossa vaihdetaan dataa tai rahaa yhteistyökumppanin kanssa. Avoin-API mahdollistaa innovoinnin ja on markkinointikeino omalle yritykselle.

Perusta näissä rajapinnoissa on kaikissa sama. Lisäominaisuuksilla ja rajoitteilla erotellaan rajapintoja toisistaan.

Käytettävyydessä tulisi ottaa huomioon myös rajapintojen käytettävyys. Ohjelmistosuunnittelussa käyttäjä huomioidaan: käyttöliittymä (user interface eli UI) ja käyttäjäkokemus (user experience eli UX). Rajapintojen suunnittelussa pitäisi saada yhdeksi ulottuvuudeksi rajapintojen käyttäjäkokemus, APX. Onnistunut rajapintojen käyttäjäkokemus syntyy Moilasen mukaan siitä, että esimerkiksi
rajapinta mahdollistaa itsepalvelun (kehittäjä pääsee omin avuin alkuun)
rajapinnan käytössä ovat helpot, selkeät ja matalat integrointiaskeleet. TTFHW:n (time to first hello world) pitäisi olla mahdollisimman lyhyt
dokumentaatio löytyy
tarjolla on rajapintaa hyödyntäviä esimerkkikoodeja. Esimerkiksi hackathonit ovat mainio tilaisuus, jossa voidaan tuottaa esimerkkikoodia
tuki- ja palautekanava ovat tarjolla (esimerkiksi Stack exchange, Quora)
rajapinnan käyttämiselle on selkeä käyttäjäsopimus. Tämän ei pitäisi olla ensimmäinen, koska esimerkiksi 30 sivua juristeeriaa on hyvä tapa karkoittaa kehittäjät.

Keskeisiä ohjelmointirajapintojen kuvauskieliä ovat

Avoin API on avoimesti dokumentoitu, käyttöönotettava, testattavissa. Rajapinta-asiat pitäisi huomioida hankintavaiheessa, koska nyt hankinnassa tehdyt virheet voivat heijastua monen vuoden päähän. Avainasioita on rajapinnan yksinkertaisuus ja intuitiviisuus, kevyiden Internet-teknologioiden (esim. JSON) hyödyntäminen. Rajapinnat ovat sosiaalisen median, pilvipalveluiden ja mobiilimaailman moottori. Rajapintojen varaan osin rakentuvia trendejä ovat laitteet (Internet of Things), reaaliaikaisuus, automaatio ja ääni. Helpompia pilvipohjaisia ohjelmointirajapintojen julkaisutyökaluja on tulossa.

API:Suomi

Vuonna 2014 perustettu API:Suomi-palvelu sisältää Suomessa tarjolla olevista rajapinnoista listauksen, jota täydennetään. Rajapintojen hyödyntämisen helpottamiseksi on käynnistetty useita muita oheisprojekteja: esimerkiksi API-lähettiläät levittävät tietoa tarjolla ja tiedossa olevista rajapinnoista sekä rajapintojen hyödyntämisen hyvistä käytänteistä. API starter kit on Google Drivessä työn alla oleva johdatus rajapintojen käyttöön. Ideatasolla on API design guide, jolla on kytkös palvelukanava-hankkeeseen ja virolaisten X-roadiin (Jarkko Moilasen bloggaus aiheesta).

API:Suomi-palvelun tarkoitus on myös antaa luonnehdintoja rajapinnoista samaan tapaan esimerkiksi Tripadvisor rankkaa hotelleja.