Rパッケージにスターを送るパッケージ ThankYouStars を作成しました
先日 @teppeis さんが 依存しているnpmライブラリにGitHubスターを送るツール を作成されました。
それに触発され、R言語バージョンを作ってみました。
スターでパッケージ作者に感謝の気持ちを送りましょう。
どんなパッケージなの
インストール済みのRパッケージにすべてスターを付けるだけのパッケージです。
内部では、
installed.packages()
を実行して DESCRIPTION
のURLがGitHubのものを抽出し、
GitHub API を叩いてスターをつけています。
実行には GitHub API の Token が必要なので、READMEを参考に取得してください。
作ったきっかけは
より正確には、
- まず @teppeis さんが npmツールを作成し、
golang 版作った。ただしまだ Windows のみ。 https://t.co/8FjpWeJ8S5
— 1億光年に一人の Vimmer (@mattn_jp) 2017年8月26日
- @y_taka_23 さんがHaskell版を作成され、
じゃあR版を作るしかない、と思って作りました。 僕が把握していないだけで、他言語による実装もあるかもしれません。
R言語は、CRANに登録されたパッケージをインストールするのが基本ですが、最近は devtools のおかげでGitHub上にあるソースを直接インストールできるようになり、CRANには登録しないパッケージも増えてきました。それはそれで便利なのですが、CRANと違いダウンロード数が計測できないため、どのくらいユーザーがいるのか作者がわからないというデメリットがあります。
そこで、ThankYouStarsを使えばGitHubレポジトリにスターを簡単に送れるので、使っていることを伝えられますし、作成者側もモチベが上がります。thank-you-starsはR言語界隈とも親和性が高いと思います。
ちなみに、いい機会なので、CRANにも登録しました。 ついにCRANデビューです。
しかし、CRAN登録版は、現状devtoolsでインストールしたパッケージに対しスターが送れません。 GitHubに置いている開発版は対応したので、今は devtools::install_github でインストールしてください。 CRAN版も近日中にアップデートします。
使い方は
上述したレポジトリにソースがあるので、 devtools
でインストールできます。
セットアップ方法は3通りの方法があります。まず、GitHub API のtokenを取得し、
~/.thank-you-stars.json
に保存- 環境変数
GITHUB_PAT
に保存 - 関数の引数にブチ込む
のどれかでOKです。
1の方法は他の thank-you-stars
パッケージと同様の方法です。
2の方法は RからGitHub API を叩くパッケージ gh
と同様の方法です。
お好きな方をお使いください。3の方法はおすすめしません。
ちなみに gh
パッケージにはスターをつける機能が無かったので、直接 httr
パッケージで叩いています。
PR送るかなぁ…。しかし誰も使わなさそうな機能だしなぁ…。
token のセットアップが完了したら、
library(ThankYouStars) thank_you_stars()
でスターがつきます。 それが全てです。
謝辞
まず、先駆者の @teppeis さん、@mattn_jp さん、@y_taka_23 に御礼申し上げます。thank_you_starsの考え方は素晴らしく、また、コードも参考にさせていただきました。
また、パッケージ作成およびCRAN登録について、
- @yutannihilation さん、
- @hoxo_m さん、
- @u_ribo さん、
- @kos59125 さん、
のパッケージやブログを参考にさせていただきました。重ねて御礼申し上げます。
特に httr
パッケージ関数のテスト方法が大いに参考になりました。
また、CRANの登録方法はほぼこの本に従いました。
Rパッケージ開発入門 ―テスト、文書化、コード共有の手法を学ぶ
- 作者: Hadley Wickham,瀬戸山雅人,石井弓美子,古畠敦
- 出版社/メーカー: オライリージャパン
- 発売日: 2016/02/05
- メディア: 大型本
- この商品を含むブログ (3件) を見る
過去に社内向けのパッケージを作るときに既に読んでいたのですが、 CRAN登録方法の章は今回初めて読み、かなり簡単にリリースできて驚きました。
CRAN登録は闇と聞いていたので長期戦を覚悟していたのですが、 結局1回のリジェクトだけで完了して拍子抜けです。 そのリジェクト理由も、ライセンスの明記不備と、ドキュメントのタイトルを大文字にしていなかったのを指摘されただけでした。 少なくともこの程度のパッケージなら闇ではなさそうなので、怯えずにどんどんパッケージ作ると良さそうです。