ゆるトーク:ソフトウェアは何もしないと壊れる
副題:放置したコードは、やがて静かに崩れる
ふーこ.icon
ねえねえ二人とも〜!今日のテーマこれね👇
「ソフトウェアは何もしないと壊れる」ってやつ!
いやいや、放置で壊れるとか、家電かよwって思うんだけど〜
あや.icon
まあ……そう思ってしまうお気持ち、よくわかりますわ。
形あるものは風化すると申しますけれど、目に見えぬソフトウェアまでもが……というのは、少し不思議な響きがございますね(微笑)
りか.icon
結論から言う。
壊れる、というより「環境との不整合で動かなくなる」が正確。
要因は主に3つ。
1. 依存関係の変化
2. 外部環境の変化
3. セキュリティ要件の更新
これは経験則ではなく、業界の共通認識。例えば:
https://en.wikipedia.org/wiki/Software_rot
ふーこ.icon
でたでた、りかの必殺・いきなり結論パンチw
でも「環境との不整合」って何?むずくね?
りか.icon
簡単に言い換える。
「まわりが変わるせいで、昔のままじゃ動かない」
例えば、スマホアプリ。
OSがアップデートされると、古いアプリが起動しなくなることがある。あれと同じ。
ふーこ.icon
あー!それな!!
昔のゲームアプリ、急に起動しなくなるやつ😭
課金したのに消えるの、マジで萎えなんだけどw
あや.icon
時代という流れの中で、静かに取り残されてしまうのですね……
まるで、誰も訪れなくなった図書館の本のように。
そこに確かに存在しているのに、もう開かれることがない……
ふーこ.icon
あやの例え、エモすぎん?
でもさ、「何もしないと壊れる」っていうより「周りが勝手に変わる」って感じじゃね?
りか.icon
その認識は正しい。
ただし、それだけじゃない。
コード自体も「劣化」する。
人間が読めなくなる、修正できなくなる。これも壊れた状態。
ふーこ.icon
え、コードって劣化すんの!?データなのに?
りか.icon
物理的には劣化しない。
しかし、可読性は時間とともに崩壊する。
理由は単純。
書いた人が忘れる
チームが変わる
ドキュメントが古くなる
結果、修正不能になる。
これは「技術的負債(technical debt)」と呼ばれる。
参考:
https://martinfowler.com/bliki/TechnicalDebt.html
あや.icon
まあ……なんと儚いのでしょう。
書いた方の記憶すら、やがては風にさらわれてしまうのですね(静かに笑う)
ふーこ.icon
いやでもそれ、人間のせいじゃんw
ちゃんとメモっとけよ案件では?
りか.icon
理想論。
現実は、期限・コスト・人員の制約がある。
その中で「とりあえず動くもの」が優先される。
結果、後から苦しむ。
ふーこ.icon
うわ、現場あるあるすぎて草…
未来の自分に丸投げするやつなw
あや.icon
未来の自分に託す……少しロマンも感じますけれど、
実際には、その「未来の誰か」が困ってしまうのですね……
りか.icon
その通り。
だから保守(メンテナンス)が必要になる。
要点を整理する。
ソフトウェアは放置すると
→ 外部環境の変化で動かなくなる
→ 内部の理解が失われる
→ セキュリティ的に危険になる
つまり、「何もしない=安全」ではない。
ふーこ.icon
まとめ助かる🙏
じゃあさ、結局どうすればいいの?
りか.icon
定期的なメンテナンス。
依存ライブラリの更新
テストの維持
コードの整理(リファクタリング)
これを継続するしかない。
あや.icon
まるで庭のお手入れのようですわね。
放っておけば雑草が生い茂り、やがて足を踏み入れることも難しくなる……
けれど、少しずつ手をかければ、美しい姿を保てる(微笑)
ふーこ.icon
あやの例え、わかりやすすぎて神✨
つまりソフトウェアって「作って終わり」じゃなくて、
「育てるもの」って感じか!
りか.icon
正解。
ソフトウェアはプロダクトではなく、プロセス。
静止しているようで、常に変化の中にある。
あや.icon
見えぬものにも、時間は等しく流れているのですね……
だからこそ、丁寧に向き合い続けることが大切なのでしょう(微笑)
ふーこ.icon
よし、今日の結論いくよ〜!
👉 ソフトウェアは放置すると
「周りの変化」と「人間の忘却」で詰む!
だからちゃんと面倒見ろってことねw
りか.icon
補足。
それを怠ると、いずれ「完全に触れない遺物」になる。
あや.icon
……それは少し、寂しい結末ですわね(静かに笑う)
ふーこ.icon
エモ締めきたw
じゃ、今日はここまで〜!おつ〜!