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")
})
}
参考
- 「RInno - How to install local shiny apps」https://ficonsulting.github.io/RInno