GitHub上のRパッケージをインストールする時にエラーになった件

RStudioのコンソールから、とあるパッケージを練習がてらインストールしようとしたら、下の画像のエラーがでた。

![install_R-package_from_GitHub.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196797/878de0ab-a9d7-50ba-134f-78a3a9dc6961.png)

これの解決策の例を以下に示す。

### 結論
GitHubで**パーソナルアクセストークン**を生成し、RSessionの環境変数に設定すればOK。

### 原因として考えられる問題

1\. GitHubの認証情報が正しくない
　GitHubにログインできるユーザー名とパスワードが正しく設定されていない可能性がある。

2\. 個人用のアクセストークンが設定されていない
　GitHubのアカウントで個人アクセストークンを生成し、環境変数に設定する必要がある。

3\. レート制限に達している
　GitHubのAPIにアクセスする際のレート制限に達している可能性がある。

### 解決策

1\. 認証情報の確認
　　1\. GitHubのユーザー名とパスワードが正しく設定されていることを確認する
　　2\. 必要に応じて、ユーザー名とパスワードを更新する
  
2\. 個人アクセストークンの設定
　　1\. GitHubのアカウントで個人アクセストークンを作成する
　　2\. 作成したトークンを環境変数GITHUB_PATに設定する
　　3\. RでREMOTES_GITHUB_PAT環境変数を使うように設定する
  
3\. レート制限の確認
　　1\. GitHubのAPIレート制限を確認する
　　2\. 制限に達している場合は、しばらく待ってから再試行する

今回は2番目の方法を試してみた。

### 実際にやった手順

1\. [『GitHub』](https://github.com)にサインインする
2\. Dashboard画面から、「Settings」→「Developer Settings」の順にアクセスする
3\. 「Personal access tokens」から、生成するトークンを選択する

:::note
現在トークンは、**Classic版** と **Beta版(Fine-grained tokens)** の２種類があり、
どちらを使えば良いかですが、以下のようなアドバイスが一般的なようです:
Classic版のパーソナルアクセストークンは、まだ多くのツールやライブラリでサポートされているため、選ぶ場合が多いです。
Fine-grained版は、セキュリティ性が高く、必要最小限の権限設定ができるため、より高度なセキュリティが求められる場合に適しています。
Rパッケージのインストールの場合、**Classic版**のパーソナルアクセストークンを使うのが無難だと思われます。多くのユーザが使用しており、RのライブラリでもClassic版をサポートしているためです。
ただし、Fine-grained版を使いたい場合は、ドキュメントを確認してR側での対応状況を確認する必要があります。最新の情報を確認しながら、用途に応じて適切なトークンを選択することをおすすめします。
:::

上記より、今回は「Classic」版を選択する。
![2-PATs.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196797/bfcc23b1-a22d-422f-3581-b15644e96d1d.png)
<br>

4\. 右側の「Generate new token」からもう一度Classicの方を選び、トークン新規生成画面を表示させる

5\. 「Note」欄に生成するトークンの説明を、「Expiration」欄で有効期限を設定する

　※デフォルトの"30 days"でも良いが、今回のように練習としてパッケージをインストールするためだけに使用したいなら、最短の"7 days"で十分だ。これ以下の「Select scopes」の欄にたくさんのチェック項目があるが、必須入力箇所は「Expiration」部だけなので、よく分からない場合は未記入で問題ない。
![new-PAT.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1196797/70df092d-3430-7928-426e-60a782c9d332.png)
<br>

6\. 下部の[Generate token]ボタンをクリックし、生成されたトークンのコードをコピーする

7\. 『RStudio』に戻り、以下のコマンドをコンソールで実行する
 
```console
Sys.setenv(GITHUB_PAT = "my_github_pat_here")
```
　`my_github_pat_here`の部分に、6.でコピーしておいたトークンのコードを貼り付ける。このコマンドが、RSessionの環境変数にGitHubのパーソナルアクセストークンを設定する処理に該当する。
<br>

8\. 再度、以下のコマンドで目的のパッケージのインストールを試す

```console
devtools::install_github("owner/repo")
```
　`owner`部に作成者のGitHubのIDを、`repo`部にパッケージ名をそれぞれ入力する。
<br>

これで、目的としていたRパッケージ(と、それに付随する必要なパッケージ群)を、「Bad credentials(悪い証明書)」というエラーが解消され、見事にインストールすることができた。
もし上記の方法でも解決しない場合は...
- Rコンソールで`devtools::install_github()`を実行する代わりに、Rスクリプトを作成してインストールする
- Rのバージョンやパッケージ名、プロキシ設定、ネットワーク環境などを確認する

などをやってみる。

## 参考にした記事となるかもしれない記事一覧
- [Error using `install_github()` and `install_deps()`: Error: Failed to install 'unknown package' from GitHub. HTTP error 401. Bad credentials. · Issue #659 · r-lib/remotes](https://github.com/r-lib/remotes/issues/659)
- [Error using `install_github()`: HTTP error 401. Bad credentials. · Issue #641 · r-lib/remotes](https://github.com/r-lib/remotes/issues/641)
- [r - Failed to install 'unknown package' from GitHub - Stack Overflow](https://stackoverflow.com/questions/70908295/failed-to-install-unknown-package-from-github)
- [Error Failed to install 'unknown package' from GitHub Bad credentials Rate limit - General - Posit Community](https://forum.posit.co/t/error-failed-to-install-unknown-package-from-github-bad-credentials-rate-limit/113550)
- [http 401 error in `devtools::install_deps(".")` when run from R console, works in RStudio · Issue #330 · r-lib/remotes](https://github.com/r-lib/remotes/issues/330)
- [GithubからRのパッケージをインストールする方法](https://exploratory.io/note/BWz1Bar4JF/Github-R-gyK5kcn3tk)
- [unable to install packages from GitHub - General - Posit Community](https://forum.posit.co/t/unable-to-install-packages-from-github/124372)
- [Rでパッケージがインストールできない時の対処法メモ #Ubuntu - Qiita](https://qiita.com/hachisukansw/items/ac1b7f608db1fe4d09e6)