# JavaScriptの11行がインターネットを破壊。アンパブリッシュは1回。

Published: 2026-09-13

2016年3月22日21:30 UTC：開発者が彼のnpmパッケージ273個すべてをアンパブリッシュした。これは、npmがパッケージ名「kik」をメッセージングアプリのKikに渡した後のことである。Kikの特許代理人は「弁護士がお前のドアを叩く」と脅していた。273個のうちの1つがleft-padである。これは文字列の前にスペースを入れる11行のコードで、月に250万回ダウンロードされていた。数分以内にBabel、React、Nodeのビルドが世界中で失敗し、毎分数数百件発生した。10分でフォークが現れ、何も変更しなかった。Babelはline-numbersを介してleft-padをプルし、0.0.3を正確に固定していたからである。23:55にnpmはバックアップから削除されたバージョンを復元した。これはレジストリ史上初の「アンアンパブリッシュ」であり、1週間後には24時間のアンパブリッシュルールを導入した。npm自身の説明とKikが公開したEメールスレッドによる事後分析：依存関係のチェックなしにどの著者でもどのバージョンでも削除できるレジストリ、すべてのインストールでリアルタイムに解決される推移的なツリー、デフォルトでロックファイルなし。Git blame：npm 60 / Kik 25 / 依存関係の習慣 15。修正に対する評決：SHIP IT。

Canonical: https://thedailydiff.dev/ja/video/2026-09-13-left-pad/

## この動画の要点

