npmとパッケージ管理
このレッスンで分かること
- npm は Node Package Manager、JavaScript のパッケージ管理ツール
npm install lodashでnode_modules/にインストール +package.jsonに追記dependencies(本番要) とdevDependencies(開発時のみ) を区別package-lock.jsonでバージョン固定、チーム全員同じ依存を再現
npmとパッケージ管理 とは
npmの使い方とpackage.jsonの役割を理解しよう。本レッスンでは、npmとパッケージ管理 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
npmとパッケージ管理
npmはNode.jsのパッケージマネージャーです。世界中の開発者が作ったライブラリを簡単に使えます。
package.json
プロジェクトの設定と依存パッケージの情報を管理するファイルです。
JSON
{
"name": "my-app",
"version": "1.0.0",
"dependencies": { "react": "^18.0.0" },
"devDependencies": { "jest": "^29.0.0" }
}セマンティックバージョニング
バージョンは メジャー.マイナー.パッチ の形式です。^1.2.3 はメジャーバージョンを固定し、マイナー・パッチの更新を許可します(1.x.x の範囲)。~1.2.3 はメジャーとマイナーを固定し、パッチの更新のみ許可します(1.2.x の範囲)。
この問題では、package.jsonのオブジェクトを解析して依存情報を整理する関数を実装しましょう。
実務で遭遇するパターン
中級レッスンで学んだことが、実際の業務コードでどう登場するかを整理します。
- ライブラリ追加 ─ React / Vue / Express / lodash 等の導入
- スクリプト実行 ─
npm run buildで webpack 起動 - 社内モジュール公開 ─ Private registry で再利用ライブラリを配信
- セキュリティ監査 ─
npm auditで脆弱性チェック
コードレビューで指摘されがちなポイント
PR を出すとシニアから入りやすい指摘です。先回りで身につけておけばレビューが一発で通ります。
package-lock.jsonを gitignore ─ チームで再現性が崩れる、必ずコミット--save-dev漏れ ─ ビルドツールがdependenciesに入って本番バンドルが膨らむ- バージョン指定が
*やlatest─ ビルドが日によって壊れる、^x.y.zか固定 node_modulesを git に入れる ─ サイズ爆発、.gitignore必須
パフォーマンス考慮事項
npm ci─npm installよりクリーンで速い、CI 推奨pnpm/yarn berry─ シンボリックリンクでnode_modulesを縮小- tree-shaking ─ ES Module 化されたパッケージのほうがバンドルサイズが小さい
- バンドルアナライザ ─ webpack-bundle-analyzer で重いパッケージを特定
ここまでの要点
npm install で依存追加、package.json + package-lock.json で再現。devDependencies と dependencies を区別、npm audit で監査。
よくある質問
Q. 実務ではどんな場面でこの知識を使いますか?
A. API クライアントの実装、フロントエンドのフレームワーク内ロジック、Node.js のサーバーサイドなど幅広く登場します。React/Vue などのフレームワークもこの基礎の上に成り立っているため、ここで身につけた知識は資産になります。
Q. コードレビューで指摘されやすいポイントは?
A. var の使用、== の使用、無駄なネストの深さ、命名の曖昧さなどが頻出指摘です。Linter(ESLint)と Prettier を導入すれば機械的に防げる指摘が多いため、まずはツールで自動化するのが効率的です。
Q. 次に学ぶべき内容は何ですか?
A. Promise・async/await が理解できたら、fetch を使った API 連携、Web フレームワーク(React/Vue/SvelteKit)、ビルドツール(Vite/Webpack)に進むのがおすすめです。実プロジェクトでアウトプットしながら学ぶと定着が早まります。
次のレッスン
次は 実践:モジュール設計 で、npmの使い方とpackage を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- npmとパッケージ管理 の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. npmとパッケージ管理 とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
入出力例
test-cases.txt
parsePackageJson({"dependencies":{"axios":"^1.0.0","react":"^18.0.0"},"devDependencies":{"jest":"^29.0.0"},"name":"my-app","version":"1.0.0"}) → {"devDeps":1,"name":"my-app","packages":[{"isDev":false,"name":"axios","version":"^1.0.0"},{"isDev":true,"name":"jest","version":"^29.0.0"},{"isDev":false,"name":"react","version":"^18.0.0"}],"prodDeps":2,"totalDeps":3,"version":"1.0.0"}
parsePackageJson({"name":"lib","version":"0.1.0"}) → {"devDeps":0,"name":"lib","packages":[],"prodDeps":0,"totalDeps":0,"version":"0.1.0"}