プログラミング
Rパッケージが多すぎる:CRANが提出物で溢れかえっている
Too many R packages: CRAN is inundated with submissions (rworks.dev)
要約
CRANへの新規Rパッケージの提出数が急増しており、筆者は「Top 40」のパッケージを選定するのが困難になっていると指摘しています。多くのパッケージが十分なドキュメントを持たず、Rコミュニティへの実質的な貢献が疑われる状況です。この現象は、ソフトウェアのパッケージ化が容易になったことと、AI時代のアプリ爆発と類似していると筆者は推測しています。
全文翻訳
もしあなたがR-bloggersでこの記事を読んでいるなら、私がCRANの「トップ40」の新規Rパッケージのセレクションをかなり長い間公開していることをおそらくご存知でしょう。私はこれを最初にRevolution Analyticsでの仕事の一環として、次にRStudioとPositのR Viewsで、そして今はR Worksで発表しています。以前は、40個の興味深いパッケージを選定するのに、1ヶ月かけて楽しい作業を1日分行う程度でした。100個ほどのパッケージであれば、すべてのパッケージのウェブページを見て、少数をダウンロードして試すことができました。しかし今では、「トップ40」はまるでハムスターが回し車に乗っているようなプロジェクトになってしまいました。以下のプロットは、R Worksで公開を開始して以来、CRANに到達した新規パッケージの数を私が数えたものです。プロットコードを表示
```R
library(tidyverse)
file_path <- "new-cran-pkgs.csv"
if (!file.exists(file_path)) {
stop(paste("File not found! Please check the path:", file_path))
}
# Read text and numbers safely
raw_data <- read.csv(file_path, colClasses = c("character", "numeric"), stringsAsFactors = FALSE)
plot_data <- raw_data |> mutate(Date = my(Month)) |> arrange(Date)
new_pkg <- ggplot(plot_data, aes(x = Date, y = Num_pkgs, group = 1)) +
geom_line(color = "#1f77b4", size = 1) +
geom_point(color = "#d62728", size = 1.2) +
labs(
title = "Monthly Volume of New CRAN Packages",
x = "Date",
y = "Number of Packages",
caption = "Source: R Works monthly Top 40 posts"
) +
theme(
plot.title = element_text(face = "bold"),
panel.grid.minor = element_blank(),
axis.text.x = element_text(angle = 45, hjust = 1)
)
new_pkg
```
なぜこんなに急増したのでしょうか?いったい何が起こっているのでしょうか?私には推測があります。どうやら、コードをパッケージ化してCRANに出荷するのがあまりにも簡単になりすぎているようです。これは理解できます。あらゆる種類のソフトウェアを書いてデプロイするのがあまりにも簡単だからです。ジョン・バーン=マードックが最近フィナンシャル・タイムズにNBERの研究に基づいて掲載した以下のプロットは、エージェンティックAI(Agentic AI)時代におけるアプリの爆発的増加を示しています。このプロットはまた、新しいアプリが人々の生活や企業の利益にあまり良い貢献をしていない可能性も示唆しています。それらは、使用されたり、レビューされたり、あるいは発見されることすらほとんどないようです。そこで、新しいRパッケージについても同じ種類の質問をしてみましょう。それらのほとんどは本当にRとRコミュニティに貢献しているのでしょうか?新しい統計的手法を提供したり、Rの適用範囲を新しい分野に広げたり、効率的な高性能コードを提供したり、あるいはRコミュニティに利益をもたらすとされる他の何かをしているのでしょうか?熱心な素人としての私の印象はノーです。ほとんどの新しいRパッケージは貢献していません。品質の明白な指標の一つはドキュメントです。かなりの数の新しいRパッケージは、提供するものを説明するのに十分なドキュメントを提供していません。例えば、5月には、323個の新しいCRANパッケージのうち40個には、READMEファイルも、ビネット(vignettes)も、リポジトリへのURLもありませんでした。私の考えでは、何らかの発見可能な帯域外ドキュメント(例:学術論文)を持つパッケージや、パッケージスイートのインフラストラクチャでありエンドユーザーが呼び出すことを意図していないパッケージという例外を除けば、何が、なぜ、どのように機能するのかを説明しないパッケージは貢献ではありません。回し車に乗ったハムスターとして、皆さんのご意見をぜひお聞かせいただきたいです。もしよろしければ、R WorksのGitHubリポジトリのIssue #68にコメントを残してください。