코드로 만드는 웹 애플리케이션
Shiny는 R로 인터랙티브 웹 애플리케이션을 만드는 프레임워크입니다. HTML, CSS, JavaScript를 몰라도 R 코드만으로 대시보드, 데이터 탐색 도구, 분석 리포트 앱을 만들 수 있습니다.
library(shiny)
ui <- fluidPage(
sliderInput("n", "데이터 수", min = 10, max = 1000, value = 100),
plotOutput("hist")
)
server <- function(input, output) {
output$hist <- renderPlot({
hist(rnorm(input$n), main = paste(input$n, "개의 정규분포 난수"))
})
}
shinyApp(ui, server)
이 코드를 RStudio에서 실행하면 브라우저에 슬라이더와 히스토그램이 나타납니다. 슬라이더를 움직이면 히스토그램이 즉시 바뀝니다. 이것이 Shiny의 핵심인 반응형 프로그래밍입니다.
Shiny가 활용되는 곳
Shiny는 특히 데이터 분석 결과를 비개발자에게 전달해야 할 때 빛을 발합니다.
| 분야 | 활용 사례 |
|---|---|
| 학술 연구 | 논문 부록으로 인터랙티브 시각화 제공 |
| 의료/제약 | 임상시험 데이터 대시보드, 환자 코호트 탐색 |
| 금융 | 포트폴리오 모니터링, 리스크 분석 대시보드 |
| 공공 정책 | 지역별 통계 지도, 인구 트렌드 시각화 |
| 교육 | 통계 개념 시뮬레이션 (중심극한정리 체험 등) |
Shiny의 특징
반응형 프로그래밍
Shiny의 가장 큰 특징은 반응형(reactive) 실행 모델입니다. 사용자가 입력을 바꾸면 해당 입력에 의존하는 출력만 자동으로 다시 계산됩니다. 개발자가 "언제 무엇을 갱신할지" 직접 관리하지 않아도 됩니다.
R 생태계 완전 활용
ggplot2, plotly, leaflet, DT 등 R의 시각화 패키지를 그대로 웹앱에서 사용할 수 있습니다. tidyverse로 전처리한 결과를 바로 대시보드에 표시하고, 통계 분석 결과를 실시간으로 업데이트합니다.
프론트엔드 지식 불필요
HTML/CSS/JavaScript를 모르는 데이터 분석가도 R 코드만으로 완전한 웹앱을 만들 수 있습니다. 물론 CSS로 디자인을 커스터마이징할 수도 있지만 필수는 아닙니다.
누구를 위한 교재인가
- R로 데이터 분석을 할 줄 알지만, 결과를 웹앱으로 공유하고 싶은 분
- 대시보드를 만들어야 하는데 Tableau나 Power BI 대신 R을 쓰고 싶은 분
- 연구 결과를 인터랙티브 시각화로 제공하고 싶은 연구자
- "실전 R 데이터 분석(1권)"이나 "실전 R 통계 분석(2권)"을 학습한 분