R 코드 (Shiny)를 배포하고 싶습니다.

8251 단어 RAdventCalendarShiny
htp // stk에서 v. 하테나 bぉg. 코m/엔트리/2017/02/12/204631
예전에 쓴 기사의 리라이트판이 됩니다.
※Windows에서의 동작을 전제로 하고 있습니다.

R 코드를 배포하고 싶습니다.



R로 쓴 코드를 배포하는 수단도 상당히 충실해 왔습니다.
  • RInno라는 라이브러리 소개 기사
  • Shiny 앱 로컬 사용(RInno)

  • Jupyter Note에서 Python과 R을 공존시키는 시도
  • Jupyter에서 하나의 노트북에 R과 Python을 공존


  • 등, 여러가지 좋은 배포·공유 수단이 있는 가운데 이번은, 포터블판의 R에 전부 돌진해 R환경을 통째로 배포한다고 하는 역기의 소개입니다.

    Shiny 앱을 배포해보기



    앱 준비



    Shiny 앱을 만들고 R 환경이 없는 사용자에게 배포한다고 생각합니다.
    먼저 수중 환경에서 Shiny 프로젝트를 만들어 둡시다.

    New Project에서 선택하기만 하면 됩니다. 그대로 움직이면 샘플이 시작되네요.

    코드 추가



    페이지를 닫을 때 R을 종료시키는 설명을 추가합니다.
    app.R 혹은 server.R 의 server 함수의 부분을 이하를 추기합니다.
  • 인수에 session 추가
  • session$onSessionEnded 추가

  • app.R
    # Define server logic required to draw a histogram
    server <- function(input, output, session) {
    
       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')
       })
    
       # セッション切れたときにRを終了させる
       session$onSessionEnded(function(){
         stopApp()
         q("no")
       })
    }
    

    R Portable 배포 및 라이브러리 설치



    원래 기사에서 조금 개선된 부분입니다.
    원래 기사에서는 필요한 라이브러리를 직접 지정 폴더에 복사하는 순서로 하고 있습니다만, 의존 라이브러리를 조사하는 것이 귀찮기 때문에, 자동으로 할 수 있도록 합시다.

    먼저 R Portable 을 다운로드합니다.
    압축을 풀고 ./App/R-Portable/bin/x64/Rgui.exe 를 실행합니다.
    그래서 .libPaths() 를 실행합니다.
    라이브러리는 여기에 설치됩니다.
    > .libPaths()
    [1] "C:/Users/[ユーザ名]/Documents/R/win-library/3.5"
    [2] "[インストール先]/R-Portable/App/R-Portable/library"  
    

    이런 식으로 로컬의 win-library 폴더와 R Portable 폴더 내의 library 폴더가 설정되어 있다고 생각합니다.
    이제 설정을 R Portable 디렉토리에만 적용되도록 다시 씁니다.
    > .libPaths(.libPaths()[2])
    > .libPaths()
    [1] "[インストール先]/R-Portable/App/R-Portable/library"
    

    이 상태에서 필요한 라이브러리를 설치합니다.install.packages("shiny")이제 [インストール先]/R-Portable/App/R-Portable/library에 필요한 라이브러리가 설치됩니다.

    시작 스크립트



    다음과 같은 디렉토리 구성으로 합니다.
    App/
    ├ ShinyApps/
    │ ├ app.R #shiny 앱 소스 코드
    │ ├ run.vbs # 앱 전체 시작
    │ └ runShinyApp.R #shiny 시작 스크립트

    └ R-Portable/

    shiny를 시작하는 스크립트를 작성합니다.

    runShinyApp.R
    .libPaths("../R-Portable/App/R-Portable/library")
    shiny::runApp("./",port=8888,launch.browser=TRUE)
    

    전체를 시작하는 스크립트는 이런 느낌
    CreateObject("Wscript.Shell").Run "..\R-Portable\App\R-Portable\bin\R.exe CMD BATCH --vanilla --slave runShinyApp.R" & " " & RND & " ", 0, False
    

    이제 앱/디렉토리를 통째로 배포하고 run.vbs를 실행하면 브라우저에 shiny 페이지가 표시됩니다.


    원래 기사 이나 대원 기사 에서는, 포터블판의 브라우저를 사용하는 것으로 만전인 체제(?)로 하고 있습니다만, 이번은 간략판입니다. 낡은 브라우저를 사용하고 있는 사람에게 배포하는 경우는 휴대용판 브라우저도 설정해 두면 안심입니다. (용량은 힘들지만)

    좋은 웹페이지 즐겨찾기