Archive of posts from yyyy-02-25

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

AIは技術的変化か?

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

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

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

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

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

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

Vibe Codingに対する見解

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

適している用途

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

問題点

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

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

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

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

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

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

未解決の課題

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

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

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

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

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

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

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

アジャイルとの関係

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

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

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

若手エンジニアへの助言

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

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

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

業界全体の見方

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

アジャイルの25周年:Martin FowlerがAIネイティブの世界におけるアジャイルについて語る

この対談では、アジャイル25周年のイベントにおいて、AI時代に「何が変わり、何が変わらないか」が議論されている。

  • 変わらない重要な原則:小さく段階的に進める開発、テストと検証、持続可能なペースといった従来のアジャイルの基本は、AIによってコード生成量が増える今こそ、むしろ重要性が増している。
  • コード品質と可読性:AIがコードを読めるとしても、人やAIが理解できるコードを維持すべき。コード生成自体は多くの組織にとってボトルネックではなく、品質管理と検証が課題。
  • 既存システムへのAI活用:AIやLLMはグリーンフィールド開発だけでなく、巨大で複雑な既存コードベースの理解、ナビゲーション、改善に特に有効。多くの企業顧客にとって現実的な価値がある。
  • 新しい可能性と根本的問い:エージェントによる既存システムの修復・進化、ソースコードやコードレビューは本当に必要か、などの根本的な問いが出ている。ただし、それらが解決してきた問題は、AIで消えるどころか、悪化する可能性もある。
  • レガシー増大への懸念:コード生成が容易になることで、理解不能なコードやレガシーが増えるリスクがある。そこで、システムを「価値とリスク」で層別化し、重要部分に設計品質を集中させ、重要度の低い部分ではある程度のエントロピーを許容する考え方が提案されている。
  • スピードと持続可能性のバランス:速すぎる開発は後の大規模な後始末につながりやすい。AIは散らかったものを片付けることはできるが、最初から持続可能なペースで進めるほうが望ましい、という認識で締めくくられている。
[本] 『はじめて読むPentium 』

流し読みしました。

[本] 『成功者の習慣が身につく「超」心理術』

普通。

[本] 『何をいまさら (角川文庫 な 30-4)』

とある文章を引用したくて本棚を調べたんだけど、持ってなかったみたい。だもんで、本屋に行ってスピードスキャン(目スキャン)して、見つけて、買った。最近、最寄り駅に本屋ができて大変重宝している。すばらしい。

で、だ。必要だったのは「『3年の学習』読者のみんなへの「メッセージ」」。子供の頃に焼きそばと牛乳が当たり前だと思ってたら、大人になったら当たり前じゃ無かったよ。みんなも気をつけよう。みたいなやつ。

誰かが引用してるかと思って「焼きそば 牛乳 ナンシー関」でググったら、自分の日記が一番上に来て閉口したのだ。

なので、正確に引用しとく。

たとえば、土曜日の昼食などにわたしの母はよくやきソバを作ってくれたのですが、その時はかならず白い牛乳をいっしょに飲むのだと決められていました。

(中略)

しかし、ほかの人に聞くと「やきソバと牛乳なんか、全然つきものじゃない」と言われ、ショックをうけたのです。