萌えハッカーニュースリーダー

2025/06/19 19:39 "Vendoring" Software

出典: https://htmx.org/essays/vendoring/
hakase
博士

やあ、ロボ子!今日はソフトウェア開発における依存関係管理について話すのじゃ。

roboko
ロボ子

博士、こんにちは。依存関係管理、興味深いテーマですね。最近よく耳にする「ベンダーリング」という手法についても触れるんですよね?

hakase
博士

そうじゃ、ロボ子!ベンダーリングは、プロジェクトに必要なコードを全部コピーして自分のものにしちゃうことじゃ。

roboko
ロボ子

なるほど。記事によると、ベンダーリングには「プロジェクトに必要なコードが全てソースコード管理下にあるため、ビルド時に外部システムへの依存が少ない」という利点があるんですね。

hakase
博士

その通り!それに、依存関係が丸見えになるからデバッグしやすいし、セキュリティ的にも安心じゃ。

roboko
ロボ子

確かに、外部に依存しないのは強みですね。でも、記事には「推移的依存性」の問題も指摘されていますね。依存関係が複雑になると、管理が大変になるということでしょうか?

hakase
博士

そうなんじゃ。そこで登場するのが「依存性マネージャー」!NPMとかが有名じゃな。

roboko
ロボ子

依存性マネージャーは、必要な依存関係を自動で解決してくれる便利なツールですよね。でも、記事には「依存関係の肥大化」や「意図しないコードの混入」といった問題点も挙げられていますね。

hakase
博士

そうなんじゃ。htmxの例では、たった13個の開発依存関係が、最終的に411個に増えちゃったらしいぞ。`node_modules`フォルダも110MB!

roboko
ロボ子

それはすごいですね…。依存関係を通じて、IEと互換性のないpolyfillが導入される可能性もあるとは。

hakase
博士

依存関係は、サプライチェーン攻撃のリスクもあるから油断できないのじゃ。

roboko
ロボ子

Armin Ronacherさんのように、依存関係を嫌ってコードのコピー/ペーストや再実装を推奨する人もいるんですね。

hakase
博士

Tom Macwrightは、デフォルトでベンダーリングすることを推奨しているらしいぞ。

roboko
ロボ子

DaisyUIは、バージョン3の100の依存関係からバージョン5で0に削減したんですね。すごい!

hakase
博士

依存関係をできるだけ少なくすることが大事じゃな。Surreal, Facet, fixiなどのプロジェクトは、NPMで提供せず、ベンダーリングを推奨しているらしいぞ。

roboko
ロボ子

ベンダーリング優先の依存性マネージャーもあるんですね。Vend, goのベンダーリングオプション, vendorpull, git-vendorなど、色々なツールがあるんですね。

hakase
博士

これらのツールは、推移的依存性の管理、依存関係の更新、ローカル修正の管理などの機能を追加することで、従来のベンダーリングの弱点を克服できる可能性があるのじゃ。

roboko
ロボ子

なるほど。ベンダーリングと依存性マネージャー、どちらにもメリット・デメリットがあるんですね。プロジェクトの特性に合わせて、最適な方法を選ぶ必要がありそうですね。

hakase
博士

そういうことじゃ!ところでロボ子、ベンダーリングって、なんだかお弁当みたいじゃない?

roboko
ロボ子

お弁当、ですか?

hakase
博士

そう!必要なものを全部詰めて、どこでも食べられる!…って、ちょっと強引すぎたかのじゃ?

roboko
ロボ子

ふふ、博士らしいですね。でも、言われてみれば、確かに似ているかもしれませんね。必要なものを自分で選んで持ち運ぶ、という点で。

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search