/shinyexample

Shiny アプリケーション開発プロジェクトのサンプル. golem, renv, Docker を使用.

Primary LanguageR

shinyexample

Shiny アプリケーション開発プロジェクトのサンプル. golem のプロジェクトテンプレート shinyexample を元に作成.

特徴

  • golem による Shiny アプリ開発
  • renv によるパッケージ管理
  • Docker / rocker による開発環境およびアプリケーションのコンテナ化

構成

  • 開発環境用 RStudio Server コンテナ
    • dev/docker/Dockerfile でビルドされる Docker イメージ
    • rocker/rstudio をベースとする
    • パッケージはイメージ内に含まれず, renv のパッケージキャッシュを使って Docker ホストからボリュームとしてマウントする
    • Shiny アプリケーションの開発時にブラウザで localhost:8787 からアクセスして使用する
  • Shiny アプリケーションコンテナ
    • ./Dockerfile でビルドされる Docker イメージ
    • rocker/r-ver をベースとする
    • 開発したパッケージ (Shiny アプリ) と依存関係パッケージがインストールされた状態でイメージに含まれる
    • RStudio を含まない
    • 開発した Shiny アプリのサービスがポート 80 で起動する

初期設定

次のようにして開発環境の初期設定を行う.

  • このプロジェクトの GitHub リポジトリをローカル環境の適当な場所(例: ~/ghq/github.com/username/shinyexample)にクローンする.
  • .env.example ファイルをコピーして .env ファイルを作成する.
  • .env ファイルを編集して下記の項目を設定する.
環境変数 意味 デフォルト 変更例
RENV_PATHS_CACHE_HOST renv パッケージキャッシュのディレクトリパス ./dev/renv/cache ~/Library/Application Support/renv/cache
DOTFILES_ROOT dotfiles のディレクトリパス (任意) ./dev/dotfiles ~/ghq/username/rproject-dotfiles
GITHUB_SSH_IDENTITY GitHub 接続用 SSH 秘密鍵のファイルパス (任意) /dev/null ~/.ssh/id_rsa

renv のパッケージキャッシュはホストマシンに1つ作成して固定し, プロジェクト間で共有するのが推奨. Dotfiles や GitHub 用 SSH 鍵は設定しなくても開発可能.

開発フロー

開発環境の起動〜終了

  1. このディレクトリで docker compose up -d を実行して RStudio Server の Docker コンテナを起動する
  2. ブラウザで http://localhost:8787 を開き RStudio Server に接続する
  3. RStudio Server 上で開発を行う
    • RStudio でこのプロジェクトを開く
    • dev/00_renv.R の内容に従って renv 環境をロードする
    • 初回は dev/01_start.R の内容に沿って初期設定を行う
    • dev/02_dev.R にあるヘルパー関数を利用しながらソースコードの編集, テストなどを行う
  4. 開発を中断するときは, このディレクトリで docker compose down を実行して Docker コンテナを停止する

アプリケーションイメージのビルドと動作確認

  1. このディレクトリで docker compose build を実行して, Shiny アプリケーションのイメージをビルドする
  2. docker compose restart shiny でビルドしたイメージからコンテナを起動する
  3. ブラウザで http://localhost:8080 を開き, Shiny Server に接続する
  4. Shiny アプリケーションの動作を確認する

参考リンク