10月28日、Matias Heikkilä氏が「AI can code, but it can't build software」と題したブログ記事を公開し、話題を呼んでいる。この記事では、生成AIがコードを書くことはできても、ソフトウェアを構築することはできない理由について詳しく紹介されている。以下に、その内容を紹介する。
AIがコードを書けても「ソフトウェア」は作れない理由
筆者は近ごろ、「自分の考えたアプリを本番運用できる形に仕上げてほしい」という依頼をよく受けるようになったという。依頼主の多くは、法務担当者や営業職など、ビジネスの専門知識はあるが技術的スキルを持たない人々である。彼らはChatGPTなどの生成AIを活用し、プロトタイプ(デモ版)までは作れるようになったが、そこから先に進めなくなっている。
この現象には、重要な示唆がある。すなわち、AIが「コードを書く」ことと、「ソフトウェアを構築する」ことはまったく異なる行為であるという点だ。
「コーディングは簡単、ソフトウェアエンジニアリングは難しい」
記事では古くからの格言「コーディングは簡単、ソフトウェアエンジニアリングは難しい」を引用している。GPT-5のような大規模言語モデル(LLM)は、明確に定義された小さな問題を高い精度で解くことができる。つまり、「コードを書く」部分の自動化はすでに進んでいる。
しかし、ほとんどのエンジニアが日々取り組んでいるのは、その先にある「ソフトウェアを構築する」工程である。実際にプロダクション環境で動くアプリケーションを作るには、テスト、デプロイ、スケーラビリティ、エラーハンドリング、チーム開発など、コード単体では扱えない複雑な問題を解決する必要がある。
筆者はこの境界を次のように定義している。
「デモ版を本番プロダクトへ変えようとする瞬間、コーディングはソフトウェアエンジニアリングになる。」
AIが苦手とする「複雑性の制御」
AIがソフトウェアを構築できない理由について筆者は明確な答えを持たないとしながらも、その要因を「複雑性の管理」にあると指摘する。
現実のソフトウェア開発では、「難しいタスク」を解くというよりも、「簡単な処理を数百個組み合わせて、全体として保守性を保つ」ことが中心になる。1つの機能を実装すること自体は容易でも、それを長期的に拡張・統合可能な形で構築するのは非常に困難だ。
筆者は次のように述べている。
「ある機能をデモで動かすことは簡単だ。しかし、その機能を統合・拡張・長期運用できる形で作るのはまったく別の話だ。」
そのため、AIが生成したコードを確認すると、「本番環境対応にする」という依頼の実態は、ほとんどの場合「最初から作り直すこと」を意味しているという。
現在地を示す「AIの限界」
この記事は、AIが既に一部のプログラミング作業を代替できる段階にある一方で、ソフトウェアエンジニアリングの本質的な部分—複雑性の整理、拡張性、メンテナンス性の設計—にはまだ到達していないことを示している。
AIはコードを生成できても、それを統合的なシステムに仕上げる「構築力」や「設計思想」を持たない。だからこそ、依然として多くの人々が技術的共同創業者(technical cofounder)やCTOを求めているのだ。
詳細はAI can code, but it can't build softwareを参照していただきたい。