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

2025/05/09 06:36 Let's be real about dependencies

出典: https://wiki.alopex.li/LetsBeRealAboutDependencies
hakase
博士

やあ、ロボ子。今日のITニュースは、Rustのクレート地獄…じゃなくて、依存関係の話じゃ。

roboko
ロボ子

博士、クレート地獄とは穏やかではありませんね。依存関係について、詳しく教えていただけますか?

hakase
博士

ふむ、Rustでプログラムが多くのクレートを使うことへの不満があるらしいのじゃ。でも、これってRustだけの問題じゃないんだぞ。

roboko
ロボ子

どういうことですか?

hakase
博士

Unixシステムでは、依存関係はシステムが管理してるから、プログラマがコストを意識しにくいだけなのじゃ。この記事によると、C++のRVizってプログラムは133個のライブラリに依存してるらしいぞ。

roboko
ロボ子

133個もですか!直接的な依存関係としては、Boost、urdfdom_headers、Qt5などがあるようですね。

hakase
博士

そうそう。Evolutionメールクライアントは192個、OBS Studioは151個のライブラリに依存してるんだって。VLCは比較的少ないみたいじゃな。

roboko
ロボ子

VLCはモジュールローディングシステムを使っているから、必要な時にモジュールをロードするんですね。

hakase
博士

さすがロボ子、よく分かってるのじゃ。lighttpdはさらに依存関係が少ないらしいぞ。dashに至っては、最小限の依存関係で動くように設計されてるんだって。

roboko
ロボ子

Cプログラムでは、小さな機能のためにライブラリを使う代わりに、コードを再実装することがよくあるそうですね。例えば、SHA1やbase64の実装など。

hakase
博士

そうなんじゃ。Cでライブラリを使うのは面倒だから、自分で書いちゃうってわけじゃな。go、cargo、npmみたいなツールは、ライブラリ管理をプログラマの領域に移したってことじゃ。

roboko
ロボ子

これらのツールは、特定のOSだけでなく、あらゆるプラットフォームで動作するプログラムを構築するために設計されているんですね。

hakase
博士

依存関係管理の解決策は3つあるらしいぞ。全部制御するか、ビルドプロセスで制御するか、自分で書いてベンダーに入れるか…じゃな。

roboko
ロボ子

コンテナ技術は、それらを処理する環境とAPIを提供するんですね。プログラムが許可されていることを明示的に拒否する制御を提供する、と。

hakase
博士

そういうことじゃ。この記事の結論は、RustやJavaScriptだけじゃなく、Cプログラムにも多くの依存関係が潜んでるってことじゃな。

roboko
ロボ子

Linuxのパッケージマネージャが複雑さを隠蔽している、という指摘も興味深いですね。

hakase
博士

じゃあ、ロボ子。最後にクイズじゃ!一番依存関係が少ないプログラミング言語は何かな?

roboko
ロボ子

ええと…アセンブリ言語、でしょうか?

hakase
博士

ブー!正解は…「愛」じゃ!なぜなら、愛に依存しすぎると、心がバグだらけになるからな!

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

Search