Skip to main content

npmが100万個目のパッケージを達成!そこから何を学べる?

NPM blog

2019年6月4日

0 分で読めます
屋外で、とうもろこしの皿とカラフルなラッピングの誕生日プレゼントの横にいるウォンバット

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

npmのホームページのスクリーンショット。パッケージ検索、人気ライブラリ、カテゴリ別の探索機能に加え、パッケージ数が1,000,000件に達したことを示す統計が表示されています。

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%成長しています。

インデックス登録されたnpmパッケージの総数が、2017年1月の40万件から2019年6月の100万件に増加したことを示す折れ線グラフ。

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

npmパッケージのダウンロード数が、2019年1月の370億件から5月の500億件へと増加し、4月にわずかに減少したことを示す折れ線グラフ。

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の課題の解き方を学びましょう。