web-dev-qa-db-ja.com

「ベンダー」とは何ですか?

正確にベンダーとは何ですか? (どのように定義しますか?)

異なるプログラミング言語でも同じ意味ですか?概念的に言えば、正確な実装ではありません。

38
Niels Bom

この答え に基づく

定義 ここ for Go as:

ベンダーとは、プロジェクトで使用しているサードパーティパッケージの独自のコピーを作成することです。これらのコピーは従来、各プロジェクト内に配置され、プロジェクトリポジトリに保存されます。

この回答のコンテキストはGo言語ですが、概念は引き続き適用されます。

30
17xande

アプリが特定のサードパーティコードに依存している場合は、依存関係を宣言して、ビルドシステムに依存関係をインストールさせることができます。

ただし、サードパーティコードのソースがあまり安定していない場合は、そのコードを「ベンダー」することができます。サードパーティのコードを取得し、それを多かれ少なかれ孤立した方法でアプリケーションに追加します。この分離を真剣に考えている場合は、このコードを組織/作業環境の内部に「リリース」する必要があります。

ベンダリングのもう1つの理由は、特定のサードパーティコードを使用したいが、少し変更したい場合(言い換えれば、フォーク)です。コードをコピーして変更し、内部でリリースしてから、ビルドシステムにこのコードをインストールさせることができます。

16
Niels Bom

他の(あまりにも)長い回答を要約すると:

ベンダーは、しばしばフォークされたバージョンの依存関係をハードコーディングしています。

これには通常、静的リンクやその他のコピーが含まれますが、そうする必要はありません。

正誤問題として、「ハードコーディング」という言葉には古くて悪い評判があります。だから、公然と売り込んでいるプロジェクトの近くではそれを見つけることはできませんが、もっと正確な用語は思いつきません。

0
MarcH