XAPPSXAPPS
← Blog
·2分で読めます

AIに「丸投げ」しないための、仕様の書き方

#AI#個人開発#考えたこと

AIと一緒に開発していると、はっきり感じることがあります。うまくいくかどうかは、最初に「何を作りたいか」をどれだけ言葉にできるかで決まる、ということです。この記事では、自分が実際に使っている仕様の書き方を、テンプレートと具体例で紹介します。

ふわっとした依頼は、ふわっとした結果になる

「いい感じにして」と頼むと、たいてい、いい感じの“それっぽいもの”が返ってきます。悪くはないけれど、自分が本当に欲しかったものとは少しずれている。そんなことがよくありました。

原因はシンプルで、こちらの頭の中にある「欲しいもの」が、言葉になっていないからです。AIは超能力者ではないので、言葉にしていない前提は当然くみ取れません。

自分が使っている仕様テンプレート

スムーズに進むときは、だいたい次の型に沿って先に書き出しています。新機能ひとつにつき、5〜10行で十分です。

## 目的
この機能は何のためにあるのか(一文で)

## 入力 / 出力
- 受け取るもの:
- 返すもの:

## やること
- 箇条書きで、満たすべき条件

## やらないこと
- 今回は対象外にすること

## 具体例
- たとえばこういう入力なら、こういう結果になる

特に効くのが「やらないこと」と「具体例」の2つです。やらないことを決めると話が広がりすぎず、具体例を1つ添えると、認識のズレが一気に減ります。

具体例:検索機能を頼むとき

たとえば記事の検索機能なら、こう書きます。

## 目的
ブログ記事をキーワードで絞り込めるようにする

## 入力 / 出力
- 受け取る:検索キーワード(文字列)
- 返す:タイトルか本文にキーワードを含む記事の一覧

## やること
- 大文字小文字は区別しない
- 該当0件のときは「見つかりません」と出す

## やらないこと
- あいまい検索・タグ検索(今回はしない)

## 具体例
「supabase」で検索 → タイトルに Supabase を含む記事がヒットする

ここまで書いておくと、出てくるコードのブレがほとんどなくなります。「あいまい検索は今回いらない」と先に言ってあるので、余計な作り込みもされません。

仕様を書くのは、自分の整理でもある

面白いのは、仕様を言葉にしていくと、自分自身の考えも整理されていくことです。「あれ、ここはどうしたいんだっけ?」と、作る前に気づける。手戻りの多くは、実装ミスではなく「決めていなかったこと」から生まれます。それを着手前にあぶり出せるのが、この一手間の最大の効果です。

AIに伝えるための仕様は、結局のところ、自分が何を作りたいのかをはっきりさせる作業でもある。そう考えると、この一手間が惜しくなくなりました。Claude Code を使った具体的な進め方は「Claude Code を使うと、個人開発はどう変わるか」にも書いています。