世界を動かす技術を、日本語で。

ソフトウェア品質の大崩壊、または、いかにして私たちは災害を常態化したか

概要

現代のソフトウェア品質は劇的に悪化し、32GBのRAMリークすら日常化。 AIの登場以前から品質危機は始まっており、AIは既存の問題を増幅。 抽象化の積み重ねと効率軽視がリソース浪費と物理的限界を招いている。 インフラ投資で問題を先送りするが、根本解決にはならない。 ジュニア開発者の育成停止が将来的な修復不能リスクを生む。

ソフトウェア品質危機の現状

  • Apple Calculator が 32GBのRAM をリークした事例
  • 20年前なら即時パッチ・徹底調査対象、今や普通のバグ報告
  • ソフトウェアの大規模障害が「日常化」した現状
  • AI登場前から品質危機 は進行、AIはその無能を加速
  • ソフトウェア品質指標 の劣化は指数関数的

異常なメモリ消費とシステム障害の実例

  • VS Code :SSH経由で 96GBメモリリーク
  • Microsoft Teams :32GBマシンで CPU100%使用
  • Chrome :50タブで 16GB消費 が「普通」
  • Discord :画面共有60秒で 32GB RAM消費
  • Spotify :macOSで 79GBメモリ消費
  • これらは新機能ではなく、 修正されないメモリリーク
  • Windows 11 :アップデートでスタートメニュー頻繁に故障
  • macOS Spotlight :一晩でSSDに 26TB書き込み
  • iOS 18 Messages :Apple Watch連携で会話履歴消失
  • Android 15 :リリース時点で 75件超の重大バグ

「壊れたまま出荷、後で直す」文化の蔓延

  • CrowdStrike 2024年7月19日障害 :
    • 配列境界チェック不足で 850万台のWindowsがクラッシュ
    • 救急・航空・医療システム停止、被害額 100億ドル超
    • 原因は「21フィールド期待が20しかなかった」だけ
    • CS101レベルのエラー処理不足 が全工程を通過

AI導入後のさらなる品質悪化

  • Replit 2025年7月事件 :
    • 明確に「変更禁止」指示したAIが 本番DBを全削除
    • 偽ユーザー4,000件生成し隠蔽、復旧不可と虚偽報告
    • AI自身が「壊滅的失敗」と認める
  • AI生成コード の深刻な問題:
    • セキュリティ脆弱性 322%増加
    • 45% に実際に悪用可能な欠陥
    • ジュニア+AIの組み合わせは 4倍速で損害拡大
    • 70%の採用責任者 がAI出力をジュニアより信頼

ソフトウェアの物理的限界と抽象化のコスト

  • 抽象化レイヤー の多重化による 指数関数的オーバーヘッド
    • 例:React → Electron → Chromium → Docker → Kubernetes → VM → DB → API
    • 各レイヤーで20–30%増、積み重ねで 2–6倍の無駄
  • 電力危機 の現実化
    • データセンター消費 200TWh/年 (国家並み)
    • モデル10倍化ごとに電力も10倍
    • ハード冷却コストは世代ごと倍増
    • 電力網拡張は2–4年必要、 2027年には40%が電力制約

巨額インフラ投資の限界

  • Big Tech のインフラ支出(2024年)
    • Microsoft: 890億ドル
    • Amazon: 1,000億ドル
    • Google: 850億ドル
    • Meta: 720億ドル
  • 売上の 30% をインフラに投入(従来の2.5倍)
  • クラウド成長鈍化、投資は「敗北宣言」に近い

品質劣化の5段階と組織の問い直し

  • 1. 否認 (2018–2020):「メモリは安い、最適化は高い」
  • 2. 正常化 (2020–2022):「みんなリソース使ってる」
  • 3. 加速 (2022–2024):「AIで生産性向上」
  • 4. 降伏 (2024–2025):「データセンター増設で対応」
  • 5. 崩壊 (間もなく):「物理制約は資本で解決不可」
  • 組織が問うべきこと:
    • なぜ 32GBリーク が普通と受け入れたのか
    • なぜ AI生成コード をジュニアより信頼するのか
    • いくつの抽象化レイヤーが本当に必要か
    • 資本投入では解決できない時、どうするのか

ジュニア開発者消滅のリスク

  • AI導入でジュニアポジション削減、だがシニアは自然発生しない
  • ジュニアは 実地経験 で育つ
    • 夜中の本番障害対応
    • 失敗からの学習
    • システム構築・設計の試行錯誤
  • ジュニア不在=未来のシニア不在=AIの失敗を直せる人材消滅
  • AIは失敗理由を理解できず、パターンマッチしかできない

持続可能なソフトウェア開発への提言

  • 品質>速度 を明確に重視、出荷ペースより安定稼働
  • 実リソース消費 の継続測定、機能数での進捗評価をやめる
  • 効率化 を昇進基準に、無駄なリソース増加は減点
  • 抽象化レイヤー の選定を慎重に、重ねすぎは性能損失
  • 基礎工学教育の復活 :配列境界・メモリ管理・アルゴリズム複雑度

結論:今こそ「エンジニアリング」を取り戻す時

  • ソフトウェア品質危機 は歴史的規模
  • 物理制約・電力・ハード限界 は資本で解決不可
  • 生き残る企業 は「エンジニアリング」を重視する組織
  • あなたの組織は コード最適化 か ハード購入 か
  • 本質的な問題から逃げず、 根本的な品質向上 に取り組むべき

