リンクをコピーしました!

ソフトウェアの大停滞:アプリが毎年壊れていくように感じられる理由

ソフトウェアに不具合が増えているように感じられるのは、実際に増えているからです。新しいデータは、AIコーディングアシスタント、急速なリリースサイクル、そしてQA(品質保証)の終焉が、いかにして隠れた技術的負債の危機を生み出しているかを明らかにしています。

🌐
機械翻訳

この記事は英語の原文から自動翻訳されています。 英語の原文を読む

崩壊するコードブロックと不具合を起こすインターフェースのデジタル的な抽象表現。

フライトを確認するために携帯電話のロックを解除しましたが、アプリが白い画面でハングアップします。 Web サイトで [今すぐ購入] をクリックすると、ボタンが灰色になりますが、何も起こりません。スマート電球をペアリングしようとすると、ファームウェアのアップデートが要求されますが、3 回失敗します。

テクノロジーがより脆弱になっていると感じるのは、想像力ではありません。

過去 10 年間、テクノロジー業界は「迅速に行動し、物事を打破する」という信条に基づいて運営されてきました。独立系アナリストは現在、壊れたもののコストを集計している。ハードウェアの速度と信頼性は飛躍的に向上していますが、最新のフラッグシップ携帯電話は物理学の奇跡です。その一方で、その上で実行されているソフトウェアは、ダクトテープと祈りによってますます結びついているように感じられます。

これは決して存在しなかった「黄金時代」への単なるノスタルジーではありません。これは測定可能な統計的傾向です。大手コード分析会社からの新しいデータは、コーディングプロセスの自動化が進むにつれて、システムの構造的完全性が低下しているという不穏なパターンを明らかにしました。市場は砂の基礎の上にデジタル超高層ビルを建設しており、亀裂が目立ち始めています。

速度のエントロピー

根本的な問題は、ソフトウェア配信の経済性の変化です。 20 年前、ソフトウェアの出荷は物理的な行為でした。 「ゴールド マスター」を CD-ROM または DVD にプレスし、箱に入れて店舗までトラックで運びました。そのディスクに重大なバグがあった場合、リコール費用は天文学的なものになります。品質保証 (QA) は贅沢ではありませんでした。それはビジネスにとって不可欠なものでした。

現在、配送の摩擦はゼロです。 Over-The-Air (OTA) アップデートと継続的インテグレーション/継続的デプロイメント (CI/CD) パイプラインを使用すると、開発者は数分で数百万のユーザーにコードをプッシュできます。これにより、リスクがベンダーからユーザーに実質的に移転されました。

最初の 100 万人のユーザーをベータ テスターとして扱うことができるのに、なぜ専用の QA チームにお金を払う必要があるのでしょうか?

DevOps 界隈では「シフトレフト」とよく呼ばれるこの哲学 (開発者がテストをより早く行うべきであることを暗示しています) は、逆説的に、実際には誰も「ユーザー レベル」でテストをまったく行っていない状況を引き起こしました。開発者は特定の機能をテストします (単体テスト) が、数千のマイクロサービス間の複雑な相互作用である「統合」レイヤーは成り行きに任せられます。

しかし、過去 3 年間にわたって、この火に新たな促進剤が注がれてきました。それは人工知能です。

AI コード品質のパラドックス

GitHub Copilot、Cursor、Google 独自のツールなどの AI コーディング アシスタントの約束は、生産性革命でした。導入は今やほぼ普遍的になりました。Stack Overflow の 2025 年の開発者調査では、84% 以上の開発者が AI ツールを使用している、または使用する予定であることがわかりました。しかし、これらの同じツールに対する信頼はわずか 29% に低下し、1 年間で 11 ポイント減少しました。

このギャップが存在するのは、コードを「書く」ことがボトルネックになったことがないからです。 読書メンテナンスでした。

GitClear の 2026 年の「保守性ギャップ」レポートは、2023 年から 2026 年までに分析された 6 億 2,300 万件のコード変更に基づいて構築されており、その減少について具体的な数字を示しています。重複コードブロック(変更された100万行ごとに測定)は、2023年の40.3から2026年現在までの73.0に増加し、81%増加し、過去最高レベルとなった。コピー/ペーストされたコードは、2022 年の変更の 9.4% から 2026 年上半期には 15.7% に増加しました。一方、「移動された」コード (リファクタリングの特徴、システムの一貫性を維持するハウスキーピング) の割合は、2022 年には変更された行の 21% に留まり、2023 年には 13% に低下し、2026 年にはわずか 3.8% まで自然落下しました。遠い。現在、開発者はコードをリファクタリングするよりもコードを複製する可能性が約 5 倍高くなります。

「ショットガンコーディング」効果

AI モデルは確率エンジンです。彼らは次に可能性の高いトークンを予測します。開発者が AI に「この日付を解析する関数を書いてください」と依頼すると、AI はまったく新しいオーダーメイドの関数を生成します。同社は、完全に優れた日付パーサーが 3 つ上のフォルダーにある会社の共有ライブラリにすでに存在していることを知りません。

その結果、コードベースには、同じロジックのわずかに異なる実装が何千も重複して埋め込まれます。これは、ソフトウェア エンジニアリングの聖なる掟の 1 つである「DRY」(Don’t Reply Yourself) 原則に違反します。日付解析でバグが見つかった場合は、1 か所で修正しますが、AI が生成した他の 50 のバージョンは壊れたままです。

