AIを直すのをやめた日—「ルール」の正体が分かった話

Dev.to / 2026/5/29

💬 オピニオンIdeas & Deep AnalysisTools & Practical Usage

要点

  • 著者は当初、AIへの修正(レビュー、構造や命名、ロジックの修正など)を通常のワークフローの一部だと思っていましたが、後にそれが根本的なプロセスの不具合の“兆候”だと気づきました。
  • 毎回の修正は実質的にAIへ「ルール」を伝えている一方で、それが記録されていなかったため、後続のセッションや別の開発者・別機能へは引き継がれない状態でした。
  • よく直していた点を、セッション開始前に与える明確な制約(責務の単一化、状態の適切な配置、命名規約の遵守、一般的なプレースホルダーを避ける等)として書き出したことで、出力はすぐに改善しました。
  • 出力の生成前にルールで期待される形が決まるため、修正に費やす時間が大きく減り、著者はフォーマット修正ではなくプロダクト判断や実装すべき本質に集中できるようになりました。
  • 要点は、繰り返される修正は偶然のAIの失敗ではなく、“まだ言語化されていない標準”であり、最初から明文化して渡すべきだということです。

長い間、AIの修正はプロセスの一部にすぎませんでした。

生成する。レビューする。構造を直す。命名を直す。ロジックを正しい場所に移す。もう一度聞く。もう少し近いものを得る。それも直す。

それが普通だと思っていました。AIと仕事をするって、ただそういうものだと思っていました。プロンプトを出して、誘導して、修正して、次に進む。

修正がワークフローの機能ではないと気づくのに、しばらく時間がかかりました。それは、壊れたものの症状でした。

実際に修正が私に伝えていたこと

私がAIを修正するたびに、私はあるルールを伝えていました。

AIが保持できる形ではありません。次のセッションや次の開発者や次の機能に適用できる形でもありません。特定の出力を、その特定の瞬間に、その場限りで直すための、ワンタイムの修正だけでした。

コンポーネントが大きすぎました。分割しました。状態が間違った場所にありました。移しました。命名が慣例に従っていませんでした。改名しました。

それぞれの修正には数分かかりました。セッション全体では合計で1時間。1週間では、ビルドする代わりに半分くらいの時間を誘導(ステア)に使っている気がしました。

しかも、何ひとつ引き継がれません。次のセッションは、前回とまったく同じところから始まります。同じ修正。同じパターン。同じ1時間の誘導。

すべてを変えた転機

私は、修正を書き留め始めました。

フィードバックとしてではありません。コメントとしてでもありません。ルールとしてです。私が毎回繰り返して直していたものは、セッションを始める前に、AIに与える制約になっていきました。

コンポーネントは1つの責任を持ちます。やりすぎるなら、続ける前に分割してください。状態はフックの中に置きます。UIにインラインで書かないでください。名前はドメインを反映します。汎用的なプレースホルダーは使いません。

これらのルールで最初に行ったセッションは、すぐに違って感じられました。出力が、私の期待していたものにより近い形で出てきました。完璧ではありません。でも、これまで毎セッション行っていた修正が、もう現れませんでした。

状態を動かす必要はありませんでした。すでに正しい場所にありました。命名を直す必要もありませんでした。命名は最初から慣例に従っていました。コンポーネントを分割する必要もありませんでした。すでに適切な大きさでした。


何か月も前から私が行っていた修正は、ランダムではありませんでした。一定していました。そして、一定した修正とは「まだ書き下ろされていないルール」にすぎません。

起きなくなったこと

修正にかかる1時間が、じわじわ減っていったわけではありません。ほとんど消えました。

AIが賢くなったからではありません。ルールが、AIが何かを生成する前に、出力がどう見えるべきかを定義していたからです。ルールがすでに扱っていた以上、もう直すべきものは残っていませんでした。

セッションの内容も変わりました。AIを標準へ導くことに時間を使う代わりに、実際の問題に取り組む時間を使うようになりました。機能。ロジック。プロダクトの判断。つまり、本当に私の判断が必要だったことです。

AIは標準を担当しました。私はそれ以外を担当しました。

それを可能にしたルールは次のようなものでした:

私の最も一般的な修正を置き換えたルール:
1. 各コンポーネントはプレゼンテーション用かコンテナ用かのどちらか。両方を兼ねないこと。両方をやり始めたら、そこで止めて抽出する。
2. すべての状態ロジックは、その機能内の専用フックに置く。小さな状態でも例外なし。
3. 名前はドメインの言葉で「何をするか」を説明する。文脈なしの data、items、flag、handler は使わない。

3つのルール。1度書けば、すべてのセッションに適用される。そのルールがカバーしていた修正は、二度と戻ってきませんでした。

その日私が理解したこと

ルールはAIへの制約ではありません。1度だけ行った修正であって、二度とやる必要がないようにするものです。

私のシステムにある各ルールは、すべて「修正」から始まりました。AIがやったことのうち、私が直したもの。次のセッションでもまた直したもの。やがて直すのに疲れて、その代わりに書き留めたもの。

システムは修正から成長しました。そして、システムが成長するにつれて修正は小さくなりました。追加したルールの数だけ、手で直す必要が1つ減ったからです。

それがルールの実際の役割です。修正を上流へ移します。出力の後ろから前へ。リアクティブから予防へ。あなたの時間を、システムの仕事へ。

プロンプトは重要じゃない。ルールが重要だ。

あなたが毎セッション後にAIを修正する時間を費やしているなら、それはAIの限界を体験しているのではありません。

未だ書き下ろされていないルールを体験しているのです。

書き留めてください。セッションを開始する前にAIへ渡してください。そして、修正が1つずつ消えていくのを見てください。

すでにルールにすべき修正のうち、どれを繰り返しているか見つけたいですか?

私は、それを正確に見つけるのに役立つ無料の24項目チェックリストを作りました。AIがあなたと同じ判断をし続け、それをあなたが直し続けている構造的なギャップです。

React AI Clean Code Checklist を入手 — 無料

Avery Code React AI Engineering System

返却形式: {"translated": "翻訳されたHTML"}