npmとは
npm(Node Package Manager)は、Node.jsのパッケージマネージャー(パッケージ管理システム)です。2009年にNode.jsがリリースされ、2010年にnpmがリリースされています。
JavaScriptパッケージマネージャーとは、JavaScriptフレームワークやライブラリなどを複数組み合わせた際に、それぞれの依存関係を管理するツールのことです。
Node.jsにおけるnpmの役割
Node.jsは、サーバーサイドでJavaScriptを動作させるためのプログラムです。Node.jsだけでウェブサービスを運用するというよりは、Node.js上で動作するJavaScriptフレームワーク、ライブラリ、プラグインなどと組み合わせて利用されることがほとんどです。
Node.js上で動作するJavaScriptフレームワーク、ライブラリ、プラグインなどのパッケージを利用する場合、npmを使うことで、すべてのパッケージを一括して管理してくれます。 Node.js上で動作するJavaScriptフレームワーク、ライブラリ、プラグインなどのパッケージのインストールを簡単にしたり、バージョンの不整合が起きないように管理します。
パッケージのインストール補助
npmを利用することで、Node.jsへの様々なパッケージのインストール作業を簡単にしてくれます。npmが入っている環境では、簡単なコマンドを入力するだけで様々なパッケージのインストールが完了します。
また、インストール済みのパッケージが不要になった際にも、簡単なコマンドを入力するだけでアンインストールが完了します。
パッケージのバージョン管理
Node.js上で動作するJavaScriptフレームワークやライブラリを利用する場合、 npmのようなパッケージ管理システムは必須といえるかもしれません。Node.js上でフレームワークなどを動かす場合、適切なバージョンの組み合わせでなければ、うまく動作しないことがあるからです。
利用するパッケージのバージョンがすべて最新かどうか、あるいは、特定のバージョンに設定されているかどうかを個別に確認するには、それぞれのパッケージのバージョン、および、その組み合わせに精通している必要がありますが、現実的にはなかなか大変です。
こうしたバージョン管理を一括で行ってくれるのがnpmです。npmを利用することで、Node.jsとフレームワークやライブラリを組み合わせた場合にも、バージョンの不整合が生じないように一括管理してくれます。
npmとBowerの違い
npmと同様のパッケージ管理システムにBowerがあります。npmとBowerの違いですが、npmがサーバーサイドでNode.js上で動作するパッケージを管理するのに対して、BowerはReact、Angular、jQueryなどのクライアントサイドで利用するパッケージを管理します。
現在Bower公式サイトでは、Bower を非推奨としており、その代替としてnpmやYarnを推奨しています。これはnpmやYarnの機能が強化されており、あえてBowerを採用する理由が無くなっているためです。
npmとYarnの違い
npmと同様のパッケージ管理システムにYarnがあります。Yarnはもともとnpmの問題を解決するために開発されたものです。
npmとYarnの違いですが、npmがパッケージをひとつづつインストールするのに対して、Yarnは並行してインストールします。Yarn公式サイトでは、Yarnは”超高速(Ultra Fast)”としています。
npmでは、パッケージのインストール時にコードが実行されることがあります。一方、Yarnでは実行前にインストールされているすべてのパッケージの整合性を検証します。Yarn公式サイトでは、Yarnは”大安全(Mega Secure)”としています。
npmでは、モジュールが追加される際にデフォルトではロックファイルを生成しません。一方、Yarnではモジュールが追加されるたびに、常にロックファイルが生成されます。 Yarn公式サイトでは、Yarnは”超高信頼(Super Reliable)”としています。
npmの特徴
npmには、以下の特徴があります。
- Node.jsのパッケージ管理システム
- パッケージのバージョン管理やインストール補助に使う
- サーバーサイドで動作する
- JavaScript で書かれたプログラム
- Googleが開発したV8というJavaScriptエンジン上で動作する
npmは、Node.jsのパッケージ管理システムです。 Node.js上で動作するパッケージのバージョン管理やインストール補助をしてくれます。
npmは、サーバーサイドで動作します。Node.js側で動作するパッケージを管理するためのツールであり、クライアントサイドで利用するパッケージを管理するBowerなどとは異なります。
npmは、JavaScriptで書かれたプログラムであり、Googleが開発したV8というJavaScriptエンジン上で動作します。V8では、JavaScriptのコードを実行時に機械語に変換してから処理するので、実行速度が大変高速です。
npmを学ぶメリット
npmで求人を検索すると、ウェブサービス開発のフロントエンドエンジニア、バックエンドエンジニアなどでの募集が確認できます。
npmのスキルだけが求められているのではなく、Node.jsを含めてサーバーサイドJavaScript環境を構築できる人材が求められていると思われます。
npmのスキルが求められる職場では、他に使えることが望ましいスキルとして、JavaScript、Node.js、Yarnなどが挙げられています。
npm 公式サイト: https://www.npmjs.com/