1. Shiny公式サイト
2. 空間と時間におけるデータの可視化:インタラクティブなフレームワーク
3. Shiny App for Database
4. デプロイ(公開)
  • ホスティングと展開
  • R Markdownは、htmlファイルとしてWeb上にデプロイすればよいですが、Shinyアプリ及びruntime: shinyを追加したR Markdownは、バックグランドでShinyが必要です。
  1. クラウドへのデプロイ Shinyapps.io で数分でウェブ上でShinyアプリをホストできます。無料タイプもあります。
  2. オンプレミスまたは VPC (オープンソース) に展開する Shiny Server
  3. ソースを配布して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!
以上