Postřehy z Google Developer Day 2010

V úterý 16. listopadu se v Praze konala konference pro vývojáře používající technlogie Google – Google Developer Day (GDD). Akce zajímavá a inspirativní již jen pro to, jakou má dnes pozici Google mezi ostatními firmami jejichž podnikání se točí okolo internetu. O své postřehy z této akce se s vámi podělí Jirka Kosek.

V žádném případě nečekejte podrobnou reportáž z GDD – s výjimkou úvodní přednášky se další prezentace odvíjely paralelně ve čtyřech sálech, a to nemluvím o doprovodném programu – jeden smrtelník mohl postihnout maximálně kolem 20 % z celého GDD.

Představa 75 minut trvající úvodní keynote mě do začátku trochu děsila a počítal jsem s tím, že místo ní spíš budu pít kafe a vyřizovat e-maily. Během úvodní keynote se vystřídalo několik řečníků, kteří ukázkami doplnili hlavního průvodce keynote Erica Tholomé, takže vše mělo příjemný spád a mé obavy se ukázaly jako liché. Hlavní témata byla tři – HTML5/Chrome, Cloud a Android.

Co mě však dost zarazilo, byly vstupy přednášejících z českých firem. Je jistě velmi oživující, když přednášku kapacit z Google obohatí někdo lokální, kdo ukáže, jak technologii používá. Ale proč tyhle minivstupy byly většinou česky a ne anglicky? Neznám přesná čísla, ale přišlo mi, že celkem hodně účastníků nebylo z česky mluvících zemí a neměli tak šanci rozumět. Přišlo se tak o mnoho zajímavých momentů – jsem třeba zvědavý, co by Jeremy Orlow přednášející o HTML5 řekl na zmínku Davida Grudla (ukazujícího využití některých vlastností HTML5 v Nette) o vložení Javascriptu, který HTML5 funkce vypne, aby to fungovalo. (Možná to řekl David trochu jinak, ale takhle to v jeho krátké Nette kanonádě vyznělo.) Pochopil bych přednášky v češtině, kdyby GDD byl skoro v každé zemi. Ale v Evropě byl jen v Moskvě, Praze a Mnichově. Příště by to chtělo buď překladatele nebo více světáctví a oprostit se od Švejkova jazyka.

Vzhledem k mým zájmům a neschopnosti se klonovat jsem v následujících přednáškách vypustil sekce věnované Androidu a podnikání a pohyboval se mezi Cloud Computingem a Chrome/HTML5.

Native Client

Vzpomínáte si ještě na ActiveX? Tato technologie Microsoftu, která dovolovala ve stránce spouštět binární komponenty bez jakékoliv kontroly nad tím, co dělají, a použitelně fungovala jen ve Windows a Internet Exploreru, již naštěstí skoro vymřela. Nebo ne? Zdá se, že Google zatoužil po vlastní obdobě ActiveX a stvořil Native Client. Technologie umožňuje spouštět nativní kód (tedy přímo strojový kód pro danou platformu, typicky vytvořený např. kompilátorem C++) přímo v prostředí prohlížeče. K dispozici je API pro komunikaci nativního kódu s Javascriptem a zbytkem stránky.

Myšlenka tedy podobná jako u ActiveX. Výhodou oproti ActiveX je lepší bezpečnost – před spuštěním se kód verifikuje a kontroluje se, zda nebude provádět některé nepovolené operace. Alespoň papírově to vypadá, že Native Client bude podporován v několika operačních systémech a na různých procesorových architekturách – to si samozřejmě vyžádá separátní kompilaci pro jednotlivé architektury.

Přemýšlel jsem, proč takovou věc jako Native Client Google dělá a prezentuje na GDD. V dnešní době se postupně skoro pro vše vytvářejí javascriptová API a nové možnosti HTML5 jako třeba 2D canvas a jednou možná i 3D canvas umožní přímo v prohlížeči naprogramovat téměř cokoliv. Pro většinu aplikací bude Javascript v prohlížeči výkonem stačit, zvláště pokud se ještě zapracuje na interpretech, kompilátorech a virtuálních strojích pro Javascript. Výjimkou však budou hry.

