はじめに
shiny server を使って、パブリックなBIダッシュボードをプログラミングできないか、と考えた。ShinyServerってマルチユーザーアクセスできるのかどうか、が後々ポイントにもなりそうだが、まずは黙ってサーバー構築してみる。
方法
こちらの手順に従い、Rをセットアップする。
https://ciksiti.com/ja/chapters/11357-how-to-install-r-and-rstudio-on-ubuntu-22-04
・・・が、記事の一部が間違っているのではないだろうか。この記事はFocal(20.04)のリポジトリからインストールしているが、本稿執筆時点では Jammy(22.04)のリポジトリがすでに存在している。
よって、次のコマンドでレポジトリを追加するほうが、より適切。
$sudo add-apt-repository "deb https://cloud.r-project.org/bin/linux/ubuntu $(lsb_release -cs)-cran40/"
次に Shiny と Shiny Server をインストールする。公式サイトを参考に。Ubuntu 18.04+ を選べばよい。
なお、合わせて R に rmarkdown パッケージをインストールしておく。
$ sudo su - -c "R -e \"install.packages(‘rmarkdown’, repos='https://cran.rstudio.com/')\""
ShinyServerの設定
公式サイトの説明等で確認。重要なのは、サイトのポート番号(listen)とルートディレクトリ(site_dir)がどこであるか、ということ。
https://docs.posit.co/shiny-server/#default-configuration
$ cat /etc/shiny-server/shiny-server.conf
<AWSを使っている場合>
サイトの listen ポートをセキュリティグループの設定ルールでアクセス可能にする。(AWSのセキュリティルール入力方法に従うこと)
接続テスト
http://(EC2インスタンスのパブリックIPアドレス):(サイトの listenポート番号)/
shiny-appをサイトのルートディレクトリに設置する。
サイトのルートディレクトリ(site_dir)を開くと、サンプルがつぎのように配置されているはず。
index.html を読むと、その中で <iframe src=”./sample-apps/hello”> および <iframe src=”./sample-apps/rmd/”>で呼び出していることがわかる。src=””で呼び出せるのであれば、このリンクに直アクセスして画面が描画できるはず、とわかる。
そこで、サイトのルートディレクトリに 自分の shiny-app 用のフォルダを作ってファイルを配置し、そのリンクを公開すればよい。
shiny-app の作り方はここでは触れないが、ローカル環境など別環境で開発してファイルをアップロードするのが普通だろう。当然、開発環境で必要としたライブラリのインストールを構築したサーバーに行い、Rの動作環境を同じにしなければ、shiny-app は動作しない。この環境整備のほうが大変かもしれない。
おわりに
shiny-server の構築を行った。shiny-serverのセットアップよりも、Rの動作環境構築のほうが面倒かもしれない。
しばらくshiny-serverへの複数ユーザー同時アクセス時の動作状況などをみながら、パブリックなBIツールの構築ができるかどうか検証してみることとする。