npmが100万個目のパッケージを達成!そこから何を学べる?
2019年6月4日
0 分で読めます
6月4日は歴史的な日です。私たちの仲間であるLiran Talの誕生日(Liran、おめでとう!)であるだけでなく、npmレジストリに100万個目のパッケージが登録された日でもあります。npmはJavaScriptパッケージ用のパッケージマネージャーです。npmの中核をなすのは公開レジストリで、npmクライアントからアクセスできるJavaScriptパッケージをホストし、JavaScriptアプリケーションの構築を支えています。

npmを利用していて、より安全に使う方法に関心がある方は、npmを安全に使うための10のベストプラクティスをまとめたnpmセキュリティチートシートをご覧ください。
セキュリティインシデントを含むnpmの歩み
2010年1月:npmはIsaac Z. Schlueterによって作成され、JavaScriptで記述されました。
2016年3月:人気のJavaScriptパッケージleft-padが、名前をめぐる紛争によりnpmリポジトリから公開停止されました。JavaScript業界に大きな混乱が生じた後、公開停止に関するポリシーが強化されました。
2018年7月:eslint-scopeパッケージの悪意あるバージョンが公開され、ユーザーのnpm認証情報が攻撃者に漏えいしました。
2018年11月:悪意あるパッケージflatmap-streamがnpmに公開され、人気パッケージevent-streamの依存関係に追加されました。このパッケージはビットコインウォレットのCopayを標的にしていました。
2019年6月4日:npmに100万個目のパッケージが登録されました。
npmの人気パッケージトップ10
npmのウェブサイトには、人気パッケージのトップ10が掲載されています。以下に、脆弱性情報とともに紹介します。興味深いことに、requestパッケージではタイポスクワッティングが17件試みられています。
パッケージ | 脆弱性 |
|---|---|
脆弱性3件(うち1件は高深刻度) | |
脆弱性1件(タイポスクワッティングの試み17件) | |
脆弱性0件(タイポスクワッティングの試み1件) | |
脆弱性2件(うち1件は高深刻度) | |
脆弱性1件 | |
脆弱性0件 | |
脆弱性3件 | |
脆弱性1件 | |
脆弱性0件 | |
脆弱性0件 |
人気を総ダウンロード数で考えると、直接依存と間接依存の両方で広く使われているライブラリが分かります。
パッケージ | ダウンロード数 |
|---|---|
debug | 週あたり4,000万回超のダウンロード |
kind-of | 週あたり3,400万回超のダウンロード |
supports-color | 週あたり3,400万回超のダウンロード |
readable-stream | 週あたり3,100万回超のダウンロード |
source-map | 週あたり3,000万回超のダウンロード |
yargs | 週あたり2,700万回超のダウンロード |
camelcase | 週あたり2,600万回超のダウンロード |
minimist | 週あたり2,500万回超のダウンロード |
strip-ansi | 週あたり2,500万回超のダウンロード |
chalk | 週あたり2,500万回超のダウンロード |
上記10個のパッケージのうち、セキュリティ脆弱性が含まれていることが判明したのはdebugだけでした。
数字で見るnpm
このグラフが示すように、npmの人気と成長の規模は驚異的です。直近数年間に登録されたパッケージ数を示しています。実際、2017年1月からわずか2年余りで、プラットフォームは250%成長しています。

2019年に毎月ダウンロードされたパッケージ数を見ると、npmの利用が月ごとに伸びていることも分かります。

npmに関する統計をもう少しご紹介します。
100万個の登録済みパッケージ(この記事の執筆後に登録されたものはさらに増えています!)
先週のダウンロード数は109億回
先月のダウンロード数は469億回
最も人気のあるパッケージは
debugで、週あたりのダウンロード数は4,000万回を超えますダウンロード数で1,000位のパッケージmerge-streamは、週あたり約350万回ダウンロードされています
25万個のパッケージが2018年にnpmへ追加
11万個のパッケージが2019年にnpmへ追加(現時点)
Snyk CLIのnpmパッケージは週あたり14万4,000回ダウンロードされています!
Snykが所有するパッケージは41個です。やりました!
GitHubユーザーのdominykasとNearFormの同僚は、Node.js FoundationのPackage Maintenanceワーキンググループで進められていた作業の一環として、GitHubのIssueにいくつかの統計を投稿しました。このデータから、パッケージのメンテナンス状況は作者によって大きく異なることが分かります。
パーセンタイル | 最終コミット | 最終公開 |
|---|---|---|
10% | 4日前 | 11日前 |
20% | 5日前 | 37日前 |
30% | 19日前 | 88日前 |
40% | 57日前 | 157日前 |
50% | 119日前 | 246日前 |
60% | 194日前 | 369日前 |
70% | 328日前 | 559日前 |
80% | 563日前 | 777日前 |
90% | 887日前 | 1,098日前 |
95% | 1,194日前 | 1,372日前 |
100% | 2,201日前 | 2,792日前 |
まとめ
最大規模のオープンソース言語レジストリを運営・維持しているnpmと、エコシステムを支え、この素晴らしい節目の達成に貢献したコミュニティのメンテナーや開発者の皆さんに、心からお祝いを申し上げます。オープンソースパッケージを利用する際は、既知の脆弱性を含まないバージョンを使うことが非常に重要です。業界をリードするSnyk Vulnerability Databaseを使えば、アプリケーションを無料で簡単にテストできます。今すぐお試しいただき、スキャン結果をすぐにご確認ください。
今すぐ無料のSnykアカウントでJavaScriptアプリをテストしましょう。
Capture the Flagを始めよう
オンデマンドのバーチャル入門ワークショップを見て、Capture the Flagの課題の解き方を学びましょう。
