r-package-development について
R パッケージ開発の実践ルールとコマンドをまとめたガイドです。コードスタイル、テスト、ドキュメント、NEWS.md を扱い、実装と保守の手順を整えます。
主な機能
- 01パッケージコードとテストの実行コマンド
- 02フォーマットとパイプの規約
- 03テスト作成と期待値の指針
- 04roxygen2 と pkgdown の文書ルール
- 05NEWS.md の項目作成ルール
活用シーン
- 01パッケージコードや対象テストを実行
- 02新しいコードのテストを追加・整理
- 03公開関数の文書と NEWS.md を更新
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ posit-dev/ skills --skill r-package-developmentインストール後、Claude Code で/r-package-developmentを入力して読み込まれたか確認します。
詳細
R パッケージの開発
主なコマンド
# Run code in the package
Rscript -e "devtools::load_all(); code"
# Run all tests
Rscript -e "devtools::test()"
# Run all tests for files starting with {name}
Rscript -e "devtools::test(filter = '^{name}')"
# Run all tests for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R')"
# Run a single test "blah" for R/{name}.R
Rscript -e "devtools::test_active_file('R/{name}.R', desc = 'blah')"
# Redocument the package
Rscript -e "devtools::document()"
# Check pkgdown documentation
Rscript -e "pkgdown::check_pkgdown()"
# Check the package with R CMD check
Rscript -e "devtools::check()"
# Format code
air format .
コーディング
- コードを生成した後は、必ず
air format .を実行してください。 - magrittr パイプ(
%>%)ではなく、ベースパイプ演算子(|>)を使用してください。 - 1 行の無名関数には
\() ...を使用してください。それ以外の場合は、function() {...}を使用してください。
テスト
R/{name}.Rのテストはtests/testthat/test-{name}.Rに配置してください。- 新しいコードには、必ず対応するテストを追加してください。
- 既存のテストがある場合は、類似する既存のテストの近くに新しいテストを配置してください。
- コメントを最小限に抑え、テストを簡潔に保つようにしてください。
expect_true()やexpect_false()は避け、より適切な失敗メッセージが表示される具体的な期待値を使用してください。- エラーと警告をテストする場合は、
expect_error()やexpect_warning()を使用しないでください。代わりに、エラーにはexpect_snapshot(error = TRUE)、警告にはexpect_snapshot()を使用してください。これらを使うと、出力の全文を確認できます。
ドキュメント
- ユーザー向けの関数はすべてエクスポートし、roxygen2 のドキュメントを付けてください。
- roxygen コメントは 80 文字で折り返してください。
- 内部関数には roxygen ドキュメントを付けないでください。
- 新しい(内部向けではない)ドキュメントのトピックを追加した場合は、そのトピックも
_pkgdown.ymlに追加してください。 - roxygen2 のコメントを変更した後は、必ずパッケージのドキュメントを再生成してください。
pkgdown::check_pkgdown()を使用して、すべてのトピックがリファレンスインデックスに含まれていることを確認してください。
NEWS.md
- ユーザー向けの変更はすべて、
NEWS.mdに箇条書きで記載してください。小さなドキュメントの変更や内部リファクタリングについては、箇条書きを追加しないでください。 - 各箇条書きでは、エンドユーザー向けに変更内容を簡潔に説明してください。
- 関数に関連する変更の場合は、箇条書きの前半に関数名を記載してください。
- GitHub の issue またはプルリクエストに関連する箇条書きでは、最後のピリオドの前に括弧付きで番号を記載してください:
(#123). - 関数名のアルファベット順に箇条書きを並べてください。関数名に言及しない箇条書きは、すべて先頭に配置してください。
コメント
Markdown 対応