manage-renv-dependencies
À propos
Cette compétence aide les développeurs à gérer les dépendances des packages R en utilisant renv pour des environnements reproductibles. Elle prend en charge l'initialisation, les flux de travail de capture/restauration, le dépannage des problèmes courants et l'intration CI/CD. Utilisez-la lors de la configuration de nouveaux projets R, de la restauration d'environnements sur différentes machines, ou de l'intégration de renv dans des pipelines automatisés.
Installation rapide
Claude Code
Recommandénpx skills add pjt222/agent-almanac -a claude-code/plugin add https://github.com/pjt222/agent-almanacgit clone https://github.com/pjt222/agent-almanac.git ~/.claude/skills/manage-renv-dependenciesCopiez et collez cette commande dans Claude Code pour installer cette compétence
Documentation
name: manage-renv-dependencies description: > renvを使用してRパッケージの依存関係を再現可能な環境で管理する。 初期化、スナップショット/リストアワークフロー、一般的な問題のトラブルシューティング、 CI/CD統合を網羅。新規Rプロジェクトへの依存関係管理の初期化、パッケージの 追加・更新、新しいマシンへの環境復元、リストア失敗のトラブルシューティング、 またはCI/CDパイプラインとのrenv統合時に使用する。 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: r-packages complexity: intermediate language: R tags: r, renv, dependencies, reproducibility, lockfile
renv依存関係の管理
renvを使用して再現可能なRパッケージ環境をセットアップして保守する。
使用タイミング
- 新規RプロジェクトへのIの依存関係管理の初期化
- パッケージの依存関係の追加または更新
- 新しいマシンへのプロジェクト環境の復元
- renvのリストア失敗のトラブルシューティング
- CI/CDパイプラインとのrenv統合
入力
- 必須: Rプロジェクトディレクトリ
- 任意: 既存の
renv.lockファイル(リストア用) - 任意: プライベートパッケージ用のGitHub PAT
手順
ステップ1: renvの初期化
renv::init()
これにより以下が作成される:
renv/ディレクトリ(ライブラリ、設定、アクティベーションスクリプト)renv.lock(依存関係のスナップショット).Rprofileがrenvを読み込み時にアクティベートするよう更新される
期待結果: プロジェクトローカルライブラリが作成される。renv/ディレクトリとrenv.lockが存在する。.Rprofileがアクティベーションスクリプトで更新される。
失敗時: ハングする場合はネットワーク接続を確認する。特定のパッケージで失敗する場合は、そのパッケージをinstall.packages()で手動インストールしてからrenv::init()を再実行する。
ステップ2: 依存関係の追加
通常通りパッケージをインストールする:
install.packages("dplyr")
renv::install("github-user/private-pkg")
状態を記録するためにスナップショットを作成する:
renv::snapshot()
期待結果: renv.lockが新しいパッケージとそのバージョンで更新される。renv::status()が同期外れのパッケージがないことを示す。
失敗時: renv::snapshot()がバリデーションエラーを報告する場合はrenv::dependencies()を実行して実際に使用されているパッケージを確認し、次にrenv::snapshot(force = TRUE)でバリデーションをバイパスする。
ステップ3: 別のマシンへの復元
renv::restore()
期待結果: renv.lockの正確なバージョンですべてのパッケージがインストールされる。
失敗時: 一般的な問題:GitHubパッケージの失敗(.RenvironでGITHUB_PATを設定)、システム依存関係の欠如(Linuxでapt-getを使用してインストール)、大きなパッケージのタイムアウト(リストア前にoptions(timeout = 600)を設定)、またはバイナリが利用不可(renvがソースからコンパイル;ビルドツールがインストールされているか確認)。
ステップ4: 依存関係の更新
# 特定のパッケージを更新
renv::update("dplyr")
# すべてのパッケージを更新
renv::update()
# 更新後にスナップショットを作成
renv::snapshot()
期待結果: 対象パッケージが最新の互換バージョンに更新される。renv.lockがスナップショット後に新しいバージョンを反映する。
失敗時: renv::update()が特定のパッケージで失敗する場合はrenv::install("package@version")で直接インストールしてからスナップショットを作成する。
ステップ5: ステータスの確認
renv::status()
期待結果: 「問題なし」または同期外れのパッケージの明確なリストとアクション可能なガイダンス。
失敗時: ステータスが使用されているが記録されていないパッケージを報告する場合はrenv::snapshot()を実行する。記録されているがインストールされていないパッケージがある場合はrenv::restore()を実行する。
ステップ6: 条件付きアクティベーション用の.Rprofile設定
if (file.exists("renv/activate.R")) {
source("renv/activate.R")
}
これによりrenvがインストールされていない場合(CI環境、共同作業者)でもプロジェクトが動作する。
期待結果: プロジェクトディレクトリで開始するとRセッションが自動的にrenvをアクティベートする。renvがインストールされていないセッションもエラーなく起動する。
失敗時: .Rprofileがエラーを引き起こす場合、file.exists()ガードが存在することを確認する。source("renv/activate.R")を条件なしで呼び出してはならない。
ステップ7: Git設定
これらのファイルをトラックする:
renv.lock # 常にコミット
renv/activate.R # 常にコミット
renv/settings.json # 常にコミット
.Rprofile # コミット(renvアクティベーションを含む)
これらは無視する(renvの.gitignoreに既に含まれる):
renv/library/ # マシン固有
renv/staging/ # 一時的
renv/cache/ # マシン固有のキャッシュ
期待結果: renv.lock、renv/activate.R、renv/settings.jsonがGitでトラックされる。マシン固有のディレクトリ(renv/library/、renv/cache/)が無視される。
失敗時: renv/library/が誤ってコミットされた場合はgit rm -r --cached renv/library/で削除し、.gitignoreに追加する。
ステップ8: CI/CD統合
GitHub Actionsではrenvキャッシュアクションを使用する:
- uses: r-lib/actions/setup-renv@v2
これによりrenv.lockからキャッシュを使用して自動的に復元される。
期待結果: CIパイプラインがキャッシュを有効にしてrenv.lockからパッケージを復元する。キャッシュされたパッケージにより後続の実行が高速化される。
失敗時: CIの復元が失敗する場合、renv.lockがコミットされて最新であるか確認する。プライベートGitHubパッケージには、GITHUB_PATがリポジトリシークレットとして設定されているか確認する。
バリデーション
-
renv::status()が問題なしを報告する -
renv.lockがバージョン管理にコミットされている -
renv::restore()がクリーンなチェックアウトで動作する -
.Rprofileが条件付きでrenvをアクティベートする - CI/CDが依存関係解決に
renv.lockを使用する
よくある落とし穴
- 間違ったディレクトリで
renv::init()を実行: 最初にgetwd()を確認する - renvとシステムライブラリの混在:
renv::init()後はプロジェクトライブラリのみを使用する - スナップショットを忘れる: パッケージのインストール後は常に
renv::snapshot()を実行する --vanillaフラグ:Rscript --vanillaは.Rprofileをスキップするため、renvはアクティベートされない- 差分の大きなロックファイル: 正常 —
renv.lockは差分可能なJSONとして設計されている - Bioconductorパッケージ:
renv::install("bioc::PackageName")を使用してBiocManagerが設定されていることを確認する
関連スキル
create-r-package- renv初期化を含むsetup-github-actions-ci- renvとのCI統合submit-to-cran- CRANパッケージの依存関係管理
Dépôt GitHub
Compétences associées
llamaguard
AutreLlamaGuard est le modèle de Meta, doté de 7 à 8 milliards de paramètres, conçu pour modérer les entrées et sorties des LLM selon six catégories de sécurité comme la violence et les discours haineux. Il offre une précision de 94 à 95 % et peut être déployé avec vLLM, Hugging Face ou Amazon SageMaker. Utilisez cette compétence pour intégrer facilement le filtrage de contenu et des garde-fous de sécurité dans vos applications d'IA.
cost-optimization
AutreCette compétence de Claude aide les développeurs à optimiser les coûts du cloud grâce au redimensionnement des ressources, aux stratégies d'étiquetage et à l'analyse des dépenses. Elle fournit un cadre pour réduire les dépenses cloud et mettre en œuvre une gouvernance des coûts sur AWS, Azure et GCP. Utilisez-la lorsque vous devez analyser les coûts d'infrastructure, redimensionner les ressources ou respecter des contraintes budgétaires.
quantizing-models-bitsandbytes
AutreCette compétence quantifie les LLMs en précision 8 bits ou 4 bits à l'aide de bitsandbytes, permettant une réduction de 50 à 75 % de la mémoire utilisée avec une perte de précision minime. Elle est idéale pour exécuter des modèles plus volumineux sur une mémoire GPU limitée ou pour accélérer l'inférence, prenant en charge des formats comme INT8, NF4 et FP4. La compétence s'intègre à HuggingFace Transformers et permet l'entraînement QLoRA ainsi que l'utilisation d'optimiseurs en 8 bits.
dispatching-parallel-agents
AutreCette compétence Claude déploie plusieurs agents pour enquêter et résoudre simultanément 3 problèmes indépendants ou plus. Elle est conçue pour des scénarios impliquant des défaillances non liées qui peuvent être résolues sans état partagé ni dépendances. La capacité fondamentale est la résolution de problèmes en parallèle, en assignant un agent par domaine problématique indépendant afin de maximiser l'efficacité.
