LoginSignup
12
11

More than 5 years have passed since last update.

Shinyアプリのローカル利用(RInno)

Last updated at Posted at 2017-05-16

1. はじめに

 Rで作成したShinyアプリを共有するには、①Shiny serverを利用する。②RがインストールされたPCで実行してもらう等の方法が考えられます。しかしながら、どちらの方法もハードルが低くありません。
 今回は、"RInno"を利用して、一般のアプリケーションと同様にローカルにインストールしてShinyアプリを実行する方法を紹介します。(対象はWindowsのみです。)※1

2. RInnoのインストール

Rで以下の通り記述し、GUIでRInnoをインストールします。

install.packages("RInno")
require(RInno)
RInno::install_inno()

3. アプリの準備

今回は、サンプルを利用して、ワーキングディレクトリにShinyアプリを準備します。

example_app(app_dir = "app") 

ワーキングディレクトリにappというフォルダが作成されます。自分で作成したアプリをコンパイルする場合には、app.R、もしくはui.Rとserver.Rを含むフォルダをワーキングディレクトリに置いてください。

4. 設定

次に、create_appでアプリの設定を行います。

create_app(app_name = "test_app",
           app_dir = "フォルダパス/app",
           include_R = T, # デフォルトはFなので、Tに変更
           R_version = 2.2.1, # 古いバージョンを利用する場合は指定 
           pkgs = c("xxxx", "yyyy"))

 配布する相手が、Rをインストールしていなかったり、特定のバージョンのアプリを使用する場合には、include_R = TRUE, R_version = x.x.xを指定します。また、pkgsで利用するパッケージを指定します。デフォルトでは、pkgs = c("jsonlite", "shiny", "magrittr")となっています。他にもパスワードプロテクションなどのオプションがあります。※1

 実行が終わると、appフォルダ内に色々なファイルが作成されます。(アプリのアイコンも置かれます。変更することも可能です。)

5. コンパイル

続いてコンパイルを実施します。

compile_iss()

コンパイルが終了すると、appフォルダ内に、RInno_installerというフォルダが作成されます。

6. アプリのインストールと起動

 RInno_installerフォルダ内のtest_app.exeをダブルクリックすると、インストールが開始され、デスクトップ上にショートカットが作成されます。起動するとブラウザが立ち上がり、アプリが実行されます。
 終了は閉じるだけ?だと思いますが、Rscript.exeが起動したままになっているので、タスクマネージャーでプロセスを終了すると再度起動できます。いい方法があったら教えて下さい。

7. 追記(プロセスの終了)

 自作のShinyアプリの場合、Rを終了するコードを、server.Rの方に記述しておく必要があるようです。そうしないとブラウザを閉じた後、アプリが再起動できなくなります。

shinyServer(function(input, output, session) {


  output$plot1 <- renderPlot({

          # 処理

      })

  # ここから追記
  # Close the app when the session completes
  session$onSessionEnded(function() {
    stopApp()
    q("no")
  })

}

参考

  1. 「RInno - How to install local shiny apps」https://ficonsulting.github.io/RInno
12
11
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
11