R_Shiny関係の備忘録
1. Shiny公式サイト
2. 空間と時間におけるデータの可視化:インタラクティブなフレームワーク
- Visualization of Data in Space and Time: An Interactive Framework
- IoTデータの視覚化に使えそうです。Pythonとどちらがいいのかな。
3. Shiny App for Database
SQLite を使用して作成されているようです。以下にダッシュボードの作成方法が載っています。
Connecting SQLite Database and Shiny App for Business Intelligence
4. デプロイ(公開)
- ホスティングと展開
- R Markdownは、htmlファイルとしてWeb上にデプロイすればよいですが、Shinyアプリ及び
runtime: shiny
を追加したR Markdownは、バックグランドでShinyが必要です。
- クラウドへのデプロイ Shinyapps.io で数分でウェブ上でShinyアプリをホストできます。無料タイプもあります。
- オンプレミスまたは VPC (オープンソース) に展開する Shiny Server
- ソースを配布してRStudioで実行(shinyに係るパッケイジが必要:個人向け)
5. オンライン書籍
- Mastering Shiny
- 日本語の書籍は、ネットで調べる以上のものがないようです。
6. ライセンス
7. 日本語対策について
- ui.R,server.R,grobal.R内に日本語が入っているとエラーになることがあります。 そういう時はui.R等には直接日本語を書かずに別ファイルに書いてからsource()で読み込めばエラーを回避できます。
8. エラー対策
8-1. install.packages(“ggmap”, dependences =T)
- ERROR: configuration failed for package ‘curl’
- sudo apt-get install libcurl4-openssl-dev
8-2. install.packages(“leaflet”, dependences =T)
- configure: error: gdal-config not found or not executable.
- sudo add-apt-repository ppa:ubuntugis/ubuntugis-unstable
- sudo apt-get update
- sudo apt-get install libgdal-dev libgeos-dev libproj-dev
8-3. toJSON関数(jsonlite)の挙動
- ubox()なし
x <- list(aaa = "あああ", bbb = "いいい") %>% toJASON
cat(x)
{"aaa":["あああ"],"bbb":["いいい"]}
- ubox()あり
x <- list(aaa = unbox("あああ"), bbb = unbox("いいい")) %>% toJASON
cat(x)
{"aaa":"あああ","bbb":"いいい"}
- OK!
8-4. install.packages(“devtools”, dependences =TRUE)
- rootで実行
- apt update - apt upgrade - apt install libcurl4-openssl-dev - apt-get install libbz2-dev liblzma-dev - apt-get install libfontconfig1-dev - apt-get install libharfbuzz-dev libfribidi-dev - apt-get install libfreetype6-dev libpng-dev libtiff5-dev libjpeg-dev
8-5. install_github(‘ramnathv/rCharts’)
- 以下のようにinstall_githubが使えるようにします。
library(remotes)
install_github(‘ramnathv/rCharts’)
9. 調べたこと
9-1. Shiny index.html sample-apps
- :3838/のトップページとサンプルアプルを変更したい場合:以下がデフォルトで置かれています。
- /srv/shiny-server/index.html -> /opt/shiny-server/samples/welcome.html
- /srv/shiny-server/sample-apps -> /opt/shiny-server/samples/sample-apps
9-2. ShinyをHPに埋め込む
``` ``
9-3. リアルタイム表示
Shiny を使用したリアルタイムのデータ視覚化のシミュレーションにあるようにリアルタイムに表示を変えることもできそうです。
9-4. 関数名の重複エラーがでる場合
- toJSON関数が、shinyとhttrで重複している場合は、以下のように使うパケイジ名を明確にします。
hhtr::toJSON(...)
10. 自社のサーバーでShinyアプリを公開する
10-1. sms-shinyアプリの配置
- /opt/shiny-server/の配下にsms-shinyアプリを置きます。
- sudo cp -r /home/rstudio/workspace/github/sms-shiny /opt/shiny-server/sms-shiny
- /opt/shiny-server/sms-shiny
- /opt/shiny-server/sms-shinyアプリのリンクを/srv/shiny-server/の配下に置きます。
- sudo ln -s /opt/shiny-server/sms-shiny .
- sms-shiny -> /opt/shiny-server/samples/sms-shiny/
10-2. シャイニーサーバーを設定
- /etc/shiny-server/shiny-server.confの変更
- [preserve_logs true;]を追記するとどのような状況でもログを保持できます。
/# ADD all log save 2022-09-02 preserve_logs true; /# Instruct Shiny Server to run applications as the user "shiny" run_as shiny; /# Define a server that listens on port 3838 server { listen 3838; /# Define a location at the base URL location / { /# Host the directory of Shiny Apps stored in this directory site_dir /srv/shiny-server; /# Log all Shiny output to files in this directory log_dir /var/log/shiny-server; /# When a user visits the base URL rather than a particular application, /# an index of the applications available in this directory will be shown. directory_index on; } }
- directory_index on; → directory_index off;にした方がよいでしょう。
10-3. ログでシャイニーアプリをデバッグする
- ログディレクトリへ移動し調べます。
cd /var/log/shiny-server ls -al rmd-shiny-20220830-034118-32877.log rmd-shiny-20220830-112101-37013.log sms-shiny-shiny-20220903-023934-38343.log sudo cat Error in library(httr) : there is no package called ‘httr’ Calls: runApp ... sourceUTF8 -> eval -> eval -> ..stacktraceon.. -> library Execution halted
- library(httr) がないのでエラーが出ています。
- ユーザーrstudioでは、動くのですがユーザーshinyでは動きませんので追加します。
- ユーザーshinyになってhomeディレクトリに移動します。
su - shiny $ pwd /home/shiny
- httrをインストールします。
R > install.packages("httr") > The downloaded source packages are in ‘/tmp/RtmpGAUDSy/downloaded_packages’
10-4. shinyユーザーのログインshellを変える。
- /bin/sh → /bin/bash
sudo chsh shiny Changing the login shell for shiny Enter the new value, or press ENTER for the default Login Shell [/bin/sh]: /bin/bash cat /etc/passwd shiny❌997:997::/home/shiny:/bin/sh
10-5. shinyユーザーのUIDを変える。
- Rstudioは、UIDが1000以上でないとログインできないため。
- groupmod ではなく、usermod ならば、usermod -g 1008 -u 1008
でホームディレクトリ以下のファイルのgidも変更される。 - shinyのGIDを調べる cat /etc/group shiny❌998:
- UIDだけ変更します。
usermod -u 1003 shiny shiny❌1003:998::/home/shiny:/bin/bash
- Rstdioにログインできます。OK!
- shinyでログインしてアプリを開発し、公開できるようになりました。
10-6. shinyアプリのデプロイ
- ユーザー「shiny」で開発したアプリを公開のためにデプロイします。
- アプリ名を
とします。 - rootユーザーで行います。
作成したアプリを/opt/shiny-server/の配下に置きます。 /opt/shiny-server/<app> 配置したApのリンクを/srv/shiny-server/の配下に置きます。 /srv/shiny-server/<app> リンクコマンド cd /srv/shiny-server sudo ln -s /srv/shiny-server/<app> .
- アクセスURLは、ドメインまたはIP:3838/
で表示できます。 - OK!
以上