← Alle artikler
Kart & data24. august 20268 min lesing

Slik bygde vi sjøkart som virker uten dekning

Ute på fjorden forsvinner mobilnettet. Det er akkurat da du trenger kartet mest. Her er hvordan Oystr er bygget for å virke der dekningen svikter.

De fleste kart-apper har en stilltiende forutsetning: at du har nett. De laster kartfliser fra en server mens du beveger deg, og fungerer utmerket i byen. Ute på sjøen faller den forutsetningen fra hverandre — og den faller fra hverandre nøyaktig der konsekvensen av å miste kartet er størst.

Da vi begynte på Oystr, var det derfor det første designvalget vi tok: appen skal virke like godt uten nett som med. Alt annet er bygget rundt den beslutningen.

Offline er ikke en funksjon, det er en arkitektur

Det er fristende å tenke på offline-støtte som noe man legger til etterpå — en hurtigbuffer på toppen av en app som ellers henter alt fra nettet. Det fungerer sjelden. Du ender med to forskjellige måter appen kan oppføre seg på, og all logikk må hele tiden ta hensyn til hvilken av dem som gjelder akkurat nå.

Vi snudde det på hodet. I Oystr er den lokale kopien av dataene sannheten. Appen leser alltid fra det som ligger på telefonen, og nettet brukes utelukkende til å oppdatere den kopien når det er tilgjengelig. Dermed finnes det ikke en «offline-modus» som kan slås av og på — det er bare én modus, og den virker alltid.

Kartdataene: fra offentlig kilde til telefonen

Sjøkartene i Oystr bygger på data fra Kartverket og Kystverket, og værdataene kommer fra Meteorologisk institutt. Dette er offentlige data av høy kvalitet — men de er laget for fagfolk og systemer, ikke for en telefonskjerm i sollys mens båten beveger seg.

Jobben ligger i oversettelsen. Rådataene beskriver dybdekoter, grunner, staker, lykter, sektorer og fartsgrenser med en presisjon og et detaljnivå som ville gjort kartet uleselig hvis vi viste alt samtidig. Så vi måtte bestemme hva som skal vises når: hvilke dybdetall som er relevante på hvilket zoomnivå, når en grunne skal skrike etter oppmerksomhet, og når den bare skal ligge der.

Det er den slags avgjørelser som ikke kan tas i en kravspesifikasjon. De må tas ute i båt, i ekte lys, med ekte fart, og justeres til kartet føles riktig.

Ruting som forstår at land er i veien

Å beregne en rute på veien er et velkjent problem: veiene danner et nettverk, og du finner korteste vei gjennom nettverket. På sjøen finnes det ikke noe nettverk. Det finnes bare vann — og alt som ikke er vann, må du unngå.

Sjøveisruting i Oystr handler derfor om å finne en farbar linje gjennom et landskap av holmer, skjær og grunner, med en dybde båten din faktisk tåler. Det er beregninger som må gjøres på telefonen, uten server å spørre, og raskt nok til at det føles umiddelbart mens du står med rattet i den ene hånden.

Det var her mesteparten av den vanskelige ingeniørkunsten lå. Ikke i grensesnittet, ikke i designet — i å få en telefon til å svare på «hvordan kommer jeg trygt dit» før brukeren rekker å bli utålmodig.

Hvorfor native, og ikke nettside

Vi bygger gjerne i nettleseren når det er riktig — CRM-systemet vårt, Altiv, er en ren webapplikasjon. Men for Oystr var native iOS det eneste fornuftige valget, av tre grunner.

  • Kartet må tegnes hundrevis av ganger i sekundet mens du panorerer. Native gir oss direkte tilgang til grafikkmaskinvaren i telefonen.
  • Offline-lagring av store kartmengder er noe operativsystemet håndterer langt bedre enn nettleseren, som har strengere begrensninger og kan slette data den mener er gammel.
  • Posisjon og strømforbruk henger sammen. En navigasjonsapp som tømmer batteriet på to timer er ubrukelig, og finkontroll på hvor ofte vi spør om posisjon krever native.

Det vi tar med oss videre

Den viktigste lærdommen fra Oystr er at de vanskelige valgene tas tidlig, og at de handler om hva produktet skal tåle — ikke om hvilke funksjoner det skal ha. Beslutningen om at appen alltid skal virke uten nett kostet mer i starten, og har spart oss for uendelig mye siden.

Bygger du noe som skal virke ute i felt — på sjøen, i fjellet, på en byggeplass uten dekning — er det gjerne den samme øvelsen som venter. Ta gjerne kontakt, så deler vi erfaringene.

Har du et prosjekt du lurer på? Vi svarer ærlig.

Ta kontakt
(Les også)
ModellenNavnet gjelder ikke før det er registrertModellenDerfor tar vi eierandel i stedet for timepris