A koc­ka el van vet­ve

Átléptük a Drupal határait

Hortobágy

Nagyjából kilenc éves lehettem, amikor olvastam valahol, hogy a hónapot, amiben születtem, a Római Birodalom első császáráról, Augustusról nevezték el. Ez az akkor számomra új információ ráirányította a figyelmemet a történelemnek erre a szakaszára. Tanulmányaim során sokszor próbáltam megérteni, hogy mit csinálhatott vajon másként Augustus mint Caesar? Miért fogadták el őt egyeduralkodónak, és miért gyilkolták meg a szenátorok az elődjét?

Rómaiak a Hortobágyon?

Aztán amikor rájöttem, hogy a Hortobágy környékén, ahol felnőttem, gyakorlatilag nincsenek római kori emlékek, kissé elkeseredtem. Még az sem vigasztalt, hogy pár kilométerre egy neolitikum-kori település maradványai vannak, vagy hogy egy késő Árpád-kori templomba járunk.

Nagyon lelkes lettem, amikor kiderült, hogy lesz egy munka, ahol az ARIADNE projekthez hasonlóan térképen kellene lelőhelyeket ábrázolni. A Pécsi Tudományegyetem CLIR Kutatóközpontja a Római Birodalom határvidékén fellelhető lelőhelyek jól kereshető adatbázisának fejlesztésével bízott meg bennünket.

Számomra a leginkább érdekes pontja az eredeti ötletnek az volt, hogy az általános lelőhely információkon felül az egyes objektumokat is láttatni szerették volna a térképen. “Ha ráközelítek egy területre, akkor rajzolódjon ki a térképen a két őrtorony, meg a feltárt falszakasz, meg az épület egyes szobái is”.

Hogyan lehet ugyanazt az elemet több módszerrel ábrázolni, ugyanazon a térképen? Ha az egész országot nézzük, akkor látszódjon, mely területeken találhatóak sűrűbben vagy ritkábban lelőhelyek, de ha közelebbi térképszeletet nézek, akkor legyen egyértelmű, hogy adott területen jellemzően hol vannak katonai és hol civil épületek.

Technológiai értelemben az is egy nagyon érdekes kérdés volt, hogyan tudjuk megoldani, hogy használjuk a Drupal adminisztrációs felületeit, de a látogatók számára mutatott felület egy alkalmazás érzetét keltse.

Az architektúra megalkotásakor végül a headless Drupal koncepciót vettük alapul. A frontend alkalmazást Vue.js segítségével építettük fel. A kliens alkalmazást a Drupal 8 REST modulját használva egy API-n keresztül látjuk el adatokkal, az adminisztrációs felületekhez pedig nem nyúltunk, továbbra is a Drupal 8 által adott megoldásokat használjuk.

Maradványok a térképen

Az adatok térképen való ábrázolása volt korábban is feladat az Ariadne projektben. Gondoltunk rá, hogy hasonló megoldást alkalmazzunk, mint a korábbi esetben, hiszen a feladat elsőre hasonlónak tűnt. Végül arra jutottunk, hogy ez a megoldás valójában nem megfelelő a CLIR céljainak megvalósítására. A CLIR projekt térképein nagyságrendekkel kevesebb lelőhely sokkal részletesebb ábrázolása volt a cél.

Amíg a régészeti adatbázis térképén a lelőhely központi koordinátáját elégséges volt egy markerrel ábrázolni, addig itt fontos volt, hogy be tudjuk mutatni, hogy egy épület maradvány pontosan hogyan helyezkedik el egy másikhoz vagy egy tereptárgyhoz képest. A projektben résztvevő kutatók KML formátumban biztosították a rendszer számára a lelőhelyek rajzait, amit a feldolgozás során mi GeoJSON formára hozunk, majd később ezzel számolunk tovább.

A böngészőben megjelenő térkép megoldásra több lehetőségünk volt: Google Maps, Open Street Map vagy akár saját térképszervert is beállíthattunk volna. Végül a Mapbox szolgáltatása mellett döntöttünk, mert viszonylag könnyű volt implementálni, az ábrázolni kívánt adatmennyiséggel is jól boldogult, folyamatosan fejlesztik és nagyon könnyű volt a designhoz igazítani a megjelenést. 

Headless Drupal

A munka kezdetén elgondolkodtunk, hogy ezt a projektet érdemes lehet-e headless megoldást használva felépíteni. Mindenképp szerettük volna megtartani a Drupal alapot, mert gyorsan tudunk vele bonyolult adatszerkezetet leképezni. Viszont az is látszott, hogy a hagyományos megközelítéssel a megálmodott felületekhez és kliens oldali működéshez rengeteg kódot kellene írnunk. Ráadásul ezeket a működéseket eleve bonyolult lett volna a Drupalba beépíteni.

Végül úgy döntöttünk, hogy meghagyjuk a Drupal szerkesztőségi rendszerét, hogy az adminisztrációs felületeket könnyedén össze tudjuk rakni. Új elemként belementünk a rendszer REST implementációjába, és definiáltunk pár egyedi végpontot. A végpontok fejlesztése során nem kellett azzal foglalkozni, hogy hogyan fog kinézni. A cél az volt, hogy adjon vissza minden adatot, amire szükség lehet. Így érhettük el, hogy frontend megvalósítás független legyen a Drupal technológiai megoldásaitól, emiatt nagyobb a szabadságunk és még több a lehetőségünk.

Mivel Vue.js-el volt tapasztalatunk, így ezen a vonalon indultunk el, amikor alapot kerestünk a frontend alkalmazásunkhoz. Az első változatot a sokat ígérő Quasar Framework segítségével raktuk össze. De egy ponton arra jutottunk, hogy mégsem lesz megfelelő a céljainknak így az addig elkészült kódokat portoltuk Nuxt.js alapokra. A váltás eredményeként a egyszerűsödött a kódbázis, gyorsabb lett a build és gyorsabb lett az alkalmazás is.

És hogy miért sikerült Augustusnak megszilárdítani uralmát Caesarnak pedig nem? Tökéletes válasz valószínűleg nem létezik. A kutatók bizonyára fontos szempontot tudnának felsorolni. Egy magyarázat lehet, hogy Augustus éppúgy felismerte, hogy adott körülmények között milyen módszerekkel tudja kézben tartani birodalma problémáit és a helyzet megkívánta eszközöket tudta bevetni, ahogyan mi is igyekeztünk a célnak leginkább megfelelő technológiákkal felfegyverkezve meghódítani a birodalom digitális limesét.

Oszd meg ismerőseiddel!