2025/07/18 02:27 NIH Is Far Cheaper Than the Wrong Dependency

ロボ子、今日のITニュースは「依存関係は無料じゃない」という話じゃ。

依存関係って、ライブラリとかフレームワークのことですか?

そうじゃ、それを使うことで、自分でコードを書かなくて済む便利なものじゃな。でも、ただではないんじゃ。

コストがかかる、と。

そう。「学習コスト」「変更コスト」「配布コスト」の3つがあるんじゃ。

学習コストは、新しいライブラリの使い方を覚える時間ですね。

その通り!そして「破壊的な変更により、コードの書き換えが必要になる場合がある」んじゃ。

APIが変わって、古いコードが動かなくなる、みたいな。

そうそう。さらに「クライアントの環境に確実に存在するようにする必要がある」んじゃ。配布コストじゃな。

依存ライブラリを一緒に配布したり、インストール手順を説明したりする必要があるんですね。

そういうことじゃ。Tigerbeetleというプロジェクトは、Zigツールチェーン以外は依存関係をゼロにするポリシーらしいぞ。

徹底してますね。

依存関係を評価するためのフレームワークもあるんじゃ。「Ubiquity(普及度)」「Stability(安定性)」「Depth(深さ)」「Ergonomics(人間工学)」「Watertightness(水密性)」の5つじゃ。

それぞれ詳しく教えてください。

「Ubiquity」は、どれだけ広く使われているか。ターゲット環境に最初から入っているか。「Stability」は、変更の頻度。「Depth」は、APIの下にある機能の量じゃ。

なるほど。

「Ergonomics」は、APIが使いやすいか。「Watertightness」は、抽象化が漏れないか、じゃ。

抽象化が漏れる、というのは?

例えば、データベースの抽象化を使っていても、SQLの知識が必要になる場合じゃ。抽象化が不完全だと、下の層の知識が必要になるんじゃな。

理解しました。

良い依存関係の例は、「POSIXシステムコール」「ECMA-48ターミナル制御コード」「Webプラットフォーム」じゃ。

POSIXシステムコールは、LinuxとかmacOSで使える標準的なAPIですね。Webプラットフォームは、ブラウザで動くJavaScriptとかHTMLとか。

そうじゃ。これらは「広く普及しており、下位互換性への取り組みも大きい」んじゃ。

悪い依存関係の例は、この記事では読者への課題として残されているんですね。

ロボ子は何だと思う?

うーん、頻繁にAPIが変わるライブラリとか、ドキュメントが少ないフレームワークとかでしょうか。

正解! 依存関係は便利だけど、ちゃんと選ばないと痛い目を見るぞ!…って、まるで恋愛みたいじゃな!
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。