Safari-laajennukset käyttävät erityistä viestintämekanismia, jonka avulla JavaScript-laajennuskoodi voi lähettää viestejä suoraan natiivisovelluksille Swift-koodin kautta. Tämä kommunikaatio tapahtuu chrome.runtime.sendNativeMessage -funktion avulla, johon liitetään natiivisovelluksen tunniste, kuten esimerkissä com.matt-frisbie.MVX. Laajennuksen tulee sisältää nativeMessaging-oikeus, jotta se saa lähettää natiiviviestejä, mikä on keskeinen turvaominaisuus.

Laajennuksen JavaScriptissä on usein perinteinen rakenne: taustaprosessi, ponnahdusikkuna ja sisältöskripti. Sisältöskripti esimerkiksi vastaanottaa viestejä taustaprosessilta ja voi muuttaa verkkosivun ulkoasua, kuten taustaväriä. Taustaprosessi puolestaan kuuntelee ja vastaa viesteihin, mikä mahdollistaa kaksisuuntaisen kommunikoinnin. Safari-lisäosan Swift-koodi puolestaan vastaanottaa nämä viestit beginRequest(with:)-metodissa, josta se lukee viestin sisällön ja palauttaa vastauksen echo-muodossa. Tämä malli pitää sisällään myös käyttöjärjestelmäversion mukaiset ehtorakenteet, jotka varmistavat yhteensopivuuden eri iOS- ja macOS-versioiden välillä.

Safari-laajennuksen kehittäminen vaatii usein Xcode-ympäristön käyttöä. Sovelluksen rakentaminen ja suorittaminen macOS:llä tai iOS:llä näkyy natiivisovelluksen web-näkymänä, jonka kautta voidaan testata laajennuksen toimivuutta. Safari vaatii käyttäjältä hyväksynnän laajennuksen käyttöoikeuksille, mikä näkyy asetuksissa ja valintaikkunoissa. Esimerkiksi macOS:ssä on mahdollista sallia allekirjoittamattomien laajennusten lataus kehityksen aikana.

Laajennuksen käyttöliittymä sisältää tyypillisesti ponnahdusikkunan, josta käyttäjä voi esimerkiksi muuttaa verkkosivun taustaväriä tai lähettää natiiviviestejä. Viestien kulkua voidaan seurata kehittäjän työkaluissa, kuten macOS:n Console-apissa, jonne natiivisovellus kirjoittaa lokitietoa. Tämä mahdollistaa tehokkaan virheenkorjauksen ja toimintojen seuraamisen.

Safari-laajennusten julkaiseminen App Storeen edellyttää normaalia iOS- ja macOS-sovellusten julkaisuprosessia: projektin arkistointi, bundlen rakentaminen ja allekirjoittaminen, validointi sekä julkaisuprosessin käynnistäminen. Julkaistavat sovellukset pitää rakentaa erikseen kummallekin alustalle, ja natiivisovelluksen tunnisteiden on oltava oikein määriteltyjä, jotta laajennus löytää kohdesovelluksensa.

Laajennuksen kehittäjän on ymmärrettävä, että viestintä Safari-laajennuksen ja natiivisovelluksen välillä on riippuvainen käyttöoikeuksista, oikeista tunnisteista ja käyttöjärjestelmäversioiden erityispiirteistä. Lisäksi kehitysympäristön asettaminen ja testaaminen ovat olennaisia vaiheita, jotka vaikuttavat laajennuksen toimivuuteen. Viestien kulun lokitus ja näkyminen Console-apissa on tärkeä osa debuggausta.

On myös huomioitava, että laajennuksen käyttäjän näkökulmasta Safari esittää laajennuksen käytön hyväksymispyynnöt ja hallinnan selkeästi, mutta käyttäjän on oltava tietoinen siitä, että laajennuksen natiiviviestintä voi sisältää herkkää tietoa, mikä asettaa vaatimuksia tietoturvalle ja yksityisyydensuojalle. Kehittäjän on suunniteltava laajennus ja sen natiivi-integraatio niin, että ne kunnioittavat käyttäjän luottamusta ja järjestelmän turvallisuusrajoja.

Mikä on selainlaajennus ja miksi se on tärkeää kehittäjälle?

Selainlaajennukset ovat ohjelmointimaailman erikoistapauksia: ne toimivat verkkosivujen päällä, mutta eivät ole riippuvaisia mistään verkkosivustosta tai palvelimesta. Tämä tekee niistä sekä voimakkaita että arvaamattomia työkaluja. Selainlaajennukset antavat käyttäjälle mahdollisuuden muokata selauskokemustaan tavalla, joka ei ole mahdollinen tavallisilla verkkosivustoilla. Näiden laajennusten avulla voi muokata näkyvää sisältöä, seurata ja hallita HTTP-pyyntöjä, sekä tallentaa ja hallita käyttäjätilejä, mikä antaa kehittäjälle ja käyttäjälle äärettömän määrän mahdollisuuksia.

