依存関係とは何か:npm installで増えるものの正体

入門 | 8分 で読める | 2026.07.09

公式ドキュメント

まず結論

依存関係とは、自分のプロジェクトが動くために必要な外部のパッケージとの関係です。

Web開発では、すべてを自分で作るわけではありません。フレームワーク、日付処理、テスト、ビルド、CSS処理など、多くの外部パッケージを使います。

npm install astro

このコマンドを実行すると、プロジェクトは astro というパッケージに依存するようになります。

パッケージとは

パッケージは、再利用できるコードや設定をまとめたものです。

JavaScript界隈では、npmに公開されているものを使うことが多いです。

例:

  • Astro
  • React
  • Vite
  • TypeScript
  • ESLint
  • date-fns

自分のプロジェクトは、これらを部品として取り込みます。

直接依存と推移的依存

依存関係には2種類あります。

種類意味
直接依存自分が package.json に書いた依存
推移的依存依存しているパッケージがさらに依存しているもの

たとえば、自分のプロジェクトが A に依存していて、AB に依存している場合、自分から見ると B は推移的依存です。

your-app
  -> package A
      -> package B

node_modules が大きくなる理由の多くは、この推移的依存にあります。

package manager の役割

package managerは、依存関係を入れる、更新する、削除する、記録するためのツールです。

代表例:

  • npm
  • pnpm
  • Yarn
  • Bun

package managerは、次のような仕事をします。

  • 必要なパッケージをダウンロードする
  • バージョンを解決する
  • node_modules を作る
  • lockfileを更新する
  • scriptsを実行する

つまり npm install は、単なるダウンロードではなく、依存関係全体の整合性を取る処理です。

dependencies と devDependencies

package.json には、依存関係を書く場所が複数あります。

{
  "dependencies": {
    "astro": "^6.0.0"
  },
  "devDependencies": {
    "typescript": "^5.0.0"
  }
}
項目用途
dependenciesアプリの実行に必要なもの
devDependencies開発やビルドに必要なもの

ただしフロントエンドの静的サイトでは、ビルド時に使うものが多いため、境界が少し分かりにくいことがあります。実務では、プロジェクトの慣習に合わせて管理します。

依存関係で起きる問題

依存関係は便利ですが、トラブルも生みます。

よくある問題:

  • バージョン差で動かない
  • lockfileがずれている
  • Node.jsのバージョンが合わない
  • パッケージの破壊的変更で壊れる
  • 不要なライブラリが増えて重くなる

エラーが出た時は、自分のコードだけでなく、package.json、lockfile、Node.jsのバージョンも確認します。

ポイント: 依存関係は「便利な部品」ですが、プロジェクトの一部です。入れるほど保守対象も増えます。

まとめ

依存関係とは、自分のプロジェクトが使っている外部パッケージとの関係です。package managerは、その依存関係を解決し、インストールし、記録します。

npm install で何かが増えた時は、「直接入れたもの」と「それが連れてきたもの」を分けて考えると理解しやすくなります。

次に読む記事

← 一覧に戻る
PR
PR
PR
PR