이번에 준비한 튜토리얼은 제 강의를 듣는 과거-현재-미래 수강생분들을 위해 준비한 자료이다. 많은 도움이 되기를 바란다
이번에 준비한 Tutorial 코로나 세계현황을 Shiny Dashboard
로 만들어 가는 과정을 담았다.
Shiny
는 R
에서 제공하는 일종의 Web Framework
이다. 기존 웹사이트와 다르게, 주요 목적은 데이터를 활용해서 대시보드를 만드는 것에 초점이 맞춰져 있다.
가장 큰 장점은 무료
로 빠른 프로토타입
을 만들 수 있고, HTML
, CSS
, Javascript
와 직접적으로 호환이 되기 때문에 무한한 확장성
이 있다. 바로 중급 레벨에서 배우고 싶으시다면 Intermediate Level을 클릭한다.
기존에 시각화 Tool과 비교하는 가장 빠른 방법은 show room을 비교하면 된다. - Power BI - Tableau - Shiny
각각의 차이는 있지만, Shiny
는 무료로 제작할 수가 있다. Shiny
는 꼭 알아두면 좋고, Power BI
와 Tableau
는 회사에서 도입하는 시스템을 따라가면 좋다. 참고로 강사가 사용했던 BI Tool은 Power BI
, Google Data Studio
가 있다. 그래도 Shiny
가 좋은 이유는 HTML & CSS
로 조금 더 미세한 작업을 가미할 수 있다는 점, 그리고 내가 원하는 그래프를 만들 수 있다는 점. 연구자 또는 개발자의 자유도가 높은 것이 Shiny
의 가장 큰 장점이다.
Shiny
를 잘할려면 R은 기본이지만, HTML
, CSS
, 그리고 JavaScript
를 더 공부를 많이 해야 한다. 기존에 Front-End
개발자라면, R
을 배워두면 데이터쪽 관련 일도 겸업할 수 있을 것 같다. 데이터 분석의 마지막은 결국엔 대시보드 개발과 연관이 깊다.
사실 답하기 어렵다. 회사에 처한 환경과 본인이 속한 팀에 따라 Tool의 사용법과 의도가 달라지기 때문이다.
그러나, 객관적으로 볼 때, Power BI
와 같은 Tool을 사용할 때는 한번 만들어진 대시보드를 지속적으로 사용하거나, 또한 주 사용자들이 프로그래밍에 익숙하지 않은 분들이 많은데, 회사의 자원이 넉넉한 대기업 또는 유니콘 같은 기업의 경우 비용을 들이더라도 Power BI
툴을 사용하는 것이 좋다.
반대로, Shiny
와 같은 오픈소스를 사용하려면 중소기업 또는 스타트업인데 데이터의 접근성이 보다 쉬운 경우 간단한 프로토타입 제작 및 저 비용으로 최고의 성과를 올릴 수 있는 장점이 있다. 여기에서 업무성과가 지속적으로 나오고 데이터 대시보드 개발 및 활용
의 사내 분위기가 꾸준하게 조성이 되면 Shiny Enterprise
또는 Power BI
같은 유료 툴로 전환하는 것이다.
Power BI Vs. R Shiny의 관점보다는 결국 ’어떻게 대시보드를 활용할 것인가?’라는 기본적인 전제가 마련이 되면 무엇을 사용하더라도 조직의 성과에 기여할 것은 자명하다.
Shiny 프로젝트를 시작하는 것은 간단하다.
[File] - [New Directory] - [Shiny Web Application] - [Working Directory] 순서대로 작업하면 된다.
그러면 아래와 같은 폴더 구조(tree)가 되어 있을 것이다.
.
├── app.R
└── test.Rproj
app.R
파일을 열면 아래와 같은 Sample 소스코드가 있을 것이다.
#
# This is a Shiny web application. You can run the application by clicking
# the 'Run App' button above.
#
# Find out more about building applications with Shiny here:
#
# http://shiny.rstudio.com/
#
library(shiny)
# Define UI for application that draws a histogram
ui <- fluidPage(
# Application title
titlePanel("Old Faithful Geyser Data"),
# Sidebar with a slider input for number of bins
sidebarLayout(
sidebarPanel(
sliderInput("bins",
"Number of bins:",
min = 1,
max = 50,
value = 30)
),
# Show a plot of the generated distribution
mainPanel(
plotOutput("distPlot")
)
)
)
# Define server logic required to draw a histogram
server <- function(input, output) {
output$distPlot <- renderPlot({
# generate bins based on input$bins from ui.R
x <- faithful[, 2]
bins <- seq(min(x), max(x), length.out = input$bins + 1)
# draw the histogram with the specified number of bins
hist(x, breaks = bins, col = 'darkgray', border = 'white')
})
}
# Run the application
shinyApp(ui = ui, server = server)
##
## Listening on http://127.0.0.1:3205
전체 소스코드를 실행하면 아래와 같은 이미지 형태의 그래프가 나오면 이제 여러분들도 Shiny App을 만든 것이다.
Congratulation!