useR 2015 a htmlwidgets

Zastanawiałem się, czy tegoroczna konferencja useR zwiastowała jakąś gigantyczną, przełomową zmianę w świecie R.
Poprzednia konferencja useR zadziałała jak katalizator dla pakietu dplyr i operatora %>%. Środowisko (szczególnie kalifornijskie) znało oba rozwiązania już od kilku miesięcy, ale useR 2014 rozlał zachwyt pipe’ami ze wczesnych użytkowników na całą społeczność.

A co przełomowego objawiło się podczas useR w tym roku? Problem z rewolucjami jest taki, że nie widać ich gdy się dzieją, łatwo za to je obserwować z perspektywy czasu. Zaryzykuję jednak i pobawię się we wróżbitę.

Dla mnie czarnym koniem są htmlwidgets.
Dlaczego?

Ok, słowo wyjaśnienia co to w ogóle jest (a jeżeli wyjaśnienie nie wyjaśnia, to można zajrzeć na stronę projektu i zobaczyć tam). htmlwidgets to framework pozwalający na tworzenie z poziomu R interaktywnych widgets (i jak to przetłumaczyć gdy słownik mówi: ,,mała rzecz, której nazwa jest nieznana” ;-)) opartych o java script. Takie wtyczki można osadzać w HTML5 (a więc na slajdach w prezentacjach, w dokumencie knitra, w aplikacji shiny). Jednocześnie, ponieważ wtyczki są w java script do interaktywności nie potrzebują działającego w backendzie R (a shiny potrzebuje, więc trzeba szukać serwera, dbać o spójność bibliotek).

Niby nic, trochę kodu ułatwiającego osadzanie java scriptu na stronie HTML produkowanej przez R.

Z drugiej jednak strony, widać olbrzymią rosnącą popularność pakietu shiny. W połączeniu z dockerem jest to genialne narzędzie do tworzenia bardziej złożonych eksploratorów danych. Ale ma jedną wielką wadę, cała interakcja oparta jest o komunikacje z serwerem R. A to potrafi być zasobożerne, potrafi paść gdy serwer napotka gorszy moment, generuje straszny narzut. Dobre do prototypowania, ale w produkcji ryzykowne (chyba, że mamy jakiś skalowalny backend osadzony na AWS czy innej nieskończonej maszynie).
htmlwidgets eliminuje konieczność posiadania silnika R. Obiekty z R są renderowane do java script. Praktycznie za darmo dostaje się możliwość korzystania z rosnącej bazy różnych bibliotek w tym prawie wszystkiego co bazuje na D3.

Przykładowo te dwie liniki kodu w R generują poniższy rysunek, który można osadzić na blogu (ten wykres jest interaktywny, punkty można obracać).

A te trzy linijki robią mapę ciepła gotową do umieszczenia na www bez żadnego dodatkowego serwera.

Więcej o tym pakiecie można wyczytać z prezentacji Joe Chenga z RStudio.

8 myśli na temat “useR 2015 a htmlwidgets”

  1. Zgadzam się w 100% z myślą przewodnią, żeby więcej uwagi poświęcać JavaScript. Zdroworozsądkowym działaniem jest zwolnienie serwera z części pracy, oddając ją użytkownikowi. Związek z js to idealna para i nieprzypadkowe jest osadzenie shiny na node.js.
    Ja sam cieszę się w duchu, że tyle rzeczy jest już możliwych bezpośrednio z R.
    Na dokładkę polecam zapoznanie się z openCPU. Dzięki temu projektowi możemy stworzyć aplikację, która przy pomocy REST API komunikuje się z serwerem (nie koniecznie własnym).

    1. @Gonzo, zgoda, ajax + opencpu do przemyslowych rozwiazan jest lepszy niz gole shiny. Ale rozwiazania oparte o java script mozna hostowac np na github pages. Dobrze zrzucic co sie da na klienta.

  2. Czy ktoś wie w jaki sposób można zmieniać położenie legendy w mapach ciepła – w pakiecie d3heatmaps(z prawej strony na lewą, z dołu na górę), bardzo mi zależy, dzięki

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

Możesz użyć następujących tagów oraz atrybutów HTML-a: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">