AIが書いたコードをそのまま入れて壊したときの、戻し方と予防

動いていたものが動かなくなり、どこを変えたか分からなくなりました。復旧の手順と、同じことを繰り返さないための備えです。

この記事の結論

  1. 壊れたときに困るのは、どこを変えたか覚えていないこと
  2. AIは前の状態を保持していないので「戻して」が効かない
  3. 控えの取り方を変えてから、復旧が数分で済むようになった
  • 壊れたときに困るのは、どこを変えたか覚えていないこと
  • AIは前の状態を保持していないので「戻して」が効かない
  • 控えの取り方を変えてから、復旧が数分で済むようになった

提案されたコードを貼り付けたら画面が真っ白になり、戻そうとして戻せなくなった。そのときの対処と、以後やっている予防を書く。

「元に戻して」は効かない

まず試したのが、そのまま「さっきの状態に戻して」と頼むことだった。返ってきたのは、それらしいコードだが元とは違うものだった。

やり取りの履歴は覚えていても、ファイルの中身は見ていない。こちらが貼った範囲しか知らないので、貼っていない部分は復元できない。これを理解していないと、何度も頼んで時間を失う。

さらに悪化させた行動

焦って「直して」を繰り返したことで、変更箇所が増えて元の形がさらに遠のいた。壊れた直後に続けて触るのが一番まずい。手を止めるのが最初の対処になる。

実際にやった復旧

幸い、作業前のファイルをデスクトップにコピーしていた。日付も付けずに「○○_コピー」という名前だったが、これで戻せた。

戻した後、変更を1つずつ入れ直して、どこで壊れるかを特定した。結果は、追加したコードそのものではなく、既存の処理と名前が衝突していたことが原因だった。単体では正しいコードでも、文脈に置くと壊れる例だ。

以後やっている控えの取り方

方法を3段階に分けた。手間と安心のつり合いで選んでいる。

  • 小さい変更 — 編集前にファイルを複製し、末尾に日付と時刻を付ける
  • まとまった変更 — フォルダごと複製してから着手する
  • 長く使うもの — Gitで記録する。コマンドは3つだけ覚えた

3つ目まで行くと手間に見えるが、覚えたのは保存・履歴確認・巻き戻しの3つで足りた。それ以上は必要になってから調べている。

ファイル名に入れると後で助かる情報

  • 日付と時刻 — どれが新しいか一目で分かる
  • 何をする直前か — 「ヘッダー変更前」など。1週間後の自分には必要

貼り付ける前に確認するようになったこと

提案されたコードを見る時間を少し取るようにした。読めなくても分かる点がある。

  • 既存の名前と同じものが出てこないか — 関数名や変数名の重複は壊れる原因の筆頭
  • ファイル全体の置き換えになっていないか — 一部だけ直すはずが全文返ってくることがある
  • 削除が含まれていないか — 追加だけのつもりが既存行を消している場合がある

2つ目は特に注意している。全文を貼り替えると、以前の修正がまとめて消える。差分で受け取れるよう「変更行だけ示して」と頼むようにした。

段階的に入れる

一度に全部貼らず、区切って入れて都度動作を見る。遠回りに見えるが、壊れた位置がすぐ分かるので結果的に速い。

区切りの単位は「1つの機能」にしている。関数1つ、画面の1要素、といった粒度だ。この単位なら、壊れても戻す範囲が小さい。

確認を挟む場所

  • 貼った直後に画面を開く
  • エラー表示を確認する(開発者ツール)
  • 問題なければ、その時点で控えを取り直す

3つ目を入れてから、戻る先が常に近くなった。壊れても直前まで戻れる。

AIに頼むときの言い方も変えた

「このコードを直して」ではなく、条件を添えるようにした。

  • 「既存の関数名は変えないで」
  • 「変更する行だけ、前後3行と一緒に示して」
  • 「削除が必要なら、削除する行を明示して」

3つ目が効いた。消える変更は気づきにくいので、言葉にしてもらうだけで事故が減る。

壊したことで分かった、頼み方の限界

一連のやり取りで、こちらが期待していたことと実際にできることの差がはっきりした。

  • ファイルの全体像は見えていない — 貼った範囲しか知らない。全体を前提にした判断は期待できない
  • 実行結果も見えていない — 「動きましたか」と聞かれるのは、確認手段がないから
  • 環境ごとの違いは分からない — サーバーの設定やPHPの版は、こちらが伝えないと考慮されない

3つ目でもう一度詰まったことがある。提案されたコードが新しい書き方で、動いている環境では使えなかった。版を先に伝えるだけで避けられる種類の失敗だった。

最初に渡すようにした情報

  • PHPやNode.jsの版
  • 使っている仕組みの名前と版(WordPressなど)
  • 触っていいファイルと、触ってほしくないファイル

毎回書くのは面倒なので、定型文として控えておき、作業の最初に貼っている。

まとめ

  • AIは前の状態を保持していない。復元はこちらの控えに頼る
  • 壊れた直後に触り続けると、原因が特定しづらくなる
  • 単体で正しいコードでも、既存と名前が衝突すると壊れる
  • 機能単位で区切って入れ、都度控えを取り直す
  • 削除を明示させると、気づかない事故が減る

AUTHOR

北海道のWEB屋

北海道を拠点に、Web業界14年・サポート実績1,000件以上。WordPressの復旧、サーバー移転、独自ドメインとメールの設定、PHP・JavaScriptの修正まで対応します。相談と見積もりは無料です。

関連記事

RELATED