【いぞんかんけいかんり】

依存関係管理 とは?

💡 使っている部品の「在庫管理と品質チェック」を自動でやる仕組み
📌 このページのポイント
依存関係管理の仕組み 自分のアプリ package.json React ^18.2.0 axios ^1.6.0 dayjs ^1.11.0 react-dom scheduler follow-redirects ● 直接の依存 ● 推移的依存 🔒 package-lock.json react: 18.2.0 (固定) axios: 1.6.7 (固定) follow-redirects: 1.15.4 (固定) ロックファイルでバージョンを固定 → チーム全員が同じ環境を再現
依存関係管理とロックファイルの仕組みのイメージ
ひよこ ひよこ

依存関係管理って何を管理するの?

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

自分のソフトウェアが使っている外部のライブラリやパッケージを管理することだよ。たとえばWebアプリを作るとき、自分でゼロから全部作るのではなく、便利なライブラリを組み合わせて使うよね。その「どのライブラリのどのバージョンを使っているか」を管理するのが依存関係管理だよ。

ひよこ ひよこ

管理しないとどうなるの?

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

「自分のパソコンでは動くのにサーバーでは動かない」という問題が起きるよ。ライブラリのバージョンが微妙に違うだけでエラーになることがあるんだ。あとセキュリティ脆弱性が見つかったライブラリを使い続けてしまうリスクもあるよ。

ひよこ ひよこ

ロックファイルって何なの?

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

package-lock.json や yarn.lock のようなファイルのことだよ。これは「このプロジェクトではライブラリAのバージョン1.2.3、ライブラリBのバージョン4.5.6を使う」と正確に固定するファイルなんだ。チーム全員がまったく同じバージョンの組み合わせで開発できるようになるよ。

ひよこ ひよこ

バージョンの更新ってどうやるの?

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

手動で一つずつ更新することもできるけど、最近はDependabotRenovateのような自動更新ツールが主流だよ。脆弱性が見つかったライブラリを検出して、自動でプルリクエストを作ってくれるんだ。

ひよこ ひよこ

依存関係が多すぎると問題になったりするの?

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

あるよ。有名な事例として、2016年にnpmのleft-padという11行のライブラリが削除されて、React含む大量のプロジェクトがビルドできなくなった事件があるんだ。依存の依存、さらにその依存という連鎖を「推移的依存」と呼ぶけど、これが何百にもなると把握しきれなくなるよ。SBOM依存関係を可視化する動きも広がっているね。

ペンギン
まとめ:ざっくりこれだけ覚えればOK!
依存関係管理」って出てきたら「外部ライブラリのバージョンを把握・制御する仕組み」と思えればだいたいOK!
📖 おまけ:英語の意味
「Dependency Management」 = 依存関係の管理
💬 dependency(依存)は「なくてはならないもの」という意味で、ソフトウェアが動くために必要な外部の部品を指すよ
← 用語集にもどる