npmのロードマップについて

こんにちは!@watilde です。

この記事は、Node.js Advent Calendar 2015 の23日目の記事です。npmのロードマップがwikiで公開されているんですが、それを意訳してみます。2015年、実装に半年以上を費やしてついにmajor updateを果たしたnpmですが、2016年はどうなるのか!少しだけ覗いてみましょう。

github.com

ゴール

  • 一貫性: npm install を実行すると、あなたは同じ結果を毎回受け取ります。これは、あなたの dependencies が変更されていないことを保証します。また、 package.jsonを更新して git push をした場合は、あなたの共同作業者が git pull をして npm install を実行すると、あなたのディスクと同じファイルツリーを受け取ることになるでしょう。npm shrinkwrapはこのようなことを確実に行います。
  • 信頼性:npmは理由もなくクラッシュしたりはしません。クラッシュするときは、何が間違っていて次は何をするべきか、明確て実用的なフィードバックを提供します。エッジケースをうまく処理し、できるだけユーザに混乱を与えないようにします。
  • パフォーマンス:モダンなウェブアプリは、Small is beautiful な哲学に沿って小さなモジュールの大きな塊となり、インストールは複雑さを纏います。npmは、インストールにかかる時間があまり目立たないように、これを効率的に実行します。

概要

npmのCLIチームは、新機能に取り掛かる十分な時間があるときに実装とリリースを行います。今日、npmは多くのユーザーを抱えるOSSであり、多くの魅力的な新機能のリクエストを受けています。しかし、全ての要求に取り組むだけの時間はコアチームにはありません。このロードマップは、チームリーダーの @othiym23 が考えている、次の6-18ヶ月の間に集中するべき最も大切な新機能や改善、そして取り払うべき技術的負債についてまとめたものです。

集中していく項目

1. フロントエンドエンジニアのためのnpm

  1. gitのdependenciesをnpmのレジストリにあるdependenciesのように扱えるようにする
  2. フロントエンドのアセットのためのインストーラー
  3. ECMAScript 2015の新しいモジュールシステムのサポート

2. プラットフォームとしての改善

  1. ネイティブモジュールのビルドをより良い形でサポート
  2. Nodeの実行を必要としないモジュールのインストール
  3. Windows上での動作の安定は、引き続きの課題
  4. Node LTSとの協業

3. アーキテクチャ、UX、コードデザイン

  1. npmの使いやすさを再評価し、UXの改善を行う
  2. shrinkwrap と bundledDependencies を改善する
  3. npm link / npm install --link / local dependencies を改善する
  4. package.json をよりシンプルにする
  5. publisherを明らかにするなど、packageの信頼性を高める
  6. packageにlintを
  7. npmの内部的なAPIを分離・分解し、単独のpackageとして動作するように
  8. dependencies / devDependencies / optionalDependencies / peerDependencies / bundledDependencies / browserDependencies がそれぞれどのような役割を持つのか、改めて考えなおす

4. メンテナンス性、内部実装、技術的負債

  1. npm@3を磨き上げる
  2. npm cacheを、より参照しやすいように変更
  3. npmレジストリの新機能をサポート
  4. npm search の内部実装をまともにする
  5. パフォーマンスを改善
  6. サポートのしやすさを改善
  7. npmのテストを、もう少しまとめてシンプルにする
  8. 複雑なバグの修正
  9. 修正するべき大きなバグの一掃
  10. Transactional installs(詳細不明)

いかがだったでしょうか?さらなる詳細は、冒頭にあるリンクから辿っていくと原文が読めるので、興味のある項目がある場合は見てみてください。いっぱいあってワクワクしますね💃

個人的な2015年を振り返ると、npmへのcontributeをはじめてからというもの、暇な日のない充実した毎日を送ることができました。中でも、npm versionのhookをlifecycle scriptに追加できたのはとても良かったです。新機能の提案から実装までを、生きているOSSでやることの楽しさを覚えました 😊

github.com

github.com

そして今月からnpmのcli teamのweekly meetingに参加するようになり(希望出せばたぶん誰でも参加できるやつです)、むこう1−2ヶ月は big-bugbrowserDependencies あたりのissueを拾い続けてみようかなぁとぼんやり考えています。

あと、did you mean?機能を実装してpull requestを作ったんですが

github.com

cli teamがholiday入りしたのもあってこの記事に間に合いませんでした。惜しい><


それでは、素敵なクリスマスをお過ごしください :D