Upgrade to Pro — share decks privately, control downloads, hide ads and more …

[rstudio::conf(2020)] Production-grade Shiny Ap...

Colin Fay
January 29, 2020

[rstudio::conf(2020)] Production-grade Shiny Apps with golem

Talk at rstudio::conf(2020)

Colin Fay

January 29, 2020
Tweet

More Decks by Colin Fay

Other Decks in Technology

Transcript

  1. Engineering Production-Grade Shiny Apps with {golem} Colin Fay / Vincent

    Guyader - ThinkR Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 1 / 26
  2. Colin FAY Data Scientist & R-Hacker at ThinkR. Vincent Guyader

    ThinkR Founder & CTO, Data Scientist, R expert. Find us on the web http://thinkr.fr http://rtask.thinkr.fr http://github.com/thinkr-open http://twitter.com/thinkr_fr $ whoami Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 2 / 26
  3. Data Science engineering, focused on R.  Training  Software

    Engineering  R in production  Consulting ThinkR Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 4 / 26
  4. What's a "prod-ready" software?  Has meta-data  Is divided

    in functions  Is tested  Lists requirements  Is documented Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 5 / 26
  5. Here comes {golem} {golem} is an R package that contains

    a framework for building production-ready Shiny Applications. Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 8 / 26
  6. Q & A What do you like the most? Colin

    FAY (@_ColinFay) - https://rtask.thinkr.fr 9 / 26
  7. Q & A What do you like the most? A:

    Work on building data manipulation, visualisation, and models Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 9 / 26
  8. Q & A What do you like the most? A:

    Work on building data manipulation, visualisation, and models B: Spend 15 minutes on checking that you've correctly copied and pasted a Shiny Module skeleton Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 9 / 26
  9. Why {golem}?  If you have to copy and paste

    a piece of code more than twice, write a function Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 11 / 26
  10. Why {golem}?  If you have to copy and paste

    a piece of code more than twice, write a function  If you have to copy and paste an infrastructure more than twice, write a framework Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 11 / 26
  11. Why {golem}? Why using {golem}?  Automation is gold 

    Sharing is caring  Collective intelligence Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 12 / 26
  12.  Has meta-data  Is divided in functions  Is

    tested  Lists requirements  Is documented DESCRIPTION R/ tests/ NAMESPACE man/ & vignettes {golem} central philosophy Shiny App As a Package What's a "prod-ready" Shiny App? Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 13 / 26
  13. golex ├── DESCRIPTION ├── NAMESPACE ├── R │ ├── app_config.R

    │ ├── app_server.R │ ├── app_ui.R │ └── run_app.R ├── dev │ ├── 01_start.R │ ├── 02_dev.R │ ├── 03_deploy.R │ └── run_dev.R ├── inst │ ├── app │ │ └── www │ │ └── favicon.ico │ └── golem-config.yml Standard things DESCRIPTION, NAMESPACE, man/ R/ app_server & app_ui: Shiny UI and Server run_app: launches your app dev/ 0._.*.R: scripted worflows run_dev.R: relaunches your app while developing Understanding {golem} Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 15 / 26
  14. Template files (and where to put them) golem::add_module( name =

    "my_module.R" ) ✓ File created at R/mod_my_module.R Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 18 / 26
  15. Template files (and where to put them) ... #' @importFrom

    shiny NS tagList mod_my_module_ui <- function(id){ ns <- NS(id) tagList( ) } #' @noRd mod_my_module_server <- function(input, output, session){ ns <- session$ns } ## To be copied in the UI # mod_my_module_ui("my_module_ui_1") ## To be copied in the server # callModule(mod_my_module_server, "my_module_ui_1") Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 19 / 26
  16. What's next All WIP and ideas are currently listed at

    https://github.com/ThinkR-open/golem/issues Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 20 / 26
  17. What's next golem 0.2.0 — CRAN release candidate Colin FAY

    (@_ColinFay) - https://rtask.thinkr.fr 21 / 26
  18. What's next? Spread the word (and share stickers): tweets, blog

    posts, talk to your friends and family about {golem} Open issues when you encounter a bug Give feedback about things you might find weird Open issue if you have idea / feature requests Colin FAY (@_ColinFay) - https://rtask.thinkr.fr 22 / 26