リファクタリングの頼み方:範囲指定と段階実行

AIにリファクタリングを頼むと、想定していなかった箇所まで一気に書き換えられてしまうことがあります。事故を防ぐコツは「範囲を絞る」「段階的に進める」「振る舞いを変えない」の3原則を指示に含めることです。実例のプロンプトとレビューの確認ポイントをまとめました。

01

リファクタリングでAIが暴走しやすい理由

リファクタリングとは、外から見た振る舞いを変えずに内部構造を整理することを指します。この定義はリファクタリングという言葉を広めたMartin Fowler氏の解説サイトにまとまっています。AIは指示があいまいだと「ついでにきれいにしよう」と判断し、命名・ファイル分割・依存関係まで広範囲に手を入れがちです。これは技術的負債を一度に解消しようとする動きとも言えますが、差分が大きくなるほどレビューが困難になり、事故のリスクも上がります。

02

安全に頼むための3原則

原則1:対象範囲を明示する

「このファイルの、この関数だけを対象にしてください」のように、触ってよい範囲と触ってはいけない範囲を先に伝えます。

原則2:段階的に実行させる

「まず1ステップ目だけ実行して、差分を見せてください。次のステップはその後に指示します」と区切ると、途中で軌道修正しやすくなります。

原則3:振る舞いを変えないことを明記する

「出力結果やAPIの挙動は変えないでください。変わる場合は先に理由を教えてください」と伝えておくと、意図しない仕様変更を防げます。テストがある場合は「全てのテストが通ることを都度確認してから次に進んでください」も有効です。テストの用意の仕方はAIとテスト駆動開発の記事を参考にしてください。

03

差分レビューでの確認ポイント

AIから差分が返ってきたら、次の観点で確認します。

  • 依頼した範囲外のファイルが変更されていないか
  • 関数名・変数名の変更が呼び出し元まで正しく反映されているか
  • コミットを機能単位・範囲単位で分けられているか(差分が追いやすいか)

コードレビューの一般的な観点整理としては、Googleが公開しているエンジニアリング向けレビューガイドも参考になります。観点を指定してAIにレビューさせる依頼文の型はレビュー依頼文例集の記事にまとめています。差分を機能単位で管理する基本はバージョン管理の考え方とも重なります。

+

よくある質問

リファクタリングとバグ修正・機能追加の指示を同時に頼んでもいいですか?

避けたほうが安全です。振る舞いを変えない整理と、振る舞いを変える修正が同じ差分に混ざると、問題が起きたときにどちらが原因か切り分けにくくなります。依頼と差分は分けましょう。

テストがないコードでもリファクタリングを頼めますか?

頼めますが、まず現状の挙動を確認できる最低限のテストを書かせてから着手するほうが安全です。テストの書かせ方は先にテストを書かせるTDDの記事を参考にしてください。

AIに頼むと過剰に書き換えられてしまいます。防ぐ方法は?

「このファイルの、この関数だけを対象にしてください」のように対象範囲を明示し、「命名や設計思想が気に入らなくても、今回のスコープ外なら変更しないでください」と明記すると抑えやすくなります。

+

関連記事

+

順を追って学びたい方へ

この記事の内容は全12週のシラバスの中でも扱っています(無料で読めます。成果や収益をお約束するものではありません)。開講の先行案内はこちらから登録できます。