3. 9. 2008

Než to máte v mobilu…

Co se vlastně stane a kolik ozubených koleček se roztočí, než se zobrazí požadovaná mobilní stránka ve vašem mobilním telefonu.

Když jsem nastupoval do Seznamu jako senior mobilního týmu, bylo mým prvním úkolem navrhnout způsob vykreslení stránky na mobilu.

Že není možné používat stejný výstup pro všechny mobilní telefony je jasné každému, kdo se o to někdy pokoušel. U mobilních prohlížečů to totiž není zdaleka tak jednoduché, jako u těch velkých, webových. Momentálně se na českém trhu pohybují prohlížeče od zhruba šesti hlavních výrobců, v různých verzích a různých modifikacích, jak od výrobce telefonu, tak případně od operátora. Ve výsledku se nemůžete tudíž spolehnout vůbec na nic. Pokud dojdete k názoru, že například prohlížeč OpenWave (v telefonech Siemens, Motorola, Samsung, LG) zvládne dobře například ohraničení formulářového prvku, jeho novější verze vás vyvede hluboce z omylu, protože výrobce daného telefonu tuto funkci odstranil …

Aby bylo možné se v této džungli různých neschopností mobilních zařízení (záměrně říkám zařízení, protože upravujeme výstup i pro „hračky“ jako Play Station Portable), bylo nutné sestavit databázi vlastností telefonů. V dnešní době máme k dispozici informace v naší databázi zhruba o 1100 mobilních telefonů. Ke každému telefonu je přiřazeno 50. vlastností, které nám říkají, co jak daný prohlížeč vykresluje a s čím může mít problémy. Základní data jsme převzali z otevřené databáze vlastností WURFL a potřebné údaje doplnily a spoustu si jich sami opravili. K těmto účelům máme už k dispozici poměrně velké spektrum nejpoužívanějších telefonů na testování.

Když už máme připravenou dostatečně velkou databázi telefonů a jejich vlastností,  stačí pak už jenom rozpoznat, které mobilní zařízení právě na stránku přistupuje. K tomu se používá HTTP hlavička User-Agent, kde výrobce daného telefonu udává o jaký telefon se jedná. Jsou tu sice i výjimky, kdy například Nokia vydala několik telefonů se stejným User-Agentem, ale i to lze řešit. Hodnotu User-Agent rozdělíme na krátké, jednoznačné fráze, podle kterých potom rozpoznáváme o jaké zařízení se jedná.

Tak se dostáváme do fáze, kdy víme o jaký telefon se jedná a jaké mohou nastat problémy při vykreslování stránky. Můžeme tedy s vykreslováním stránky začít. Pro tyto účely jsem navrhnul knihovnu PageBuilder. Tato knihovna je komponenta, která pracuje s daty z detekce telefonu a následně vykresluje stránku. Jakmile byl hotov koncept této knihovny, začal na vývoji pracovat také Aleš Jirásek, který jí nakonec vtisknul konečnou podobu. Aktuální verze obsahuje 7 základních sad pravidel pro vykreslení stránky, kde se každá sada přizpůsobuje vlastnostem telefonu. Máme dvě sady pro staré WML prohlížeče a zbytek pro XHTML Mobile Profile a iPhone. Další pro nás velice důležitou základní vlastností je úprava stránky pro jednotlivé operátory. Protože dodáváme naše služby také na mobilní portály operátorů – t-zones, Web n Walk, Vodafone live, je potřeba upravit vzhled stránky tak, aby uživatel poznal, že je stále “doma” u svého operátora, aby se nebál, že platí za přenesená data.


Díky tomuto konceptu můžeme poměrně rychle připravovat nové aplikace a neřešit při tom, na kterém telefonu se stránka právě zobrazuje. V praxi to potom vypadá tak, že FastRPC rozhraní služby a vytáhneme si data, která se mají zobrazit na stránce. Potom zavoláme PageBuilder a zavoláme jeho metody pro vykreslení hlavičky, seznamu odkazů, textu, nebo jiných částí stránky. Michal „Chlup“ Fousek  tak stihl připravit službu TV-program v poměrně rekordním čase.

Součástí úprav jsou samozřejmě i obrázky. K tomuto účelu jsme si vyvinuli opět vlastní komponentu pro úpravu grafiky. Ta nám na základě dostupných informací upraví veškeré obrázky na stránce tak, aby se vešly na display telefonu.
 
Všechny uvedené komponenty potom fungují jako skládačka. Vše je propojené pomocí našeho protokolu FastRPC, všechny části tak spolu velmi rychle spolupracují. Protože všechny ostatní služby Seznamu používají taktéž FastRPC, je díky námi připraveným komponentám příprava nových mobilních služeb podstatně jednodušší.

V příštích měsících budeme nasazovat nové verze jak detekce, tak i knihovny PageBuilder. Nová detekce bude daleko lépe pracovat s vlastnostmi a hlavně lépe rozkládat hlavičku User-Agent a další hodnoty k rozpoznání telefonu. Zároveň se znatelně zrychlí, momentálně rozpoznáme telefon do 16 ms a s novou verzí se dostaneme až na hranici 2ms!

Nová verze PageBuilderu převratně mění způsob vykreslování stránky. Budeme schopní dodat telefonu přesně tolik obsahu, kolik ho daný telefon dovede vykreslit. Uživatel tak získá ze svého zařízení maximum. Navíc budeme podporovat odeslání všech částí obsahu v jedné odpovědi na stránku, což ve výsledku způsobí mnohem rychlejší vykreslení stránky.

Pokud jsi programátor a tyto řádky tě zaujaly, tak tě velmi rádi přivítáme v našem  teamu, protože práce je stále dost.

Příště napíše Vašek Pokluda o své WAPProxy pro úpravu stránek pro mobilní prohlížeč. Tato obrovská výzva pro něj byla zároveň diplomovou prací a ve výsledku  jeho dílo dokáže upravit téměř libovolnou webovou stránku tak, aby se zobrazila na mobilu.


Lukáš