AIが書こうとしないコード

私は技術面接の質問として、フォームバリデーション(入力値検証)を使っています。一見シンプルに見えますが、その解き方によって、その人の思考プロセスが明らかになります。

Claude、ChatGPT、Geminiでこの問題をテストしてみました。どれも同じ解決策にたどり着きました。

ほとんどの人は、次の3つのいずれかの方法で解決しようとします。

AIモデルはすべてスキーマによるアプローチを選択しました。それは技術的に理にかなっています。欠落しているキーにも対応でき、拡張性も高い。実行時にデータが変化する場合、スキーマは正しい選択です。

しかし、ほとんどのソフトウェアにとって、より良い方法があります。

あらゆるものに対して単一のパターンを見つけようとするのではなく、コンポジション(合成)を利用するのです。ビジネスコンセプトごとに独自の関数を持たせます。

このアプローチは再帰を使いません。スキーマも使いません。明確に分離された関数を使用します。

メリットは単純です。コードがビジネスを反映するということです。「請求先住所」は独立した概念です。それ独自のロジックを持つに値します。新しいタイプを追加するとき、既存の関数を変更する必要はありません。新しい関数を追加するだけで済みます。これにより、変更の影響範囲を局所的に抑えることができます。

AIがこの道を選ぶことはめったにありません。AIはロジックを中央集約化するパターンを選びます。私たちの教育は、重複を排除し、汎用化することを教えます。AIはその文化から学んでいるのです。

AIが失敗しているわけではありません。単に、私たちが教えたエンジニアリングの直感に従っているだけなのです。

最良の解決策とは、コードの行数が最も少ないものではありません。ビジネスドメインを最も誠実に反映しているものです。

次にソリューションを構築するとき、自分自身にこう問いかけてみてください。

「この変動性はコードにあるのか、それともデータにあるのか?」

その答えが、設計全体を変えることになります。

Source: https://dev.to/iceonfire/the-code-ai-wont-write-1ieb