Hry jsou jednou z mála aplikací, které dokáží počítač normálního uživatele vytížit na plno. Dává proto smysl, že během prezentace byl Native Client použit právě pro spuštění 3D aplikace využívající herní knihovnu Unity. Myslím, že operační systém Chrome OS bude nejdříve mířit do spotřebních zařízení – set-top boxy, tablety, … A byla by škoda, kdyby tato zařízení nešla používat jako herní konzoli. Tak jsem zvědavý, do kolika let tu budeme mít GBox, GPlayStation či jak se ta nová herní konzole Google bude jmenovat. Jiné smysluplné využití Native Client si moc nedovedu představit.

Rozšíření Chrome

Pomocí rozšíření je dnes možné si většinu prohlížečů funkčně vymazlit do požadované podoby. Rozšíření samozřejmě podporuje i Chrome a o tom byla další prezentace v sekci Chrome&HTML5. Většina prohlížečů dnes směřuje k tomu, že rozšíření se píší přímo jako malá webová aplikace využívající Javascript, HTML a CSS. K dispozici je navíc pár dalších API, která zpřístupní informace o prohlížeči a jeho stavu. Je to zcela jistě správný směr, protože to usnadní psaní rozšíření širší skupině vývojářů.

Doufám, že do pár let se psaní rozšíření v Javascriptu, HTML5 a CSS prosadí ve všech prohlížečích. Pak by bylo možné mezi prohlížeči sjednotit API a balíčkování rozšíření a konečně by si uživatelé instalovali rozšíření pro webový prohlížeč, ne jako dneska speciální rozšíření pro Chrome, speciální rozšíření pro Firefox, speciální rozšíření pro IE, speciální rozšíření pro Operu, … Něco podobného jako Widgets. Jestli však Google chce být vůdčí silou takové iniciativy, asi by měl na konfiguraci rozšíření používat nějaký flexibilnější formát než JSON.

HTML5

Přednáška nazvaná „Praktické HTML5“ byla zklamáním pro všechny, co už o HTML5 něco vědí. V programu byla její úroveň označená jako 201 – tedy pro vývojáře, kteří už technologii znají. Kdo se však těšil na ukázky nějakých pokročilejších API vznikajících v souvislosti s HTML5, které dovolují psát offline aplikace, zasílat zprávy, používat obdobu vláken, ukládat lokálně data, …, byl zklamán. Jeremy Orlow toho neukázal o mnoho víc než během keynote. Takže jsme například viděli, jak se v HTML5 pouští video, jak funguje 2D a 3D canvas a že je možné soubor do stránky přetáhnout myší. Čtení dat z gyroskopu a zobrazování textu v neustále vodorovné poloze bylo jistě efektní, nicméně můj ThinkPad tohle uměl už před sedmi lety. Vůbec celá prezentace byla zaměřena hlavně na věci, které jsou vidět a jsou většinou efektní – dočkali jsme se tak i ukázek SVG, CSS, animací a transformací.

Trošku mě dráždilo, že přednášející se moc nesnažil rozlišit, co z prezentovaných věcí je součást návrhu HTML5 a má širokou podporu, co je jen poměrně kontroverzní návrh, který se Google rozhodlo již implementovat a co je věc čistě specifická pro Chrome, resp. jeho jádro WebKit. Nepředpokládám, že by si snad někdo v sále myslel, že objekt window.webkitNotifications je součástí HTML5. Ale u jiných prezentovaných technologií, jako jsou mikrodata, bych si již tak jistý nebyl.

