同じようなプロンプトを何度も書いていた

agentic codingを始めてしばらく経った頃、あることに気づいた。

同じような指示をAIに毎回ゼロから書いている

「Reactコンポーネントを作って」「スタイルはTailwindで」「Propsの型はこうで」「エラーハンドリングはこうやって」。毎回同じ前置きを書いているのに、その指示を再利用できる形にしていなかった。AIに作業を任せているつもりが、AIへの指示出しがルーティンワークになっていた。

ある日、同じようなReactコンポーネントを3つ連続で実装した。3回とも、エラーハンドリングのパターン、Propsの定義の仕方、テストの書き方を一から指示している自分がいて、さすがに馬鹿らしくなった。AIに任せる前に、自分が同じことを繰り返している。これでは本末転倒だ。

コードはDRY原則(Don't Repeat Yourself)で書くのに、AIへの指示は毎回コピペの繰り返し。この矛盾に気づいてから、方針を変えた。

どう変えたか

あわせて読みたい
AIにコードを書かせる時代でも、エンジニアに一番必要なことは変わってなかった マインドセット · 1分で読める
あわせて読みたい
agentic codingに「責任」だけは渡せない マインドセット · 1分で読める

最初に試したのは単純なテンプレート化だった。「Reactコンポーネント作成用プロンプト.txt」を作って、毎回コピペする。悪くはないが、プロジェクトが変わるたびにアップデートが必要で、すぐに陳腐化した。

次に試したのが、プロンプトそのものを関数化する発想だ。一部のパラメータ(プロジェクト名、使っているライブラリのバージョン、ディレクトリ構成)だけを差し替えれば、あとは同じ手順で動くような形にする。

具体的には、一度AIと一緒に作業した結果のなかで「これは別の場面でも使える」と思った指示を、マークダウンファイルとして保存していった。ファイル名は prompt-create-react-component.md のような感じで、中身は「あなたはこのプロジェクトの規約に従ってコードを書くアシスタントです。以下のルールに従ってください」で始まる定型文と、固有の指示を組み合わせたものだ。

毎回ゼロから書くテキストファイルにコピペ抽象化して再利用可能にする
初回の手間
2回目以降同じ手間やや減るほぼゼロ
プロジェクト変更時の対応毎回考え直すファイルを編集パラメータだけ差し替え
他人と共有できるかできないしづらいしやすい
指示の品質ばらつくやや安定安定する

実際の抽象化ステップ

しばらく続けて、やり方が固まってきた。

  1. 一度AIに作業をやらせて、そのときのプロンプトと結果をセットで保存する
  2. 保存したプロンプトから「このプロジェクト固有の部分」と「汎用的な部分」を分ける
  3. 固有部分(ディレクトリ名、設定ファイルのパスなど)を変数化して、差し替え可能にする
  4. 残った汎用手順をマークダウンファイルにまとめ、「次はこのファイルを見てやって」で済ませる
抽象化のコツは「具体的すぎず、抽象的すぎず」だ。「ESLintの設定をして」ではなく「このプロジェクトのlintルールに従ってコードを修正して」と書く。後者なら別のプロジェクトでも使える。

抽象化の副作用

この習慣を続けて気づいたのは、時間の節約以上に「自分がどんな作業をしているか把握できる」ことだった。

毎回アドホックにプロンプトを書いていると、自分がAIに何を依頼しているのか、全体像が見えなくなる。でも一度それをファイルとして整理すると、「自分はこの1ヶ月でこういう作業を繰り返していたのか」 と俯瞰できる。これが意外と重要だった。繰り返しが可視化されると、「これはもう自動化できるんじゃないか」「この部分はそもそも人間がやらなくていいんじゃないか」という問いが生まれる。

抽象化にハマりすぎないこと。一度しかやらない作業まで抽象化しようとすると、それ自体が目的化する。あくまで「3回以上繰り返すとわかっていること」だけを対象にする。境界線を引くのもまた、人間の判断だ。

結局、人間がやるべきこと

一回抽象化に30分かかっても、二回目以降が5分で終わるなら三回使えばペイする。この考え方はプログラミングの基本だが、AIとの付き合い方にもそのまま当てはまる。

このブログ自体も同じ考え方で作っている(このブログはagentic codingで作った)。コードベースの構成も、AIへの指示の抽象化と再利用の延長線上にある。

全部をAIに任せっぱなしにすると、いつの間にか自分で考えなくなってしまう。最近Xで「認知的降伏」と呼ばれるようになった状態だ。AIに作業を任せるのはいい。でも「何を繰り返しているか」「何を抽象化すべきか」の判断だけは、人間が持ち続ける必要がある。

今日から試すこと

今日agentic codingで書いたプロンプトを一つ選んで、「このプロジェクト固有の部分」と「汎用的な部分」に分けてみてほしい。

汎用的な部分をマークダウンファイルに保存して、次回はそれを見ながらAIに指示する。その一度の手間が、明日以降の自分を救う。