Vaikka selainlaajennukset voivat olla todella hyödyllisiä työkaluja, ne myös sisältävät merkittäviä riskejä. Väärin toteutettu selainlaajennus voi olla vain ärsyttävä, mutta pahimmassa tapauksessa se voi avata tietoturvahaavoittuvuuksia ja mahdollistaa hyökkäyksiä. Näin ollen on erittäin tärkeää ymmärtää, kuinka laajennukset rakennetaan, ja varmistaa, että ne ovat sekä tehokkaita että turvallisia.

Selainlaajennusten kehityksessä on tapahtunut merkittäviä muutoksia viime vuosina. WebExtensions API on kehittynyt huomattavasti, ja Manifest V3 on tullut standardiksi Chromium-pohjaisissa selaimissa. Tämä muutos tuo mukanaan uusia ominaisuuksia, kuten sivupaneeleja, offscreen-dokumentteja, käyttäjän skriptejä ja selainpohjaisia LLM-kehitysrajapintoja. Näiden muutosten ymmärtäminen ja hallinta on elintärkeää selainlaajennusten kehittäjälle.

Yksi tämän kirjan keskeisistä tarkoituksista on antaa sinulle työkalut, jotka auttavat varmistamaan, että selainlaajennuksesi ovat sekä tehokkaita että turvallisia. Tämä ei tarkoita vain ohjelmointitekniikoiden tuntemusta, vaan myös syvällistä ymmärrystä siitä, kuinka selaimet ja laajennukset toimivat yhdessä.

Selainlaajennusten historia on juurtunut pitkälti siihen, kuinka ohjelmointikielet ja selaimet ovat kehittyneet. Verkkosivut itsessään ovat aina olleet avoimia: kuka tahansa voi tarkastella lähdekoodia, muokata sisältöä ja käyttää sitä omiin tarpeisiinsa. Tämä avoimuus on ollut suuri osa internetin vallankumouksellista luonteenpiirrettä, ja se on tehnyt selainlaajennuksista mahdollisia. JavaScript, joka otettiin käyttöön 1995, oli keskeinen osa tätä kehitystä. Koska JavaScript on tulkattu kieli, selain voi suorittaa sen koodin suoraan ilman, että sen täytyy riippua palvelimesta, joka käsittelisi koodia.

JavaScriptin ja DOMin (Document Object Model) avulla selainlaajennukset voivat tarkastella ja muokata verkkosivun rakennetta ja sisältöä, mikä avaa kehittäjille valtavat mahdollisuudet. Tämän lisäksi selainlaajennukset voivat kommunikoida suoraan selaimen kanssa, mikä antaa käyttäjälle täyden hallinnan omasta selauskokemuksestaan.

Kehittäjille tämä avaa uusia mahdollisuuksia: selainlaajennukset voivat lisätä suoraan selaimen ominaisuuksia, jotka eivät ole muuten mahdollisia. Voit esimerkiksi luoda selainlaajennuksia, jotka estävät mainoksia, hallitsevat salasanoja, tekevät automaattisia täyttöjä tai parantavat selauskokemusta jotenkin muuten. On kuitenkin tärkeää huomata, että huolimattomasti suunniteltu laajennus voi myös tuoda mukanaan merkittäviä riskejä, erityisesti tietoturvan kannalta.

Selainlaajennusten turvallisuuskysymykset ovat keskeisiä niin kehittäjille kuin käyttäjillekin. Väärin rakennettu laajennus voi altistaa käyttäjän haittaohjelmille, vakoilulle ja tietomurroille. Tästä syystä on tärkeää, että laajennusten kehityksessä noudatetaan parhaita käytäntöjä ja että koodin tarkistamiseen, testaamiseen ja auditointiin panostetaan.

Selainlaajennuksia kehitettäessä on myös otettava huomioon käyttäjien yksityisyys ja turvallisuus. Tämä tarkoittaa, että laajennusten pitää noudattaa tiukkoja tietosuoja- ja tietoturvavaatimuksia. Tämän lisäksi on ymmärrettävä, miten selainlaajennukset voivat vaikuttaa selaimen suorituskykyyn ja käyttäjäkokemukseen kokonaisuudessaan. Huolellinen suunnittelu ja tehokas koodin optimointi ovat avainasemassa.

Nykyään selainlaajennukset voivat tehdä paljon enemmän kuin vain lisätä pieniä toimintoja selaimelle. Kehityksessä on tapahtunut merkittävä harppaus, erityisesti LLM-pohjaisen kehityksen myötä. LLM-laajennukset avaavat aivan uudenlaisen tavan kehittää selainlaajennuksia, jotka voivat käyttää tekoälyä ja koneoppimista vuorovaikutuksessa käyttäjien kanssa.

Erityisesti Manifest V3 tuo tullessaan huomattavia muutoksia siihen, kuinka selainlaajennukset voivat käyttää selaimen resursseja ja hallita käyttäjän tietoja. Nämä muutokset voivat tehdä selainlaajennuksista entistä tehokkaampia ja turvallisempia, mutta ne vaativat myös kehittäjiltä uudenlaista osaamista ja ajattelua. Tämä kirja tarjoaa tarvittavat työkalut ja ohjeet siihen, miten näitä muutoksia voi hyödyntää parhaalla mahdollisella tavalla.

Endtext