【ぱっけーじまねーじゃー】

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

💡 ライブラリの「自動宅配&棚管理係」
📌 このページのポイント
パッケージマネージャ — 依存管理のフロー 開発者 npm install パッケージ マネージャ npm / yarn / pip 検索・取得 レジストリ npmjs.com / PyPI package.json 依存パッケージ一覧 lock ファイル バージョン固定 node_modules/ インストール先 依存関係ツリーの自動解決 パッケージA v2.0 依存B v1.3 依存C v3.1 依存D v0.9
パッケージマネージャによる依存管理のイメージ
ひよこ ひよこ

手動でライブラリをダウンロードしたらダメなの?

ペンギン先生 ペンギン先生

小規模なら動くけど、AというライブラリがB・C・Dに依存していて、BがさらにEに依存していて…ってなると手動では無理。パッケージマネージャーはこの「依存の連鎖」を全部自動解決してくれる。

ひよこ ひよこ

npm installとpip installって何が違うの?

ペンギン先生 ペンギン先生

対象の言語が違うだけで役割は同じ。npmJavaScript/Node.js用、pipPython用。どちらも「パッケージ名を渡せばインストールしてくれる」仕組み。

ひよこ ひよこ

ロックファイルって何?

ペンギン先生 ペンギン先生

インストールしたパッケージの正確なバージョンを記録したファイル。package-lock.json(npm)やPoetry.lockがそれ。「AさんとBさんで違うバージョンが入ってた」という事故を防ぐために、チームで同じファイルを共有する。

ひよこ ひよこ

package.jsonとpackage-lock.jsonはどっちをGitに入れるの?

ペンギン先生 ペンギン先生

両方入れる。package.jsonは「どのパッケージが必要か」の定義、package-lock.jsonは「正確に何のバージョンを入れたか」の記録。ロックファイルなしだと「npm install」のたびに違うバージョンが入ることがあって、チームで動作に差が出る。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
パッケージマネージャーって出てきたら「ライブラリを自動でインストール・管理するツール」と思えばだいたいOK!
📖 おまけ:英語の意味
「package manager」 = 荷物(パッケージ)の管理者
💬 ソフトウェアの「部品セット」を管理するという意味でpackageと呼ぶ
← 用語集にもどる