Chapter 1 서버와 유저인터페이스

인류가 생산하는 거의 모든 정보는 웹(World Wide Web; W3)에 담겨 있습니다. 우리는 아마도 거의 매일 크롬, 사파리, 파이어폭스 등 웹브라우저라고 불리는 프로그램을 통해, 웹에 담겨있는 문서나 이미지 등의 정보를 읽어들여 컴퓨터나 스마트폰의 화면을 통해 보고 있습니다. 각 웹페이지에 있는 링크를 따라 다른 문서로 이동하거나 그 페이지로 정보를 보내기도 합니다. 우리는 이것을 웹서핑이라고 부르죠.

1.1 서버와 클라이언트

우리는 인터넷을 통해 어딘가에 저장되어 있는 웹페이지를 읽습니다. 이렇게 웹이 저장되어 있는 (어딘가에 있는 그) 컴퓨터를 서버(Server)라고 합니다. 클라이언트(Client)는 이러한 정보나 서비스를 소비하는 사람을 의미합니다. 인터넷은 수많은 서버들이 거미줄처럼 얽혀서 형성되어 있습니다.

1.2 샤이니 서버와 유저인터페이스

샤이니는 R을 서버로 이용하여 결과물을 웹페이지에 보여주는 애플리케이션이라고 생각하시면 좋을 것 같습니다. 조금 나누어 설명하자면:

  1. R이 실행되고 있는 서버 컴퓨터가 있고
  2. 다른 곳에 있는 클라이언트가 웹브라우저를 통해 서버에 정보(input 값)를 전달해주면 그것을
  3. 서버에 있는 R이 그래프와 같은 결과값을 계산해
  4. 다시 클라이언트에게 보여주는 것 입니다.

브라우저를 통해 사용자에게 보여지는 화면을 UI (User Interface) 라고 부릅니다. UI는 사용자에게 표나 그래프로 정보를 제공해주기도 하고 사용자가 서버로 정보를 보낼 수 있는 화면을 제공하기도 합니다. 우리가 자주 접속하는 Google이나 네이버와 같은 웹페이지에서 보이는 화면을 생각하면 쉽게 상상해 볼 수 있을 것입니다. 샤이니는 UI와 Server로 이루어져 있습니다. 그리고 이 둘은 언제나 함께 동작합니다. 서버에서 UI로 화면을 표시해 주기도 하고, UI에서 서버로 값을 전달해 주기도 합니다. 샤이니의 가장 기본적인 뼈대는 다음과 같습니다.

library(shiny)

ui <- fluidPage(
  
)

server <- function(input, output, session) {
  
}

shinyApp(ui, server)

위 R 코드에는 uiserver라는 두개의 객체가 존재합니다. 그리고 shinyApp(ui, server) 이라는 함수는 이 두개의 객체들을 하나로 묶어 웹애플리케이션의 형태로 사용자들에게 보여줍니다.

1.3 더 알아보기

혹시 웹에 대해 더 알고 싶은 경우 생활코딩의 WEB1 이라는 온라인 수업을 추천합니다. 이 수업은 무료이며 마치는데 생각보다 많은 시간이 걸리지 않습니다. 두세시간 정도 egoing 선생님의 친절한 강의를 듣고 나면 금새 웹과 친해질 수 있을 것입니다. 무엇보다 결과적으로 샤이니를 더 깊게 이해할 수 있게 될것입니다.