MCP HubMCP Hub
Retour aux compétences

deploy-shiny-app

pjt222
Mis à jour Yesterday
4 vues
17
2
17
Voir sur GitHub
Documentationgeneral

À propos

Cette compétence déploie des applications Shiny vers shinyapps.io, Posit Connect ou des conteneurs Docker, en gérant la configuration de rsconnect, la génération de manifestes et la création de Dockerfile. Elle est utilisée lors de la publication d'applications pour les utilisateurs, de la migration depuis un environnement de développement local, de la conteneurisation pour Kubernetes/Docker, ou de la mise en place de pipelines de déploiement automatisés. L'outil gère l'intégralité du flux de travail de déploiement, incluant la configuration et la validation.

Installation rapide

Claude Code

Recommandé
Principal
npx skills add pjt222/agent-almanac -a claude-code
Commande PluginAlternatif
/plugin add https://github.com/pjt222/agent-almanac
Git CloneAlternatif
git clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/deploy-shiny-app

Copiez et collez cette commande dans Claude Code pour installer cette compétence

Documentation


name: deploy-shiny-app description: > Shinyアプリケーションをshinyapps.io、Posit Connect、またはDockerコンテナに デプロイします。rsconnectの設定、マニフェストの生成、Dockerfileの作成、 デプロイメントの検証を扱います。外部または内部ユーザー向けにShinyアプリを 公開するとき、ローカル開発からホスト環境に移行するとき、KubernetesまたはDocker デプロイメント用にShinyアプリをコンテナ化するとき、または自動デプロイメント パイプラインをセットアップするときに使用します。 locale: ja source_locale: en source_commit: 6f65f316 translator: claude-opus-4-6 translation_date: 2026-03-16 license: MIT allowed-tools: Read Write Edit Bash Grep Glob metadata: author: Philipp Thoss version: "1.0" domain: shiny complexity: basic language: R tags: shiny, deployment, shinyapps-io, posit-connect, docker, rsconnect

Shinyアプリのデプロイ

ShinyアプリケーションをShinyapps.io、Posit Connect、またはDockerコンテナにデプロイします。

使用タイミング

  • 外部または内部ユーザー向けにShinyアプリを公開するとき
  • ローカル開発からホスト環境に移行するとき
  • KubernetesまたはDockerデプロイメント用にShinyアプリをコンテナ化するとき
  • 自動デプロイメントパイプラインをセットアップするとき

入力

  • 必須: Shinyアプリケーションへのパス
  • 必須: デプロイ先(shinyapps.io、Posit Connect、またはDocker)
  • オプション: アカウント名とトークン(shinyapps.io/Connect用)
  • オプション: インスタンスサイズの選択
  • オプション: カスタムドメインまたはURLパス

手順

ステップ1: アプリケーションの準備

アプリが自己完結型でデプロイ可能であることを確認します:

# 欠けている依存関係を確認
rsconnect::appDependencies("path/to/app")

# golemアプリの場合、DESCRIPTIONにすべてのImportsがリストされているか確認
devtools::check()

# アプリがクリーンに実行されることを確認
shiny::runApp("path/to/app")

