【保存版】Rパッケージを簡易的にGitHubで公開する方法【Rstudio, Git, GitHub】
はじめに
Rを業務でずっと使用していると、自作関数なるものがどんどん増えていきませんか...?
チームメンバーなどで関数を共有したいときに「そのままパッケージとして公開できればいいのに...」と思ったのがこの記事を書くに至った経緯です。
本記事は、以下の参考記事を基に最新情報(2024年12月現在)に更新したものになります。
1. Rパッケージの基本構造を理解する
そもそもRのパッケージを使うことはめちゃくちゃあるけれど、作ったことがないという方がほとんどだと思うので、まずはRのパッケージの基本構造を紹介します。
myRpackage/
├── DESCRIPTION
├── NAMESPACE
├── R/
└── man/
-
DESCRIPTION
: パッケージのメタデータ(名前、バージョン、依存関係等)を記述する -
NAMESPACE
: エクスポートする関数やインポートする関数を指定する -
R/
: Rのコードファイルを格納するためのディレクトリ -
man/
: 関数のドキュメント(関数に対する説明等)が格納される
2. Rstudioでパッケージを作成する
パッケージ公開用のプロジェクトを作成
まずはRstudioで「New Project」を選択します。
続いて、「New Directory」から「R Package」を選択します。
すると、パッケージの名前や保存するディレクトリを指定する画面が出てくるので、任意の名称をつけディレクトリ(ディレクトリはデスクトップでOKです)も指定します。
この際、「Create a git repository」にチェックが入っていることを確認してください。
そうしたら、以下のような画面が表示されます。
不要ファイルを削除
以下のファイルに関しては、不要なので削除してください。
R/hello.R
man/hello.Rd
NAMESPACE
これで初期設定は準備完了です。
DESCRIPTIONファイルを編集
ここからはいよいよパッケージの中身を編集していきます。
まずは、DESCRIPTIONファイルを編集していきます。
DESCRIPTIONファイルとは、パッケージに関する情報を記入するファイルです。デフォルトで以下のようなものが記入されているのですが、AuthorとMaintainerに関しては手書きで変更し、Licenseは以下のコードを実行します。
usethis::use_mit_license("名前")
デフォルトでは、以下のようになっています。
上記のコードを実施し、AuthorとMaintainerを編集して以下のように変更します。
その他に関しても色々記述できますが、後でいくらでも変更可能なのでひとまずここまでにしておきたいと思います。
パッケージ化したい関数を作成する
次にR/
フォルダ内にパッケージ化したい関数ファイルを作成します。
今回は、数値を入力すると1を加えた数を返すplus1
という関数を作って公開してみたいと思います。
関数にRoxygenコメントを追加する
次は先ほど作成したRファイルにRoxygenコメントを加えてきます。
Roxygenコメントとは、
- コメントの行頭が
#
ではなく#'
で始まっている -
@param
などのタグを用いてコメントを構造化している
といった特徴があるもので、フォーマットに従って記述することで自動的にマニュアル(?関数
で呼び出せるヘルプ)やNAMESPACE
ファイルを更新してくれます。
大まかには以下のようなフォーマットに従って記入します。
#' @title タイトル
#' @description \code{関数名} 関数の説明
#' @param 引数 説明
#' @return 出力の説明
#' @export
#' @importFrom パッケージ名 関数名
#' @examples
#' 関数の使用例
具体的に記入すると以下のようになります。
#' @title plus1
#' @description \code{plus1} adds 1 to the input value.
#' @param x A numeric value or vector to which 1 will be added.
#' @return A numeric value or vector with 1 added to each element of the input.
#' @export
#' @examples
#' plus1(3) # returns 4
#' plus1(c(1, 2, 3)) # returns c(2, 3, 4)
これを先ほど作成した関数の上部に追加します。
Roxygen2を使ってドキュメントを作成
Roxygenを追加できたら、以下のコードを実行します。
すると、man/
フォルダの中にドキュメントファイルが生成されます。また、NEWSPACE
ファイルが更新されます。
devtools::document()
問題がないか確認
ここまでできたら、あとは問題がないか確認するだけです。以下のコードを実行します。
devtools::check()
何も問題が起きていないようであれば、次はGitHubでの操作に移ります。
3. GitHubリポジトリを作成して公開
GitHubでリモートリポジトリの作成
続いて、GitHubで新しくリポジトリを作成します。リポジトリの名称はパッケージの名前と同じにしておくことをおすすめします。
Rstudioでローカルリポジトリを作成
またまたRstudioに戻ります。
まずは、Gitタブを選択し、下の画像のようにチェックボックスに全てチェックを入れて「Commit」ボタンを押します。
すると下の画像のような画面になります。
自分が分かりやすいようにCommit messageを残し、Commitします。
続いて、Gitタブを選択し、下の画像の箇所を開きます。
「Branch Name」の部分はmain
と入力し、そのすぐ下にある「Add Remote...」を開きます。
Add Remoteでは、「Remote Name」にorigin
、「Remote URL」の部分には先ほどGitHubでコピペしたURLを貼り付けします。
GitHubのリモートリポジトリとRstudioのローカルリポジトリを連携
ここまで完了したら、「Push」をします。
GitHubを再度読み込みし、Rstudio上で扱っているファイルが反映されていれば成功です。
お疲れ様でした。
ここまで来たら、あなたオリジナルのRパッケージの公開が完了しました。
4. GitHubからインストール可能にする
最後に、GitHubで公開したオリジナルRパッケージの使い方を紹介しておきます。
GitHubに公開したパッケージは、devtools
パッケージを使うことで簡単にインストールできます。
-
devtools
をインストールinstall.packages("devtools")
-
ライブラリをインストール
devtools::install_github("TakashiNotomi/testPackage")
-
インストールを確認
library(testPackage) plus1(3)
最後に以下のようにコードの実行が確認できれば、無事に公開&確認が終了です。
まとめ
想定していたよりも長くなってしまいましたが、皆さんのデータ分析が少しでも楽になれば幸いです。
📣 お知らせ
筆者はアンケート分析で使える便利な関数をまとめたパッケージを公開しているので、興味がある方はぜひこちらの記事も覗いてみてください。
Discussion