- 3月11日：Kikの特許代理人がAzer Koçuluに\`kik\`の名前変更を要求。1時間後：「弁護士がお前のドアを叩き、お前のアカウントを停止させる」と脅し。Azer：3万ドル。Kikがnpmサポートにメール。
- 3月18日～20日：npmのCEOがKikに名前を移譲（「kik.comに関連していると合理的に期待される」）。Azerが彼のすべてのモジュールの削除を要求。
- 3月22日21:30～23:55 UTC：273個のパッケージがアンパブリッシュ。left-pad@0.0.3がBabel、Atom、Nodeプロジェクトで404エラー。21:42にフォーク1.0.0が出現。23:03にnpmのCTOが「un-un-publishing」とツイート。23:55にバックアップから0.0.3が復旧 — 2.5時間。
- 3月23日と3月29日：npmの事後分析（「我々はミスをした」）と新ポリシー：アンパブリッシュは24時間以内のみ。削除された名前のセキュリティプレースホルダー（2020年からは72時間）。

## 翻訳されたトランスクリプト

オリジナルの英語ナレーションから翻訳されています。利用可能なオーディオとキャプションはYouTubeによって管理されています。

0:00 1人の開発者がJavaScriptの11行を削除し、数分以内にBabel、 React、Nodeのビルドが世界中で失敗し、毎分数数百件発生します。 その関数はleft-padです。 これは文字列にスペースを埋め込むもので、その日の夜までにnpmは できないと言っていたことを実行します：削除されたバージョンを再公開します。 それがどのように起こったのか、なぜ可能なのか、そして誰に責任があるのか。 The Daily Diff、事後分析です。 3月11日。メッセージングアプリKikの特許代理人が、

0:26 Azer Koçuluにメールを送ります。「あなたのnpmパッケージの名前を変更してください、kikは私たちのブランドです。」 Azerは拒否します。 1時間後：「私たちの商標弁護士があなたのドアを叩き、 あなたのアカウントを停止させます。」 Azerは3万ドルという価格を提示し、 Kikはそのスレッドをnpmの サポートに転送します。3月18日。 npmのCEOは、npm install kikと入力する人は誰でもメッセージング

0:48 アプリを期待すると判断し、その名前を譲渡します。 Azerは彼のすべての削除を要求します。 2日後、彼は自ら行いました：273個のパッケージを削除しました。 3月22日、21:30 UTC。 left-padを呼び出すすべてのビルドが404エラーになります。 10分後、見知らぬ人がそれを1.0.0として再公開しますが、 何も変わりません。BabelとAtomは、 line-numbersというパッケージを介してそれをロードしており、これは正確に0.0.3を求めていたからです。

1:13 23:03にnpmのCTOがツイートします。「un-un-publishing（アンアンパブリッシュ中）。」 23:55、バックアップから0.0.3が復旧します。 2時間半の出来事でした。 なぜ一人の人間がこんなことができるのでしょうか？ 理由は3つあります。npm上のどのバージョンも、作者によって 依存関係のチェックなしに、即座に削除できます。 第二に、依存関係は推移的です。Babelはleft-padの存在を知らず、 line-numbersを知っており、ツリー全体はすべてのインストールでリアルタイムに解決されます。

1:36 第三に、2016年にはデフォルトでそのツリーを固定するものがありませんでした。ロックファイルはオプトインで、 そのため、すべてのCI実行で、インターネットに11行のコードがどのようなものかを再度問い合わせていました。 誰にも依存しない、単一のレジストリ。 git blame。npm、60％：自身の事後分析によると、無制限のアンパブリッシュが 問題を引き起こし、引用すると、「我々はミスをした」とのことです。 Kik、25％：弁護士ではない特許代理人が、 Kikがすでに使用しないと決めていた名前を巡って弁護士がドアを叩くと脅した。 依存関係の習慣、15％：11行のコードを自分で入力する代わりに

2:06 npm installしたすべての人々。 ビルドが壊れたKik自身も含めて。 爆発範囲：273個のパッケージがプルされ、 そのうちの1つは月に250万回ダウンロードされていました。 修正には2時間半かかり、関数は11行です。 Hacker Newsでは、「私たちはプログラミングの方法を忘れてしまったのか」という投稿が 1700ポイントを獲得しました。そのほとんどは、まだビルドが赤字の人々からのものです。 評決、事後分析：SHIP IT。

2:26 npmはバックアップから復元し、翌日に事後分析を投稿し、 1週間以内に今も続くルールを導入しました。それは、「24時間以内であればアンパブリッシュできるが、 それ以降は人間と話す必要がある」というものです。 月曜日：ロックファイルをコミットしてください。そして、関数が11行であれば、 それは依存関係ではなく、パラグラフです。 まだ話すことが許されていないインシデントがあれば、 コメント欄、またはdaily diff dot devまで送ってください。 今日のdiffは以上です。

2:48 AxrisiのNikoでした。 責任を持ってマージしてください。

## 情報源

- [npm, Inc., "kik, left-pad, and npm" (Mar 23, 2016)](https://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm) — blog.npmjs.org
- [npm, Inc., "changes to npm's unpublish policy" (Mar 29, 2016)](https://blog.npmjs.org/post/141905368000/changes-to-npms-unpublish-policy) — blog.npmjs.org
- [Azer Koçulu, "I've Just Liberated My Modules" (Mar 22, 2016; archive copy)](https://web.archive.org/web/20160323201305/https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c) — web.archive.org
- [Mike Roberts (Kik), "A discussion about the breaking of the Internet" — the full e-mail thread (Mar 23, 2016; archive copy)](https://web.archive.org/web/20170112194445/https://medium.com/@mproberts/a-discussion-about-the-breaking-of-the-internet-3d4d2a83aa4d) — web.archive.org
- [Laurie Voss (npm CTO) on X, Mar 22, 2016, 23:03 UTC](https://x.com/seldo/status/712414400808755200) — x.com
- [left-pad 0.0.3 on the npm registry (the eleven lines)](https://registry.npmjs.org/left-pad/0.0.3) — registry.npmjs.org
- [Hacker News, Mar 22, 2016 — "I've Just Liberated My Modules" (1,573 points)](https://news.ycombinator.com/item?id=11340510) — news.ycombinator.com
- [Hacker News, Mar 23, 2016 — "NPM and Left-Pad: Have We Forgotten How to Program?" (1,725 points)](https://news.ycombinator.com/item?id=11348798) — news.ycombinator.com
- [Hacker News, Mar 29, 2016 — "Changes to Npm's unpublish policy" (320 points)](https://news.ycombinator.com/item?id=11382885) — news.ycombinator.com
- [The Register, Mar 23, 2016 — "How one developer just broke Node, Babel and thousands of projects in 11 lines of JavaScript"](https://www.theregister.com/2016/03/23/npm_left_pad_chaos/) — www.theregister.com