以下のファイルが存在することを確認してください:

  • app.R(またはui.R + server.R
  • renv.lock(再現可能なデプロイメントに推奨)
  • .Rprofileが本番環境でmcptools::mcp_session()を呼び出していないこと

期待結果: アプリがエラーなしでローカルに実行でき、すべての依存関係がキャプチャされています。

失敗時: appDependencies()が欠けているパッケージを報告する場合はインストールしてrenv.lockを更新してください。アプリがシステムライブラリ(例:gdal、curl)を使用する場合は、Dockerパス用にメモしてください。

ステップ2a: shinyapps.ioへのデプロイ

# 一回限りのアカウントセットアップ
rsconnect::setAccountInfo(
  name = "your-account",
  token = Sys.getenv("SHINYAPPS_TOKEN"),
  secret = Sys.getenv("SHINYAPPS_SECRET")
)

# デプロイ
rsconnect::deployApp(
  appDir = "path/to/app",
  appName = "my-app",
  appTitle = "My Application",
  account = "your-account",
  forceUpdate = TRUE
)

認証情報は.Renvironに保存してください(コードには絶対に書かない):

# .Renviron
SHINYAPPS_TOKEN=your_token_here
SHINYAPPS_SECRET=your_secret_here

期待結果: アプリがデプロイされhttps://your-account.shinyapps.io/my-app/でアクセス可能になります。

失敗時: 認証が失敗する場合は、shinyapps.ioダッシュボード > Account > Tokensでトークンを再生成してください。サーバーでパッケージのインストールが失敗する場合は、すべてのパッケージがCRANで入手可能か確認してください — shinyapps.ioはデフォルトでGitHubからインストールできません。

ステップ2b: Posit Connectへのデプロイ

# サーバーの登録(一回限り)
rsconnect::addServer(
  url = "https://connect.example.com",
  name = "production"
)

# 認証(一回限り)
rsconnect::connectApiUser(
  account = "your-username",
  server = "production",
  apiKey = Sys.getenv("CONNECT_API_KEY")
)

# デプロイ
rsconnect::deployApp(
  appDir = "path/to/app",
  appName = "my-app",
  server = "production",
  account = "your-username"
)

期待結果: アプリがデプロイされてPosit Connectインスタンスでアクセス可能になります。

失敗時: サーバーが接続を拒否する場合は、APIキーとサーバーURLを確認してください。パッケージのインストールが失敗する場合は、Connectが必要なリポジトリ(CRAN、内部CRANライクなリポジトリ)にアクセスできるか確認してください。

ステップ2c: Dockerでのデプロイ

Dockerfileを作成します:

FROM rocker/shiny-verse:4.4.0

# システム依存関係のインストール
RUN apt-get update && apt-get install -y \
    libcurl4-openssl-dev \
    libssl-dev \
    libxml2-dev \
    && rm -rf /var/lib/apt/lists/*

# Rパッケージのインストール
RUN R -e "install.packages(c('shiny', 'bslib', 'DT', 'plotly'))"

# アプリをコピー
COPY . /srv/shiny-server/myapp/

# Shiny Serverの設定
COPY shiny-server.conf /etc/shiny-server/shiny-server.conf

# ポートを公開
EXPOSE 3838

# 実行
CMD ["/usr/bin/shiny-server"]

shiny-server.confを作成します:

run_as shiny;

server {
  listen 3838;

  location / {
    site_dir /srv/shiny-server/myapp;
    log_dir /var/log/shiny-server;
    directory_index on;
  }
}

ビルドと実行:

docker build -t myapp:latest .
docker run -p 3838:3838 myapp:latest

期待結果: アプリがhttp://localhost:3838でアクセス可能になります。

失敗時: パッケージのインストールでビルドが失敗する場合は、欠けているシステムライブラリをapt-get installの行に追加してください。アプリが読み込まれない場合はShiny Serverのログを確認してください:docker exec <container> cat /var/log/shiny-server/*.log

ステップ3: デプロイメントの確認

# デプロイされたURLが応答するか確認
response <- httr::GET("https://your-app-url/")
httr::status_code(response)  # 200であるべき

# Dockerの場合
response <- httr::GET("http://localhost:3838/")
httr::status_code(response)

手動確認チェックリスト:

  1. アプリがエラーなしで読み込まれる
  2. すべてのインタラクティブ要素が応答する
  3. デプロイされた環境でデータ接続が機能する
  4. 認証/認可が機能する(該当する場合)

期待結果: アプリがHTTP 200で応答し、すべての機能が動作します。

失敗時: 特定のデプロイメントプラットフォームのサーバーログを確認してください。よくある問題:本番環境での環境変数の未設定、localhostの代わりに本番URLを使ったデータベース接続、またはローカルにしか存在しないファイルパス。

ステップ4: モニタリングの設定(オプション)

shinyapps.io

https://www.shinyapps.io/admin/#/applicationsのダッシュボードでモニタリングします。

Posit Connect

# API経由でデプロイメントの状態を確認
connectapi::connect(
  server = "https://connect.example.com",
  api_key = Sys.getenv("CONNECT_API_KEY")
)

Docker

DockerfileにHEALTHCHECKを追加します:

HEALTHCHECK --interval=30s --timeout=10s --retries=3 \
  CMD curl -f http://localhost:3838/ || exit 1

期待結果: デプロイメントターゲットのモニタリングが設定されています。

失敗時: ヘルスチェックが断続的に失敗する場合はタイムアウト値を増やしてください。Shinyアプリは初回読み込み時に応答が遅い場合があります。

バリデーション

  • アプリがエラーなしでデプロイされる
  • デプロイされたURLがHTTP 200で応答する
  • すべてのインタラクティブ機能が本番環境で動作する
  • 環境変数/シークレットが設定されている(ハードコードされていない)
  • 認証情報が.RenvironまたはCIシークレットに保存されており、コードには書かれていない
  • 再現可能な依存関係解決のためにrenv.lockがコミットされている

よくある落とし穴

  • ハードコードされたファイルパス: 絶対パスをsystem.file()(パッケージデータ用)または環境変数(外部リソース用)に置き換えてください。
  • 開発専用の依存関係: mcptools::mcp_session()devtoolsを読み込む.Rprofileをデプロイしないでください。条件付き読み込みまたは別のプロファイルを使用してください。
  • DockerでのシステムライブラリのMissing: sf、curl、xml2などのRパッケージにはシステムライブラリが必要です。Dockerfileのapt-get installに追加してください。
  • shinyapps.ioでのCRANのみパッケージ: shinyapps.ioはデフォルトでCRANからのみインストールします。GitHubのみのパッケージにはremotesパッケージとデプロイメント内での明示的なインストールが必要です。
  • 環境変数の忘れ: データベース認証情報、APIキー、その他のシークレットはコードとは別に、デプロイメント環境で設定する必要があります。

関連スキル

  • scaffold-shiny-app — デプロイ前のアプリ構造の作成
  • create-r-dockerfile — Rプロジェクトの詳細なDocker設定
  • setup-docker-compose — データベースを持つShiny用のマルチコンテナセットアップ
  • setup-github-actions-ci — 自動デプロイメントを含むCI/CD
  • optimize-shiny-performance — 本番デプロイ前のパフォーマンスチューニング

Dépôt GitHub

pjt222/agent-almanac
Chemin: i18n/ja/skills/deploy-shiny-app
0
agentsagentskillsai-assisted-developmentclaude-codeskillsteams

Compétences associées

railway-docs

Documentation

Cette compétence récupère la documentation actuelle de Railway pour répondre aux questions sur les fonctionnalités, le fonctionnement ou des URL spécifiques de la documentation. Elle garantit que les développeurs reçoivent des informations précises et à jour directement depuis les sources officielles de Railway. Utilisez-la lorsque les utilisateurs demandent comment fonctionne Railway ou font référence à la documentation de Railway.

Voir la compétence

n8n-code-python

Documentation

Cette compétence Claude offre un accompagnement expert pour écrire du code Python dans les nœuds Code de n8n, en particulier pour utiliser la bibliothèque standard de Python et travailler avec la syntaxe spéciale de n8n comme `_input`, `_json` et `_node`. Elle aide les développeurs à comprendre les limites de Python dans n8n et recommande d'utiliser JavaScript pour la plupart des workflows, tout en proposant des solutions Python pour des besoins spécifiques de transformation de données.

Voir la compétence

archon

Documentation

La compétence Archon offre une recherche sémantique alimentée par RAG et une gestion de projet via une API REST. Utilisez-la pour interroger la documentation, gérer des projets/tâches hiérarchiques et effectuer de la recherche de connaissances avec des capacités de téléchargement de documents. Priorisez toujours Archon en premier lors de la recherche dans une documentation externe avant d'utiliser d'autres sources.

Voir la compétence

n8n-code-javascript

Documentation

Cette compétence Claude fournit des conseils d'expert pour écrire du code JavaScript dans les nœuds Code d'n8n. Elle couvre la syntaxe essentielle spécifique à n8n comme les variables `$input`/`$json`, les assistants HTTP et la gestion des DateTime, tout en résolvant les erreurs courantes. Utilisez-la lors du développement de workflows n8n nécessitant un traitement JavaScript personnalisé dans les nœuds Code.

Voir la compétence