Mohli bychom nad tím samozřejmě mávnout rukou, ale bohužel v historii webu se již několikrát stalo, že se příliš zpropagovala a začala používat nehotová a nedotažená technologie. Výrobci prohlížečů pak takovou technologii kvůli zpětné kompatibilitě musí udržovat, a plýtvají tak zbytečně zdroji, které by šlo napřít mnohem užitečnějším směrem.

Nakonec jsme se však s pár dalšími účastníky GDD shodli na tom, že odklon od „neviditelných technologií“ vzadu k věcem, co se hýbou, jsou barevné a jsou vidět, je vlastně logický. Google hlavně propaguje svoji platformu Chrome a to, co umí – ohánění se HTML5 jen vylepšuje image – používáme přece otevřené a standardizované technologie tak, jak se dnes sluší a patří.

Objemná data v mracích a jednooká vědma

Prezentace „Storage, Big Query, and Prediction APIs“ ukázala nabídku Google pro práci s velkými objemy dat v cloudu. Google Storage je služba, která umožňuje ukládat kusy dat na serverech v cloudu. Data pak lze rychle načítat po celém světě, protože se automaticky replikují do několika datových center. Osobně jako nejdůležitější plus této služby vnímám silnou inspiraci úložištěm Amazon S3 – používá se stejný model a API. Nástroje od Google umějí pracovat s oběma úložišti a časem se tak snad podaří dotáhnout i myšlenku zmíněnou během keynote – z cloudových služeb se stane standardizovaná komodita do té míry, že půjde data i aplikace bezproblémově přesouvat mezi různými poskytovateli těchto služeb.

Problém služeb jako Google Storage a Amazon S3 je v tom, že nabízejí jen primitivní úložiště klíč/hodnota pro vaše kusy dat, které lze případně doplnit o metadata. Ale zdaleka nenabízí komfort a možnosti relačních databází pro dotazování. Jakýmsi kompromisem je tak služba BigQuery. Ta umožňuje definovat schéma dat uložených v Google Storage v jednoduchém CSV formátu a následně s těmito daty pracovat jako s relační tabulkou a provádět nad ní jednoduché SQL dotazy. Lze používat jen omezenou podmnožinu SQL, ale deklarovanou výhodou je možnost pracovat s opravdu velkými objemy dat.

Prediction API je pak pokusem přiblížit umělou inteligenci běžnému vývojáři. Je to jednoduché rozhraní pro strojové učení. V tuto chvíli až příliš jednoduché – samotná funkčnost je velmi primitivní a navíc chování systému nelze upravovat. Prediction API lze použít jen jako jednoduchý klasifikátor nebo regresní model pro textové či číselné hodnoty. Ve zkratce nejprve musíme Googlu poskytnout trénovací data, která ukazují jaké hodnoty výsledků pro jednotlivé vstupy očekáváme. Po této zaučovací fázi pak stačí posílat vzorky dat a zpět dostaneme předpovězenou hodnotu.

Osobně jsem podle názvu rozhraní očekával něco více než funkčnost, která se studentům předmětů strojového učení ukazuje na prvním cvičení. Na druhou stranu je pravda, že vybrat správnou metodu strojového učení není úplně jednoduché a pro jednoduché aplikace jako klasifikace spamu, určení jazyka dokumentu apod. může Prediction API odvést dobrou službu. Jen by mne zajímalo, co vše Google dělá s daty, která přes Prediction API protečou.

Pozdní odpoledne

Hlavně kvůli Jardovi Benglovi jsem se chtěl jít podívat na „Novinky v oblasti Google Geo“, ale přestávková diskuse mne o pár minut zdržela, a to byla chyba. U dveří bylo plno a zrovna jsem neměl náladu volat „postupte si dále do vozu“, když už přednáška začala.

Chtěl jsem si pak spravit chuť a myslel jsem si, že se dozvím něco nového na další „dvěstějedničkové“ přednášce – „Ověřování na celosvětové síti“. Nicméně když i po deseti minutách zůstával přednášející u výkladu principů fungování OpenID, vzdal jsem to a šel jsem na kafe.

JSON-mánie

