面白い事実、私はすでにこの投稿を書いたと思っていたが、私はそれを参照したいときに、私はそうでないことを発見しました. この投稿では、私は依存症を選択するときに私のアプローチを説明したいと思います. 私はまず私がこの投稿の文脈で依存症で何を意味するかを定義します. 次に、私は可能な依存症を分析するためのいくつかの基準のグリッドをリストします. 依存性って何? 依存性は文字通りあなたのソフトウェアが依存するもの:ファイルシステムやデータベース、ネットワークなどのインフラストラクチャですが、この投稿の文脈では、コンパイル / 実行する必要があるソフトウェア依存性への範囲を狭めたいと思います。 , a library. Different software stacks have different names for this library. さまざまなソフトウェアスタックには、このライブラリの名前が異なります。 イエス ルビーはそれを宝石と呼ぶ Rust calls it a crate (ロストはそれをクレーターと呼ぶ) Python と Node.js がパッケージと呼ぶ Go モジュールと呼ぶ Maven/Gradleはそれを「依存性」と呼んでいますので、タイトルで使っている名前はこちらです。 など 業界がサービスベースのアーキテクチャに移行してきたのは、純粋に収益上の理由で、REST APIまたはその他の何かを介してサービスにアクセスできます。 ビルド vs. 購入 あなたが新しいソフトウェアを必要とするとき、通常のクランダリーは、それを構築することとそれを購入することです - Component Off The Shelf. 同じ推論は、新しい依存性と同様に適用することができ、 1 つの主要な追加オプション: オープンソース. もう一つを選択する理由は、長年にわたり多くの詳細で議論されています。 ここでは、個人的な経験から私の謙虚な貢献です. 私のプロジェクトでは、私は視覚性に関して非常に保守的です. 私は外部のアクセスを最小限に保つことを試みます. Java では、私は使用します。 可能な限り、製造業者を含め、テストにプライベート・ビルダーを使用することはできません. したがって、パッケージ保護に視界を拡大しましたが、それをドキュメンタリー化する方法が欲しかったのです。 private 以前は、ある同僚がグアヴァの言葉を指摘するまで、定期的なコメントを使用していました。 I became a big fan instantly. And yet, I't bring in the addiction for the もしそれが私がグアヴァについて持っている唯一の注釈だったら、私は自分のものを作りたい。 ビデオテスト @VisibleForTesting しかし、グアヴァからの他のクラスが必要な場合は、私の決定を再評価します。 , a map with possibly multiple values stored under a key, requires a lot more time to develop. Therefore, if I need to たぶん、依存性に加えたい。 マルチマップ Multimap ご覧のとおり、決定はかなり文脈に依存しています。 この記事の残りの部分では、構築を選択することは最善の解決策ではないと仮定し、存在するものから依存性を選択する必要があります。 リスク管理 依存症を選ぶことはリスクであり、あらゆるリスクと同様に、適切に適用する必要があります。 : リスク管理技術 リスクを特定する:次のセクションでは、あなたが検討できるいくつかの項目をリストします。 それぞれのリスクを分析する. 確率とその影響を考慮してください. 組織は異なります. 一つは特定のリスクの影響をその文脈で低く見ますが、もう一つはそれを高く見ます. 私はそこであなたを助けることはできません。 リスクを軽減する措置と関連するコストを各リスクに対して文書化する Monitor! Risk management is not a static activity done once. Even in the context of dependencies, new risks can appear, e.g., a new critical CVE. Furthermore, a risk can increase its likelihood, e.g., a core committer leaves the project, and reduce the bus factor to a critical level. たぶん、フルタイムの従業員をプロジェクトのメンテナンスに捧げる時間なのか? 選択基準 The わたしが書いたのは、わたしが築く基盤であり、わたしはその上に発展する。 BLURB ライセンスと法的側面 あなたはライセンスを見る必要があります. GitHub はそれを検証しやすくします:まず、それはプロジェクトにプロジェクトを奨励します。 ファイル; それから、それが認識されているオープンソースライセンスの1つである場合、上位に顕著に表示されます。 LICENSE あなたはライセンスを理解していることを確認する必要があります. 定期的に , それは非常に簡単です:他の人々はすでにあなたのために仕事をしました。他のタイプの場合、それはより困難です。いくつかの依存性は、二重ライセンスでリリースされています:オープンソースと商用です。 OSI認定ライセンス 価格 価格には3つのモデル(私が知っているもの)があります。 固定価格 いくつかの要因(要因)に基づく変動価格、例えば、CPUの数、ユーザーの数など。 上記の組み合わせ ライセンスは、限られた期間または永久に使用することができます。 私の最高のアドバイスは、あなたの要件、あなたの範囲、あなたの予算を記録することです。それから、あなたはおそらくあなたの購入部門に購入を委託するべきです:彼らはプロであり、交渉するのに最善です。 統治 商業プロジェクトは会社によって支配されます。会社が支配するプロジェクトの主な利点は、財政的支援です。プロジェクトが期待される収入を返さない場合、それは問題になる可能性があります。その他の利点は、利息を引き出す専門的なスキルやサポートを含む可能性があります(リンクを参照してください:#下)。 オープンソースは、統治に関していくつかの選択肢を提供します:財団、開発者コミュニティ、または単一のものです。財団は、企業と同様に、最も安定した形式の統治です。 , the , and the 非常に異なるモデルで動作します。 Apache 財団 Eclipse 財団 Linux 財団 Apache Foundation は、プロジェクトで働く人々の個々の功績に基づいて構築されています. They provide the infrastructure (SCM, email, build infrastructure, etc.), but you are on your own beyond that. 逆に、SCM は、インフラストラクチャを提供しています。 会社は、Linux Foundationの一部であり、企業に基づいて構築され、会社は、貢献をすることでCNCFの一部になる。 CNCF プロジェクトをコントロールするグループが大きいほど、影響力はより時間がかかります。 影響力は、あなたが望む方向にロードマップを動かすほど大きなものであり、バグを修正したり、自分自身の修正を合併させたりするほど小さいかもしれません。 開発者との相互作用は、技術的に考える人々にとってより容易になります。いずれにせよ、管理機関によって異なる方針ででも、目標を達成するために政治をプレイすることを期待してください。 成熟 依存性を追加することは妥協です:時間に節約しますが、コントロールを失います. 維持されていないプロジェクトにソフトウェアを構築する場合は、依存を削減するためにコードを移行するか、それ自身で維持する必要があります. このため、依存を約束する前に適切なリスク評価を行う必要があります. 以下は、プロジェクトの成熟度を評価するためのいくつかのデータポイントです。 プロジェクトはいつ作成されましたか? 古いプロジェクトはより多くの信頼を生み出しました。 What is its release history? The more regular the release frequency, the better it is. プロジェクトはそのロードマップを発表しますか? もしそうなら、その詳細はどれくらいですか? 曖昧なロードマップ、あるいはまったくありませんが、ビジョンの欠如を裏切ります。 商業プロジェクトでは、長期サポートのようなものがありますか? 活動 オープンソースのプロジェクトでは、その活動を確認する必要があります。プロジェクトは過去に非常にアクティブだったかもしれないが、途中でドライブを失ったはずです。 いくつ問題が開かれているか? 問題を解決するための平均時間はどれですか? 最も一般的な解決状態は何ですか? 最も長い開かれた問題は何ですか? これらの質問に答えると、プロジェクトの全体的な健康状態についてのヒントを提供する必要があります。 プロジェクトに何アカウントがコミットするか? 何アカウントが定期的にそれを行うか、すなわち、彼らが何コアコミットするか? 言い換えれば、バス因子は何ですか? バス因子が高ければ高いほど、プロジェクトが一人のコミット者が停止した場合に続く可能性が高くなります。 上記に関連して、主なコミッターのコミットの歴史は何ですか? コミッターはいくつかの無関係なプロジェクトに広がっていますか? それともあなたが頼っているプロジェクトに焦点を当てていますか? サポート サポートには、商用サポートとコミュニティサポートの両方が含まれます。 ほとんどの成熟した組織にとって、商業サポートは要件です。 商業依存はそのようなサポートを提供します。 オープンソースのプロジェクトでは、プロジェクトをコアビジネスの一部としてサポートする企業までサポートがありません。 そして Offer support for the Apache Foundation が運営しています。 トマト ヒロイン Tomcat Servlet エンジン コミュニティからのサポートは無料ですが、最善の努力でもあります。誰かがあなたの要望に答える保証はありません、もしそうなら、いつです。 , GitHub, Slack, Google Groups など、そしてチェック: エジ 回答するさまざまな人の数 答えと質問の間の遅れ 答えの質 開発者体験 DXとも呼ばれる開発者体験は、良いプロジェクトと素晴らしいプロジェクトの主要な違いの一つです。 and group content into the following groups: tutorials, how-to guides, reference guides, and explanations. そして、コンテンツを次のグループにグループ化します。 Divio システム ほとんどのプロジェクトは、完全な参考文書を提供します。いくつかのプロジェクトは、迅速なスタートを提供します。新しいプロジェクトにおける私の最初のDevRelイニシアチブは、新しいユーザーを搭載する際のブロックです。 DXのもう一つのコンポーネントは、依存性自体を使用することです。私は、提供された依存性を用いて、小さなタイムボックスプロジェクト内のプロトタイプを推奨します。それは開発者体験のための良い感覚を与えます。 市場採用と生態系 私は上記で、依存症を選択することはリスク管理であると述べました。我々は社会的動物であるため、我々より前に依存症を選択した人々が正しい決定を下したことを信頼することができます。 Ergo、より多くの組織が依存症を使用するほど、それは正しい選択である可能性が高くなります。しかし、群馬心理症候群に気をつけましょう:私は多くの組織がそのことを行い、他の人々がまったく異なる文脈で検証したものを選択しているのを見ます。 CSV 解析依存性は明らかに適用されませんが、LDAP 読書/書き込みは適用されます。 Finally, check whether one or more team members are already familiar with the dependency. ミスケラン 私は次のいずれかの基準を使用したことはありません; 私は開発しません. それにもかかわらず、彼らはあなたの文脈で関連しているかもしれません。 脆弱性管理と対応時間 依存性の健康と更新頻度 公共安全政策 パブリック・ベンチマークとパフォーマンス・メトリー 現実世界のスケーラビリティの例 企業の安定性と財務透明性 概要 この記事では、あなたが依存性を評価するために使用できるいくつかの基準をリストしました。 オリジナルの投稿 A Java Geek on November 2nd, 2025 ・Java Geek