공지

이번에 준비한 튜토리얼은 제 강의를 듣는 과거-현재-미래 수강생분들을 위해 준비한 자료이다. 많은 도움이 되기를 바란다

이번에 준비한 Tutorial 코로나 세계현황을 Shiny Dashboard로 만들어 가는 과정을 담았다.

I. Shiny 소개

ShinyR에서 제공하는 일종의 Web Framework이다. 기존 웹사이트와 다르게, 주요 목적은 데이터를 활용해서 대시보드를 만드는 것에 초점이 맞춰져 있다.

가장 큰 장점은 무료빠른 프로토타입을 만들 수 있고, HTML, CSS, Javascript와 직접적으로 호환이 되기 때문에 무한한 확장성이 있다. 바로 중급 레벨에서 배우고 싶으시다면 Intermediate Level을 클릭한다.

(1) 유로 시각화 Tool과 비교

기존에 시각화 Tool과 비교하는 가장 빠른 방법은 show room을 비교하면 된다. - Power BI - Tableau - Shiny

각각의 차이는 있지만, Shiny는 무료로 제작할 수가 있다. Shiny는 꼭 알아두면 좋고, Power BITableau는 회사에서 도입하는 시스템을 따라가면 좋다. 참고로 강사가 사용했던 BI Tool은 Power BI, Google Data Studio가 있다. 그래도 Shiny가 좋은 이유는 HTML & CSS로 조금 더 미세한 작업을 가미할 수 있다는 점, 그리고 내가 원하는 그래프를 만들 수 있다는 점. 연구자 또는 개발자의 자유도가 높은 것이 Shiny의 가장 큰 장점이다.

(2) 어떤 역량을 키워야 할까?

Shiny를 잘할려면 R은 기본이지만, HTML, CSS, 그리고 JavaScript를 더 공부를 많이 해야 한다. 기존에 Front-End 개발자라면, R을 배워두면 데이터쪽 관련 일도 겸업할 수 있을 것 같다. 데이터 분석의 마지막은 결국엔 대시보드 개발과 연관이 깊다.

(3) Sample Dashboard

간단하게 Shiny Sample을 확인해보자.

(4) 어떤 툴을 사용해야 할까?

사실 답하기 어렵다. 회사에 처한 환경과 본인이 속한 팀에 따라 Tool의 사용법과 의도가 달라지기 때문이다.

그러나, 객관적으로 볼 때, Power BI와 같은 Tool을 사용할 때는 한번 만들어진 대시보드를 지속적으로 사용하거나, 또한 주 사용자들이 프로그래밍에 익숙하지 않은 분들이 많은데, 회사의 자원이 넉넉한 대기업 또는 유니콘 같은 기업의 경우 비용을 들이더라도 Power BI 툴을 사용하는 것이 좋다.

반대로, Shiny와 같은 오픈소스를 사용하려면 중소기업 또는 스타트업인데 데이터의 접근성이 보다 쉬운 경우 간단한 프로토타입 제작 및 저 비용으로 최고의 성과를 올릴 수 있는 장점이 있다. 여기에서 업무성과가 지속적으로 나오고 데이터 대시보드 개발 및 활용의 사내 분위기가 꾸준하게 조성이 되면 Shiny Enterprise 또는 Power BI 같은 유료 툴로 전환하는 것이다.

Power BI Vs. R Shiny의 관점보다는 결국 ’어떻게 대시보드를 활용할 것인가?’라는 기본적인 전제가 마련이 되면 무엇을 사용하더라도 조직의 성과에 기여할 것은 자명하다.

II. Get Started

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!