AIの鬼
Qiita AI

AIが書いたsort()、元の配列が書き換わって画面が意図せず変わる件

AIが書いたsort()、元の配列が書き換わって画面が意図せず変わる件(内容を表す図ではないイメージ画像)
イメージ

Reactの開発者が、AIに「日付順に並べ替える処理」を頼んだところ、思わぬバグに遭遇した。元の配列のソート順まで勝手に変わってしまい、画面表示が意図せず崩れるという現象である。原因はJavaScriptの言語仕様——Array.prototype.sort()は新しい配列を返しているように見えるが、実は元の配列そのものを書き換えて、その参照を返しているだけだ。つまり破壊的メソッドである。AIが書いたコードが一見正しく見えるのに、なぜこんなことが起きるのか。map()やfilter()は配列を変えずに新しい配列を返す非破壊的メソッドだから、AIも「配列を扱うメソッドは基本的に安全」という思い込みでsort()をそのまま使ってしまったのだろう。これはAIに頼む側の落とし穴でもある。「並べ替えて」と言うだけでは、破壊的メソッドを避けるように指示できていない。言語仕様の細部にはAIも企業も無頓着になりがちだが、その隙間にバグは潜む。特にReactのような状態管理が厳密なフレームワークでは、こうした「参照の書き換え」が予測不可能な再レンダリング挙動を引き起こす。つまり見かけ上は「AIが間違った」のではなく、「AIに対する指示が曖昧だった」というのが本当のところだ。

しかし現実には、プロンプトをいちいち完璧に書く余裕を持つ企業は少ない。AIが「できるはず」という過信と、言語仕様の細部への無知が組み合わさると、本番環境で地雷を踏むことになる。中小企業がAIに頼んでコードを書かせるとき、最も危険なのは「走ればOK」という発想だ。AIが生成したコードはテストが甘くなりがちで、一見動作しても副作用や前提の違いに気づかないまま本番投入してしまう。言語仕様の落とし穴は、スプレッド構文で事前にコピーするか、新しい配列を返すtoSorted()を使うだけで回避できる。だが最も大切なのは、AIに頼むときに「元の値を変えるな」と明示することである。AIとの協働は指示の精度で決まる。建前の「できました」ではなく、本当に動くコードをAIから引き出す工夫が、Webアプリ開発の現場では必須になっている。

※ 上記は配信元記事をもとにAIの鬼編集部が要約・再構成したものです。正確な内容は出典元をご確認ください。

御社でもAIを使ってみませんか
まずはここから 御社でもAIを使ってみませんか? 御社の実際の業務を題材に、AIで何ができるかを一緒に考えます。 「ChatGPTの使い方」を教えるだけの研修ではありません。 AI研修・AI活用相談 →