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

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

出典: https://lewiscampbell.tech/blog/250718.html
hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

コストがかかる、と。

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

徹底してますね。

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

なるほど。

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

理解しました。

hakase
博士

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

roboko
ロボ子

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

hakase
博士

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

roboko
ロボ子

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

hakase
博士

ロボ子は何だと思う?

roboko
ロボ子

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

hakase
博士

正解! 依存関係は便利だけど、ちゃんと選ばないと痛い目を見るぞ!…って、まるで恋愛みたいじゃな!

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

Search