😽

【保存版】Rパッケージを簡易的にGitHubで公開する方法【Rstudio, Git, GitHub】

2024/12/16に公開

はじめに

Rを業務でずっと使用していると、自作関数なるものがどんどん増えていきませんか...?
チームメンバーなどで関数を共有したいときに「そのままパッケージとして公開できればいいのに...」と思ったのがこの記事を書くに至った経緯です。

本記事は、以下の参考記事を基に最新情報(2024年12月現在)に更新したものになります。

1. Rパッケージの基本構造を理解する

そもそもRのパッケージを使うことはめちゃくちゃあるけれど、作ったことがないという方がほとんどだと思うので、まずはRのパッケージの基本構造を紹介します。

myRpackage/  
├── DESCRIPTION  
├── NAMESPACE  
├── R/         
└── man/    
  • DESCRIPTION: パッケージのメタデータ(名前、バージョン、依存関係等)を記述する
  • NAMESPACE: エクスポートする関数やインポートする関数を指定する
  • R/: Rのコードファイルを格納するためのディレクトリ
  • man/: 関数のドキュメント(関数に対する説明等)が格納される

2. Rstudioでパッケージを作成する

パッケージ公開用のプロジェクトを作成

まずはRstudioで「New Project」を選択します。
NewProject選択

続いて、「New Directory」から「R Package」を選択します。
NewDirectory選択
R Packageを選択

すると、パッケージの名前や保存するディレクトリを指定する画面が出てくるので、任意の名称をつけディレクトリ(ディレクトリはデスクトップでOKです)も指定します。
この際、「Create a git repository」にチェックが入っていることを確認してください。

そうしたら、以下のような画面が表示されます。

不要ファイルを削除

以下のファイルに関しては、不要なので削除してください。

  • R/hello.R
  • man/hello.Rd
  • NAMESPACE

これで初期設定は準備完了です。

DESCRIPTIONファイルを編集

ここからはいよいよパッケージの中身を編集していきます。
まずは、DESCRIPTIONファイルを編集していきます。
DESCRIPTIONファイルとは、パッケージに関する情報を記入するファイルです。デフォルトで以下のようなものが記入されているのですが、AuthorとMaintainerに関しては手書きで変更し、Licenseは以下のコードを実行します。

usethis::use_mit_license("名前")

デフォルトでは、以下のようになっています。
DESCRIPTION_デフォルト

上記のコードを実施し、AuthorとMaintainerを編集して以下のように変更します。
mit_licenseを記述

DESCRIPTION_更新

その他に関しても色々記述できますが、後でいくらでも変更可能なのでひとまずここまでにしておきたいと思います。

パッケージ化したい関数を作成する

次に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)

これを先ほど作成した関数の上部に追加します。

Roxygenコメント

Roxygen2を使ってドキュメントを作成

Roxygenを追加できたら、以下のコードを実行します。
すると、man/フォルダの中にドキュメントファイルが生成されます。また、NEWSPACEファイルが更新されます。

devtools::document()

NEWSPACE

man_plus2md

問題がないか確認

ここまでできたら、あとは問題がないか確認するだけです。以下のコードを実行します。

devtools::check()

check動画

何も問題が起きていないようであれば、次はGitHubでの操作に移ります。

3. GitHubリポジトリを作成して公開

GitHubでリモートリポジトリの作成

続いて、GitHubで新しくリポジトリを作成します。リポジトリの名称はパッケージの名前と同じにしておくことをおすすめします。

GitHubでnewリポジトリ

URLをコピー

Rstudioでローカルリポジトリを作成

またまたRstudioに戻ります。

まずは、Gitタブを選択し、下の画像のようにチェックボックスに全てチェックを入れて「Commit」ボタンを押します。
コミット1
すると下の画像のような画面になります。
自分が分かりやすいようにCommit messageを残し、Commitします。
コミット2

続いて、Gitタブを選択し、下の画像の箇所を開きます。
Gitタブでローカルリポジトリ設定

「Branch Name」の部分はmainと入力し、そのすぐ下にある「Add Remote...」を開きます。

ブランチ名称設定

Add Remoteでは、「Remote Name」にorigin、「Remote URL」の部分には先ほどGitHubでコピペしたURLを貼り付けします。
リモートリポジトリ設定

GitHubのリモートリポジトリとRstudioのローカルリポジトリを連携

ここまで完了したら、「Push」をします。
PUSH

GitHubを再度読み込みし、Rstudio上で扱っているファイルが反映されていれば成功です。

GitHub連携成功

お疲れ様でした。
ここまで来たら、あなたオリジナルのRパッケージの公開が完了しました。

4. GitHubからインストール可能にする

最後に、GitHubで公開したオリジナルRパッケージの使い方を紹介しておきます。

GitHubに公開したパッケージは、devtoolsパッケージを使うことで簡単にインストールできます。

  1. devtoolsをインストール
     install.packages("devtools")
    
  2. ライブラリをインストール
     devtools::install_github("TakashiNotomi/testPackage")
    
  3. インストールを確認
     library(testPackage)
     plus1(3)
    

最後に以下のようにコードの実行が確認できれば、無事に公開&確認が終了です。

コード実行

まとめ

想定していたよりも長くなってしまいましたが、皆さんのデータ分析が少しでも楽になれば幸いです。

📣 お知らせ

筆者はアンケート分析で使える便利な関数をまとめたパッケージを公開しているので、興味がある方はぜひこちらの記事も覗いてみてください。

https://zenn.dev/henai_marketing/articles/a9859fd5c8f584

Discussion