【R】Shiny Serverでradiantを使う。

2023-01-28

データ分析や簡単な統計解析にradiantを使っていますが、とても使いやすいので職場の標準的な分析ツールにしたいと思っています。

ところが「radiantが便利だからインストールして使ってね」と言っても、まずRのインストールから始まりRstudio、radiantのインストールを各自で行ってもらうことが難しく、かと言って私が全員分をセットアップするのも少々大変です。

なので、簡単に全員が使えるようにShiny Serverでradiantを動かすことにしました。

とは言え、別のShinyアプリを動かしている本番環境にテスト無く導入するのも怖いので、まずは実験機でセットアップします。

手順

2023年1月時点の情報のため、ダウンロードするバージョン等はリンク先の公式サイトで確認してください。

Ubuntu Serverに最新版のRをインストール

aptでインストールされるRはバージョンが古くradiantがインストールできないため、リポジトリを追加して最新版のRをインストールします。

~$ sudo apt update
~$ sudo apt install --no-install-recommends software-properties-common dirmngr
~$ wget -qO- https://cloud.r-project.org/bin/linux/ubuntu/marutter_pubkey.asc | sudo tee -a /etc/apt/trusted.gpg.d/cran_ubuntu_key.asc
~$ sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
~$ sudo apt install r-base r-base-dev

radiantのインストールには必要ありませんが、何かと使う事があるためr-base-devもインストールしています。

不要な場合はインストールしなくても問題ありません。

必要なプログラムのインストール

radiantのインストールに必要なプログラム(libssl-dev、cmake、libcurl4-openssl-dev)をインストールします。

~$ sudo apt install libssl-dev cmake libcurl4-openssl-dev

shinyとradiantのインストール

一般ユーザーでインストールするとShiny Serverからアクセスできなくなるため、rootユーザーでインストールします。

~$ sudo su
パスワードを入力
# R
R version 4.2.2 (2022-10-31 ucrt) -- "Innocent and Trusting"
...
> install.packages("radiant")

radiantをインストールするとshinyも一緒にインストールされるので、面倒くさがってradiantだけ指定しています。

必要なパッケージが多いので結構時間がかかります。

Shiny Serverのインストール

wgetでダウンロードするバージョンが変わる可能性があるため、公式サイトも確認してください。

~$ sudo apt-get install gdebi-core
~$ wget https://download3.rstudio.org/ubuntu-18.04/x86_64/shiny-server-1.5.20.1002-amd64.deb
~$ sudo gdebi shiny-server-1.5.20.1002-amd64.deb

Shiny Appのダウンロードと公開フォルダへ移動

~$ git clone https://github.com/vnijs/radiant
~$ sudo cp -r radiant/inst /srv/shiny-server/

この状態では/inst/app/にradiantがインストールされるので、サブディレクトリの名前は必要に応じて変更してください。

動作確認

ブラウザから「http://サーバーのIPアドレス:3838/inst/app」にアクセスしてradiantが動作するかを確認します。

メモ

Shiny Serverにインストールすると、ブラウザでアクセスするだけでradiantが使えるのでデータ分析のハードルは下がると思います。

ただ、使っているShiny Serverはオープンソース版のため同時アクセスには強くありません。

簡単なテストでは複数ユーザーが同時にradiantにアクセスしても問題なく使えていましたが、負荷が大きくなった場合の動作は未確認です。

非力なPCでは難しいかも…

実験機はBMAX B1の外付けハードディスクにインストールしたUbuntu Serverです。

テストでは普通に動作していましたが、再起動後にradiantにアクセスするとエラーになりました。

shiny-server.log

Error getting worker: Error: The application took too long to respond.

shinyだけでなく他のライブラリ読み込みが多いので、非力なPCではエラーが出やすくなる可能性があります。

改めてアクセスすれば動作したので、ハードウェア条件を考慮して導入してください。