AIはソフトウェアエンジニアリングを変えるのか? by マーティン・ファウラー

AIは技術的変化か?

ファウラーは、AIは自身のキャリアで「最大の技術的変化」だと述べている。歴史的に比較できるのは、アセンブリ言語から高級言語への移行程度だという。

ただし、重要なのは抽象度の上昇そのものではない。

LLMの本質的な特徴は非決定性にある

  • 同じ入力でも異なる出力が得られる
  • 自信を持って誤った結果を返すことがある
  • 実行結果を完全には再現できない

この性質は、従来のソフトウェア工学が前提としてきた決定論的モデルとは大きく異なる。

したがって、テスト、レビュー、セキュリティ、品質保証の考え方を再検討する必要がある。

Vibe Codingに対する見解

ファウラーは「Vibe Coding」を、生成されたコードをほぼ読まず、理解もしない使い方として定義している。

適している用途

  • 探索的な試行
  • 使い捨てのプロトタイプ
  • 短期間のみ使うツール

問題点

最大の問題は、学習ループが失われる点にある。

  • コードを読まない
  • なぜ動くのかを理解しない
  • 修正や進化ができない

結果として、少しの変更でも再生成に頼ることになり、長期的な保守には向かない。

実際に有効とされているAI活用

対談では、実用性が高いと評価されている使い方も具体的に挙げられている。

  • 高速なプロトタイピング
    • 短期間で複数の案を試し、方向性を探る用途。
  • レガシーコードの理解:
    • コードを解析し構造情報を抽出
    • 依存関係をグラフとして扱う
    • LLMを使って問い合わせる
  • 未知の技術やドメインの学習
    • 新しい言語、フレームワーク、業務分野を理解するための探索用途。

未解決の課題

以下の点はまだ確立した方法がないとされている。

  • 既存コードの安全な変更
  • 大規模リファクタリング
  • チーム開発での使い方
  • コードレビュー負荷の増大

LLMは「非常に生産的だが信用できない同僚」に例えられている。

リファクタリングの位置づけ

AIによってコード生成量が増えるほど、リファクタリングの重要性は増す。

  • 振る舞いを変えない
  • 小さなステップで行う
  • 構造を改善する

という従来の考え方は、AI時代でも有効であり続ける。

アジャイルとの関係

AIが導入されても、アジャイルの基本原則は変わらない。

  • 小さな変更
  • 短いフィードバックループ
  • 人間による確認

量を増やすよりも、サイクルタイムを短くすることが重要だとされている。

若手エンジニアへの助言

若手に対しては次の点が強調されている。

  • AIは使うべきだが信用しすぎない
  • なぜそうなるのかを問い続ける
  • 良いメンターを見つけることが重要

AIは教師ではなく、過去の情報の集約にすぎない。

業界全体の見方

現在のテック業界の停滞やレイオフの主因は、AIそのものではなく金利上昇と投資環境の変化にあるとされている。長期的にはソフトウェア需要は続き、AIは仕事を減らすというより、仕事の進め方を変える存在だと位置づけられている。