業界は、対応する機能の増加がないまま、コードベースのサイズが大幅に増加するのを目の当たりにしています。以前は 10,000 行のコードがあった単純なアプリが、現在では 50,000 行になっています。これは、機能が増えたからではなく、AI が生成した定型文によって肥大化したためです。

正しさの幻想

2 番目の問題は、合成コードの「脆弱さ」です。生成システムは構文 (コードの文法) には優れていますが、セマンティクス (コードの意味) には苦労します。彼らは完璧に見えるコードを生成します。コンパイルして実行できますが、エッジケースやまれなエラー状態の処理に失敗することがよくあります。

支払い処理システムを作成する人間の開発者は、「カードに請求された直後、注文が記録される前にネットワークが切断されたらどうなるでしょうか?」と考えます。彼らは、そのトランザクション状態を処理するコードを作成します。 AI は、明示的に指示されない限り、デフォルトで「ハッピー パス」を選択することがよくあります。すべてが機能することを前提としています。

これは、研究しようとすると消えるか変化するバグである「ハイゼンバグ」につながります。多くの場合、競合状態や、負荷がかかっている場合にのみ現れる未処理の状態が原因で発生します。

生産性の向上自体が部分的には幻想であるという証拠さえあります。研究グループ METR による 2025 年のランダム化研究では、独自のコードベースで作業している経験豊富な開発者は AI のおかげで作業が速くなったと「信じて」いましたが、測定結果ではそれらのタスクでは約 19% 遅くなったことがわかりました。ツールはテキストを迅速に生成するため、高速に感じられます。デバッグ請求書は後で届きます。

マイクロサービスの死のスパイラル

AI ブームと並行して、アーキテクチャのマイクロサービスへの移行が進んでいます。最新のアプリは、1 つの大きなアプリケーション (「モノリス」) ではなく、ネットワーク経由で相互に通信する数百の小さな独立したサービスで構成されています。

紙の上では、これは素晴らしいことです。これにより、チームが独立して作業できるようになります。実際には、すべての関数呼び出しが、失敗する可能性のあるネットワーク リクエストに変換されます。

モノリシック アプリでは、関数 A が関数 B を呼び出します。関数 A は同じメモリ空間にあるため、関数 B は 100% 動作します。マイクロサービス アプリでは、サービス A が JSON パケットをサービス B に送信します。

  • ネットワークが遅い可能性があります。
  • サービス B が再起動されている可能性があります。
  • JSON形式が若干変更されている可能性があります。

これらの相互作用の複雑さは、線形ではなく指数関数的に増加します。サービスが 10 個ある場合、可能な接続ペアは 45 個あります。 100 個のサービスがある場合、4,950 個のサービスがあります。最新のエンタープライズ アプリの多くには数千ものアプリがあります。

エンジニアは、人間一人の認識では把握できないシステムを構築してきました。もう全体がどのように機能するのかを知る人は誰もいません。何かが壊れたとき、デバッグは論理的な推論プロセスではありません。それは分散した丸太を使った考古学的発掘です。

ユーザーエクスペリエンスの退化

これはユーザーにとってどのように表れますか?

  1. 糸車: アプリはすべてのインタラクションでリアルタイムのデータ取得に依存するようになるため、UI はネットワークの安定性に依存するようになります。
  2. 「問題が発生しました」という一般的なエラー: 分散システムではエラー処理が複雑であるため、アプリでは多くの場合、何も通知しない一般的な「キャッチオール」エラー メッセージがデフォルトで表示されます。
  3. 機能の腐敗: 3 層の深さの依存関係が更新され、互換性を誰もチェックしなかったため、以前は動作していた機能が突然停止するか、動作が不安定になります。

エコシステムは「確率的ソフトウェア」の時代に入りつつあります。それは おそらく 機能します。ほとんどの場合。

解決策: 機能としての信頼性

振り子は戻り始めています。 B2B の世界では、企業は「ファイブ ナイン」(稼働時間 99.999%)が、お金を払う価値のある競争上の優位性であることに気づき始めています。

市場では、この複雑さを制御することを唯一の任務とする専門化されたグループである「プラットフォーム エンジニアリング」チームの出現が見られます。彼らは標準化を強制する内部開発者プラットフォームを構築しており、基本的に AI アシスタントに新しいライブラリを幻覚させるのではなく、承認されたライブラリを使用するよう強制しています。

さらに、新世代の「Agentic QA」ツールも台頭しています。 AI が問題であれば、それが解決策になる可能性もあります。新しい自律テスト エージェントは、人間のユーザーのようにアプリを操作し、ボタンをクリックし、フォームに入力し、年中無休でバグを報告できます。過去の脆弱な自動テストとは異なり、これらのエージェントは画面を「見て」、たとえコードが機能するはずであるとしてもボタンが壊れていることを識別できます。

評決

業界は 15 年間、安定性よりも速度を優先してきたため、ソフトウェアはバグが多く感じられます。ハイテク企業はすべての開発者にフェラーリ エンジン (AI) を提供しましたが、ブレーキ (QA) は取り除きました。開発チームは現在、ガードレールに衝突している。

次に優れたテクノロジー企業は、最も多くの機能を提供する企業ではなくなるでしょう。彼らは、そのソフトウェアが単純に、静かに * 動作する * ものになるでしょう。デジタル混沌の世界では、信頼性は究極の贅沢です。

それまでは、そのページを更新し続けることをお勧めします。 2回目からはうまくいくかもしれません。おそらく。

出典

Advertisement

🦋 Bluesky での議論

Bluesky で議論する

投稿を検索中...