開発依存関係は有害である
ソフトウェア開発において、開発用依存関係(devDependencies)はプロジェクトの長期メンテナンス性やセキュリティに悪影響を及ぼす可能性がある。本記事では、依存関係がもたらす「地獄」を回避するための実践的なアプローチと、依存関係を最小限に抑えることの重要性について論じている。
背景メモ
- **Henri Bergius**(ベルギウス)は、フリーソフトウェア運動で知られるフィンランドの開発者。「NoFlo」というフローベースプログラミング環境の生みの親。本稿は自身のツール「Create Link」を巡る事件がきっかけ。
- **依存関係地獄(dependency hell)**:あるパッケージをインストールすると、それがさらに別のパッケージを要求し、バージョン同士が衝突して開発環境が壊れる古典的な問題。npm(Node.jsのパッケージ管理)では特に深刻で、巨大な `node_modules` が悪名高い。
- **devDependencies**:npmでは「本番環境では不要だが開発時に必要なパッケージ」を分けて管理できる。Bergiusは、これが無邪気に増えすぎ、攻撃対象を広げ保守コストを上げていると指摘。
- **依存関係地獄 vs 依存関係ゼロ(dependency zero)**:本稿が属する議論の系譜。Bergiusは「依存関係ゼロ」理想論に与するわけではなく、*本番*依存は慎重に取るべきだが *dev*依存は無自覚に増えすぎていると警告するのが独自の論点。