技術的負債: 私のRustライブラリはいまやCDOになった
- 技術的負債に関するジョークとして、技術的負債があるなら、その負債を扱うためのデリバティブ商品もあるはずだ、というものがある。
- Rustエコシステムは、技術的負債を証券化しているかのように見える解決策を生み出した。
- たとえば、あるライブラリ
stuff が別のライブラリ learned-rust-this-way に依存しているが、learned-rust-this-way の作者が興味を失い、問題が積み上がり始める。
技術的負債の実体
learned-rust-this-way は技術的負債と見なされるが、これは直接的な問題を引き起こさない一方で、それでもなお負債である。
- ある時点で誰かが
learned-rust-this-way が負債だと気づき、元の作者に連絡がつかないまま RUSTSEC データベースに追加される。
- RUSTSEC は格付け機関としてその負債をジャンクと評価し、その結果、多くの人の CI(継続的インテグレーション)が失敗し始める。
負債を解決する方法
stuff のメンテナーとして、ユーザーが learned-rust-this-way の使用について問題を提起するたびにストレスが増し、負債に対処するための行動を求められる。
- 代替へ移行するのも一つの選択肢だが、このケースではどの代替も魅力的ではない。
learned-rust-this-way をフォークしても同じ要求に直面することになり、それは一時しのぎの解決策にすぎず、問題そのものは解決しない。
実際に効果のある解決策
- 自分のライブラリにそのコードをマージすると、そのジャンクな技術的負債は突然「AAA」格付けになる。
- そのコードにはもう手を加えず、マージした事実を隠し、以前と同じようにライブラリをメンテナンスしていれば、世界は回り続ける。
yaml-rust を insta にベンダーとして取り込みマージすることで、insta のコードと yaml-rust の結合体となり、これによって技術的負債を AAA 格付けへとアップグレードした。
GN⁺の見解
- この記事は技術的負債を金融デリバティブにたとえ、ソフトウェア開発で生じる問題を機知に富んだ形で説明している。
- 技術的負債はソフトウェア開発でよく直面する問題であり、この記事は開発者に負債を管理する創造的な方法を提示している。
- Rustエコシステムの RUSTSEC のような格付けシステムは、開発者がライブラリの安定性を評価する助けになる一方で、不要なストレスを引き起こすこともある。
- 技術的負債を解決する手段としてコードをマージすることは一時的な解決策かもしれず、長期的には持続可能なメンテナンス戦略が必要である。
- このような状況では、コミュニティ主導の保守、オープンソースプロジェクトの共同メンテナンス、あるいはライブラリの代替版を探すことなど、さまざまな解決策を検討する必要がある。
1件のコメント
Hacker Newsの意見