Nemám nic proti JSONu, pokud se používá tam, kde se to hodí. Nemám nic ani proti RESTovému API, které komunikuje pomocí JSONu, pokud nabízí i XML verzi. Na GDD šlo však snadno nabýt dojmu, že Google se téměř bezhlavě orientuje na JSON a zcela ignoruje stav okolních věcí.

Zapisovat manifest rozšíření pro prohlížeč v JSONu, tak jak to dělá Chrome ( manifest.json), mi přijde ještě tak na hranici. Sice nechápu, proč nepoužívají XML jako konkurence. Ostatně sama rozšíření nejsou tolik odlišná od Widgets a ty mají svůj manifest rovněž v XML. Pro jednoduchý manifest je JSON sice o pár znaků kratší, ale až si tam přidají pár parametrů navíc, už to zdaleka tak přehledné jako XML nebude. Ale budiž, je to jejich volba.

Ovšem k zcela fatálnímu nepochopení došlo na konci prezentace Prediction API. Toto rozhraní je dostupné přes REST a všechny ukázky používaly JSON. Ptal jsem se, zda lze komunikovat i přes XML. Přednášející se nechápavě ptal, proč by mělo existovat i XML API, když na tak jednoduchou věc JSON přece stačí. Nebyl prostor, takže odpovím zde. Protože během posledních deseti let se investovaly obrovské prostředky do toho, aby mnoho veřejných i vnitropodnikových služeb a rozhraní bylo dostupných v XML. Všichni na to mají odladěné nástroje, takže proč by něco měli měnit jen proto, že Google je líný napsat 20 řádek kódu a mít i XML variantu API. Nebo Google čeká, že je tak velký, že se mu ostatní přizpůsobí? To už jsme tu jednou měli – ne, děkuji nechci.

onUnload

Organizačně nelze GDD nic moc vytknout, byla to povedená akce. Nicméně z obsahového hlediska jsem očekával trochu více – přece jen je vidět, že Google se zaměřuje na stále širší masu vývojářů a uživatelů jeho technologií, takže logicky i jednotlivé prezentace nejdou tak do hloubky jako v předchozích letech. Nicméně pro ty, co nemají čas instantně sledovat nové technologie Google, je GDD velice příjemnou a efektivní jednodenní nalévárnou.

Pokud jste na GDD nebyli, nemusíte zoufat, záznamy přednášek jsou již na na YouTube. Jenom si tam nedáte ty výborné lívance, co byly na konec.

Věděli jste, že nám můžete zasílat zprávičky? (Jen pro přihlášené.)

Komentáře: 31

Přehled komentářů

BoB2176 K JSONu
pribinacik JSON
Radek Re: JSON
BoB2176 Re: JSON
Jiří Kosek Re: JSON
BoB2176 Re: JSON
BoB2176 Re: JSON
pssp Re: JSON
pssp Re: JSON
Pavel Kroh Re: JSON
imploder Re: JSON
Jiří Kosek Re: JSON
imploder Re: JSON
Martin Soušek HTML5 mi připomnělo Microsoft Day 199?
Jirka Vejrazka Re: HTML5 mi připomnělo Microsoft Day 199?
backup Re: HTML5 mi připomnělo Microsoft Day 199?
tomáš j. kouba Re: HTML5 mi připomnělo Microsoft Day 199?
jirina bohdalova Re: HTML5 mi připomnělo Microsoft Day 199?
Štěpán Bechynský Windows Azure Storage
Jiří Kosek Re: Windows Azure Storage
koubel Native client
andrejk Re: Native client
koubel Re: Native client
Martin Soušek Re: Native client
shMoula Diky
shMoula Re: Diky
backup XML v praxi
Radek Re: XML v praxi
iki rozšíření prohlížeče napsaná v js+html+css
Michal Augustýn Re: Postřehy z Google Developer Day 2010
Kepi Díky Google
Zdroj: https://www.zdrojak.cz/?p=3375