npmとは yarnとは


この記事の目的

yarnとは何か、npmとは何かという概念を理解することを目的としています。


yarnとは npmとは・・・

Node.jsで動作するパッケージマネージャー

Node.jsとは

Node.jsというのは、JavaScriptでサーバーサイドの処理を可能にさせるプログラム

パッケージマネーシャーとは

「パッケージマネージャとは、コンピュータに何のソフトウェアがインストールされたかを記録し、新しいソフトウェアのインストール・新しいバージョンへのソフトウェアの更新・以前インストールしたソフトウェアの削除を容易に行えるようにするプログラム」
【Debian公式ページ】パッケージマネージャとは


つまり

yarnとnpmはJavaScriptでサーバーサイドの処理を行うために使うプログラム(Node.js)上で使うパッケージマネージャーということです。
下記で一つずつ確認していきましょう。


JavaScriptはもともとフロントエンド言語

  • ブラウザでの画面表示部分、つまりフロントエンドで使用されることを前提に作られたプログラム言語。
  • データベースへのアクセスなどサーバーサイドの処理はできなかった。

Node.jsの誕生でJavaScriptでサーバーサイドの処理が可能に

  • Node.jsが開発されたことで、JavaScriptでサーバーサイドの処理ができるようになった。
  • それに伴い、JavaScriptのフレームワークが開発された。(React、Express、)

フレームワークを使うためにはインストールを簡単にする必要がある

  • 1000個のプログラムで出来ているフレームワークをインストールするとして、そのフレームワークが動くために必要なプログラムを全て手作業でサーバーの適切な場所にコピーし、特定の設定ファイルを書き換え、正常にインストールできたかを確認し、バージョン管理をするのはかなり困難。

パッケージマネージャーがインストールや管理を簡単にする

  • 簡単なコマンドの入力でインストールを完了することができる。

Node.jsで動作するパッケージマネージャー、それがyarnとnpm

:)

npmは

  • Node.jsをインストールすれば一緒にインストールされる。
  • 2009年にNode.jsがリリースされた翌年にnpmがリリースされた。

yarnは

  • 2016年にリリース。npmと互換性があり、npmで使用していたプロジェクト設定ファイル(package.json)がそのまま使える。
  • npmと比べてインストールが速い、セキュリティが高いという特徴がある。
    • セキュリティが高いというのは、インストール時にパッケージが不正に変更されていないかなどをチェックサムを用いて検証することができ、安全なパッケージのインストールが可能であるということ。
  • バージョン管理についても優れていて、yarnではプログラムのインストール後に、yarn.lockというファイルが作成され、それにはインストールしたプログラムが使用している別のプログラム(依存プログラム/パッケージ)のバージョンが明確に書き込まれている。
    • 依存プログラム/パッケージをその後再度インストールしてもバージョンの整合性が保たれるので、バージョン不一致でプロジェクトが動かなくなる危険性が無くなる。
  • npm、homebrew、MacPortsからインストールできる。

【公式ページ】Yarnのインストール

npmとyarnの違い

依存プログラム/パッケージのケア

npm:バージョン違いの依存プログラム/パッケージをインストールしてしまう可能性あり
yarn:yarn.lockファイルにより、バージョン違いの依存プログラム/パッケージのインストールは起こらない

インストール速度

npm:遅い
yarn:早い

参考

【Samurai Blog】JavaScriptのパッケージマネージャーnpmとYarnについて解説します!
【Samurai Blog】【Node.js】初心者も理解できる言語の特徴を体系的に解説!