専用パッケージを導入せず GitHub 上の R パッケージをインストールする

by
カテゴリ:
タグ:

TL;DR

GitHub上の R パッケージのインストールは以下のようにコマンド一発でできる. ブランチの指定や force = TRUE による強制インストールなどいろいろできる.

はじめに

一般に GitHub 上のパッケージをインストールするには remotes::install_github() を使う. devtools::install_github もあるが,これは remotes::install_github() を流用しているに過ぎない. あと,devtools は色んなパッケージに依存していて,依存パッケージをdevtools::install_github でインストールしようとすると事故ることがある. たしかそんな話をy氏がしていたはずなんだけれど,私のググル力が足りなかった. まあ remotes を使うのが無難そう.

初めて remotes パッケージを使って tidyverse/tidyverse をインストールしようとすると,以下のようにコマンドが2つは必要になる.

install.packages("remotes")
remotes::install_github("tidyverse/tidyverse")

これは開発者にも利用者にも優しくない. 開発者は書くべきことが増える. README に「インストールにはコマンドをコピペしてくれ」と書くだけでは足りず,「remotes パッケージをインストールしていない場合はまずインストールしてね」なんて注釈も書き足すことになるだろう. 利用者は読むべきことが増えるし,冗長な README はなんとなく閉じたくなる.

それに remotes パッケージは CRAN にあるけどもし GitHub からインストールせざるをえなかったらどうするの? remotes をインストールするために remotes をインストールしないといけなくてあああああってなるの? (※勿論.ローカルに落とせばごにょごにょできる)

公式からの素敵なお知らせ

remotes パッケージの README を読むと,以下のようなコマンドをコピペするだけで GitHub 上の remotes をインストールできる (https://github.com/r-lib/remotes#installation).

source("https://install-github.me/r-lib/remotes")

または

source("https://raw.githubusercontent.com/r-lib/remotes/master/install-github.R")$value("r-lib/remotes")

大体の人はこれで満足するかも?

ちょっと深入りしてみる

ソースコードにアクセスしてみると,どうやらこいつは remotes::install_github のラッパーらしい (https://raw.githubusercontent.com/r-lib/remotes/master/install-github.R). つまり,?remotes::install_github に載っていることは一通りできてしまう.

例えば,

  1. username/repo[/subdir][@ref|#pull] といった記法による
    • サブディレクトリに存在するパッケージのインストール,
    • 特定のブランチやタグからインストール
    • 特定のプルリクからインストール
      • r-lib/reomtes#266
  2. dependencies = TRUE により依存パッケージを全てインストール
  3. upgrade = never で既存パッケージのアップグレードを行わない

など.

https://install-github.me 経由でのインストールでは1番の機能しか利用できない.

Enjoy!