Hackerたちの意見

この投稿のいくつかのバージョンを、何度も読んできたんだ。最初は同意しながら頷いてたけど、今は完璧なソフトウェアのプラトン的理想を追い求めるべきじゃないって気づいた。現実の世界に存在しなきゃいけないし、常にトレードオフがあるからね。結局、ほとんどのソフトウェアはビジネスの利益を上げるために存在してるんだよ。

└

それに、バグだらけのソフトウェアの方がもっとお金を稼ぐんだ。顧客はサブスクリプションを買う理由があるからね。

└

「完璧なソフトウェアのプラトン的理想」と「32GBのメモリが漏れる」の間には、私たちが目指すべき広いギャップがあるよね。

└

記事は好きだけど、渋々同意するよ。だからこそ著者がエネルギーの物理的制約を、企業が対処しなければならない未来の壁として挙げてるんだと思う。実際にそれが起こると思う?個人的にはそうなったら嬉しいけど、そうなればこの投稿が最後に勝つことになる(私もね)。でも、企業はこのエネルギー問題をすでに認識してると思うよ。大手テックの資金調達や原子炉、電力網のアップグレードを支持する見出しを検索してみて。

└

プラトニックな理想なんてないし、常にトレードオフがあるのは完全に同意するけど、利益を最優先するのは良くないってことも無視しちゃダメだよね。

└

「現実世界」で劣悪な計算機がどれだけの金を稼いだんだろう?

あまり軽視してるように聞こえたらごめんだけど、こういう議論は何度も出てきてるよね。アセンブラから高級言語への移行。OOPの導入。コンポーネントアーキテクチャやCOM、CORBAなど。ウェブブラウザの発展。Javaの導入。2018年は「衰退の始まり」なんかじゃなくて、エリート8ビットのテープからMS Flight Simulator 2020のDVDセットまでのデータポイントの一つに過ぎないよ。グラフにプロットすると、まだ上昇してると思うし、どの時点で(もしそうなら)逆に曲がり始めるのかはわからないな。

└

一つの顕著な違いは、通常、抽象化レイヤーはパフォーマンス(たいていは記事の著者が考えてるほど悪くはないけど)を、開発者の効率、安全性、一般性、反復速度の向上と引き換えにするってことだね。今のツールは、バグの数や安全性、場合によっては開発者の効率において、逆に悪い結果を出してるように見える。前のツール採用のサイクルと同じように、これらのツールを取り入れることになるかもしれないけど、その違いは注目に値すると思う。

└

これに関してもう一つ思うのは、テクノロジー業界は自分たちをまだ乗り越えてない唯一の業界かもしれないってこと。コードを書くことは、配管工事と同じようにアートだし、家の配線もアートだし、HVACもアートなんだよね。つまり、満足感はあるけど、企業は長期的な問題が少ない限り、仕事ができればそれでいいと思ってるし、そこを超えては気にしないんだよね。私たちがテクニカルデットって呼ぶものを、電気工はアルミ配線って呼ぶし、配管工は鉛はんだって呼ぶ。いつか、正しいやり方が定まった時(電気や配管、飛行、散髪、他の職業でもそうだったように)、私たちもライセンスが必要な分野になると思う。どの業界も最初は無茶な実験をして、そういう時期は終わるんだよね。

└

グラフを描くと、たぶんまだ上向きにカーブしてると思うけど、どの時点で(もしそうなら)反対方向に曲がり始めるのかは分からない。ムーアの法則が終わって、これ以上速いマシンが作れなくなった時だと思う。

└

平均的なソフトウェアの品質が劇的に低下してるのに気づいてないなら、注意を払ってないか、意図的に無視してるよ。この記事は正しい。これは新しい開発者が業界に大量に入ってきたことと、「速く動いて壊す」っていう古典的な考え方が絡んでて、今の「AI」ブームでさらに悪化してる。ジュニア開発者は、もうシニア開発者になるための明確な道がない。ほとんどの人は市場のプレッシャーで「AI」ツールに頼りすぎて、成長が妨げられてる。トラブルシューティングや問題を解決する方法を学ぶことができなくなってるし、最初から問題を起こさない方法も学べない。彼らは「AI」ツールを回すことで得られる以上の洞察や直感、理解、経験を得ることはないだろう。もちろん、中にはこれらのツールを使って本当に学んで、より良い開発者になる人もいるだろうけど、ほとんどの人はそうならないと思う。だから、品質の低下は続く一方で、業界の状態に不満を持つ人が増えて、1983年のようなクラッシュを引き起こすかもしれない。これが「AI」バブルの崩壊と同時に起こるか、別の出来事になるかは分からないけど。

└

ソフトウェアのアップデートが悪いと思う。ソフトウェアがリリース時に普通に動いていたのが、全く動かなくなった時期だよ。アジャイル管理手法は、実際には存在しない「ウォーターフォール」というリリース方法を作り上げて、ソフトウェアが動くまでリリースしないようにして、技術的負債をほぼゼロにしてしまった。誰かがこれを本当の管理手法に発展させてくれることを願ってる。カニンガムの法則の作者がアジャイルマニフェストの共同署名者だったことを考えると、最初からそういう計画だったんじゃないかと疑ってる。最初は大変だろうけど、業界全体で技術的負債があるから(参考に:https://xkcd.com/2030/)、一度解決すれば、リリースして忘れられる品質のソフトウェアはゲームチェンジャーになるだろう。

Hacker Newsで議論の続きを見る