11 か月の計画を経て、npm-distributedrequest
モジュールは廃止されました。つまり、HTTP リクエストを行うための一般的な JavaScript コード ライブラリはサポートされなくなり、今後更新されなくなります。
依存関係として含まれている約48,000個の他のnpmモジュールについては、request
npmコマンドラインクライアントから非推奨の警告が表示される以外、すぐには影響はありません。ただし、これらのモジュールのメンテナーは、HTTPインタラクションの処理に代替ライブラリを使用するようにコードを修正することを検討する必要があります。
Request
は現在バージョン 2.88.2 で、毎週約 1,700 万回ダウンロードされており、オープンソースビジネス Protocol Labs でコミュニティ運営を担当している Mikeal Rogers 氏によって 2009 年に作成されました。
request
昨年 3 月、同氏はGitHub リポジトリに 282 人の貢献者をリストしている Apache 2.0 ライセンスのオープン ソース プロジェクトである の作業を停止する計画を発表しました。
このモジュールの人気にもかかわらず、ロジャーズ氏はJavaScriptエコシステムが急速に変化しており、その中核となるコードパターンがrequest
時代遅れになっていると述べています。request
2018年に、より現代的なプラクティスに準拠するためのアップデートを検討した際は、実現可能だと思われました。しかし昨年、彼は逆の結論に達し、より現代的なモジュールが進化する機会を与えるため、コードの更新を停止することを決定しました。
これらの新しいモジュールにとって最も良いことは、リクエストが徐々に消えていくことです...
「これらの新しいモジュールにとって最善のことは、request
徐々に消えていき、最終的にはレガシースタックの単なる思い出となることだ」と彼は書いている。
「現在の地位を奪いrequest
、それを次世代の開発者のより大きなシェアのために活用することは、開発者たちにとって不利益となるだろう。なぜなら、彼らをrequest
の歴史の重荷を背負っていないより優れたモジュールから遠ざけてしまうからだ。」
The Registerへのメールで、ロジャーズ氏は、Node.jsの初期段階でNode.js Coreの開発と並行してこのモジュールを作成したと説明しましたrequest
。その結果、このモジュールには、標準的なコールバックやストリームといった初期のNode.jsパターンが数多く実装されました。
「その歴史は、古いパターンにどれほど強く縛られているかを理解する上で重要ですrequest
」とロジャーズ氏は述べた。「JavaScriptとNode.jsはそれ以来大きく進化しており、すべてのパターンは、request
私を含め、エコシステムの開発者が移行してきたより優れたパターン(async/await、async generators、fetch)に置き換えられているはずです。」
「request
今日の開発者は、古いパターンを新しいパターンに移植するために、間接参照レイヤーを組み込むことがよくあります」と彼は述べた。「これはバンドルサイズ、パフォーマンス、デバッグのしやすさに影響しますが、こうした問題を抱えていない新しいライブラリも数多くあります。」
Gatsby、Auth0、VinylDNS などのプロジェクトは既にや などrequest
の代替 HTTP 処理モジュールに切り替えています。Rogers 氏は独自の後継モジュール を作成しました。 に依存する他の npm モジュールのメンテナーの中には移行を計画している人もいるかもしれませんが、そうでないメンテナーは移行をためらう可能性があり、 は何年も続くことになるでしょう。got
axios
bent
request
request
Rogers 氏は、多くのライブラリが をrequest
推移的な依存関係として利用していると述べました。つまり、 を実装する別のライブラリに依存しているということですrequest
。
「その結果、request
ほぼすべての人気ライブラリやフレームワークのパッケージツリーにコードが表示されますが、実際にコードがどれだけ使われているのかは私には分かりません」と彼は述べた。「JavaScriptのエコシステムはあまりにも大きく、依存関係グラフは相互依存しすぎているため、残りの依存関係のうち、request
実際にどれだけの部分を気にすべきなのかを正確に把握するのは不可能です。」
「 に依存する新しいモジュールがない場合でもrequest
、また に依存する既存モジュールの新しいバージョンがない場合でもrequest
、request
は非常に多くの依存関係を保持します」と Rogers 氏は述べています。
「古いバージョンのモジュールはレジストリから削除されないため、古いバージョンのモジュールは引き続き古いバージョンのに依存しますrequest
。」
GitHubはセキュリティコードクレンジングのために友人を集め、ソフトウェアを仕様通りに洗浄する
続きを読む
request
Rogers 氏は、新しいモジュールが実装され、古いモジュールが置き換えられることなく更新を公開し続けることで、多くの慣性が働くと予想していますrequest
。
「だからこそ、本日このパッケージを非推奨にしたのです」と彼は述べた。「このパッケージはRequest
ほぼ1年間メンテナンスモードになっており、今後も無期限に継続されます。非推奨化は、非推奨のコードに依存しているという警告という形でユーザーに伝わるだけです。」
ロジャーズ氏は、彼と仲間のメンテナーたちが の廃止にどのように対処しているか尋ねられrequest
、プロジェクトの貢献者のほとんどが、廃止計画が発表された 1 年前にプロジェクトに対する感情に対処したと述べた。
「あれが本当の変化だった。次の大きなバージョンがどのようなものになるか、あるいは新しいパターンを採用するためにどのように変化していくかについて我々が持っていたすべてのアイデアや議論が決着したのだrequest
」と彼は語った。
全てのメンテナーを代弁することはできません。私にとって、このrequest
ライブラリは時代遅れであり、それを書いたことを誇りに思っています。これほど広く採用され、認められているライブラリは他にほとんどありません。しかし、過去のものに固執しても意味がありません。JavaScriptrequest
に今できる最大の貢献は、人々が作り上げてきた新しく、より良いライブラリのための余地を作ることであり、この廃止はまさにその役割を果たすはずです。®