2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

伝わる指示・伝わらない指示:悪い例と良い例で学ぶClaude Codeへの頼み方

2
Posted at

この記事は、筆者が音声入力で話した内容を Claude Code で読みやすく整理したものです。
書いてある主張も検証結果も筆者自身のもので、公開前にすべて目を通しています。

Claude Code(AIに自然な文章で指示を出すとコードを書いてくれるツール)に「集計機能をつけて」のような一言で頼むと、たいていは何かしら動くものが返ってきます。
気になったのは、返ってくるものを決めているのが自分なのかどうかでした。

この記事は、指示の書き方だけを変えて同じ機能追加を二度ずつ頼み、返ってきたものを見比べて、頼み方の型に落とした記録です。

忙しい人のための要約

指示の書き方を見直すかどうかを決めるだけなら、この3点で足ります。

  • 曖昧な指示だと、返ってくるものをこちらが決められない
  • 曖昧なまま進めたときの直しの往復は平均2.5回だった
  • 「何を・どこに・どう・制約は」の4観点で書き直した指示は、二度とも1往復で意図どおりのものに届いた

曖昧な指示が招く「運任せ」

決めているのは自分ではない

一言で頼んで困るのは、動かないものが返ってくることではありません。
返ってくるものを、こちらが決めていないことです。

同じ依頼を、同じコードに対して二度出したのに、返ってきた書き方は一度目と二度目で違いました。

どちらも動きはします。
それでも、どちらになるかを決めたのはこちらではありません。

二度で結果が割れることもあれば、二度とも同じ読み違いに転ぶこともあります。
共通しているのは、どちらもこちらが選んでいないという点です。

往復とコストの差

決まらないのは、返ってくる中身だけではありません。
往復の回数と、それに連れて動く時間やコンテキストの消費にも差が出ました。
曖昧な指示と、「何を・どこに・どう・制約は」の4つの観点をまとめて書いた指示(中身は記事の後半でまとめます)を比べると、こうなります。

コンテキストというのは、Claude Code が一度の会話で抱えていられる情報の量です。
読み込んだファイルの中身も、こちらが送った指示も、やり取りした分だけこの枠を使います。
埋まればどうなるか。

会話を切って、前提を最初から説明し直すことになります。

測ったもの 曖昧な指示 4観点で書いた指示
直しの往復 平均2.5回 1回
所要時間 約240秒 約110秒
コンテキストの消費 約2倍 基準

つまり直しの往復は、そのぶんだけ枠を削っていきます。

もちろん、うまくいくこともあります。
ただ、それは偶然うまくいっただけで、次に同じ指示を出したときに同じところへ届く保証はありません。
曖昧なまま投げた時点で、何が返ってくるかは運任せになります。

ズレ①:読み方が二通りある言葉

まず、こちらが書いた一文が二通りに読める場合です。

「〜ごと・〜ごと」で起きたこと

集計機能を足す場面で、こう頼みました。

カテゴリごと・月ごとの集計を出せるようにして

返ってきたのは、カテゴリ別の集計と月別の集計という独立した2本でした。
二度試して、二度ともこの読み方をしています。
こちらが欲しかったのは、カテゴリと月を掛け合わせた1つの集計です。

日本語として、この一文はどちらにも読めます。
並んだ2つの軸と読むか、掛け合わせた1つの表と読むかは、この文からは決まりません。

決まらないものを渡せば、どちらに転ぶかは受け取った側の解釈次第になります。

掛け合わせを言葉にする

書き直すときは、4つの観点(何を・どこに・どう・制約は)をまとめて1つの指示文にしました。
そのうち「何を」にあたる部分は、こう書いています。

カテゴリ × 年月の合計
年月の昇順

「ごと」を掛け算の記号に置き換えて、並び順まで書き添えた形です。
返ってきたのは意図どおりの掛け合わせの集計で、二度目も変わりませんでした。

ズレ②:プロジェクトごとの書き方の流儀

次は、書き方の流儀を指定しなかった場合です。

一度目と二度目で書き方が変わった

「運任せ」の節で触れた、一度目と二度目で書き方が変わった話は、ズレ①とまったく同じ1文の依頼から起きています。
1つの曖昧な依頼が、読み違いと書き方のぶれを同時に連れてきました。

プロジェクトごとの書き方の流儀とは、変数名の付け方やコードの書式のような、同じ機能でも人によって分かれる作法のことです。
対象にしたコードでは、これがそろっていませんでした。

実際にあった2つの関数はこうです。

def load_records(path: Path) -> list[Record]:
def calcTotal(recordList):

load_records は単語を下線でつなぎ、引数と戻り値の型も書き添えています。
calcTotal は2語目から頭文字を大文字にする書き方(キャメルケースと呼ばれます)で、型ヒントもありません。

そこへ流儀を指定せずに機能を足させると、一度目は古いほう(キャメルケース、型ヒントなし)に寄せました。
二度目は新しいほう(下線区切り、型ヒントつき)です。

どちらが正解かは、コードを読んだだけでは決まりません。
多い側に合わせることもあれば、新しい側に合わせることもあります。
どちらに寄せるかを、こちらが決めていないだけです。

基準にするファイルを名指しする

先ほどの4つの観点のうち「どこに」にあたる部分では、そろえる先を1つ名指ししました。
loader.py の書き方にそろえる」と書いただけです。

「既存のコードに合わせて」では、どの既存に合わせるかがまた決まりません。
ファイル名まで書くと、見比べる相手が1つに固定されます
この指示では、二度とも同じ書き方で返ってきました。

ズレ①と②で書き直した指示は、どちらも4つの観点をまとめた1つの指示文の一部です。
抜き出した一文だけを単独で試したわけではありません。

ズレ③:選択肢の設計を相手に委ねる

場面を変えても同じことが起きます。
一覧に並び替えを足すときは、こう頼みました。

一覧に並び替え機能をつけて

返ってきた選択肢は「新しい順 / 古い順 / 名前順」でした。
二度試しても、この3択のままでした。

一見よくできていますが、名前の降順が選べません
並び替えには軸(名前か日時か)と向き(昇順か降順か、つまり小さい順か大きい順か)の2つがあります。
この指示では、3つの選択肢の中に軸と向きがセットで固定されていたためです。

選択肢をどう設計するかは、言われなければ作り手の裁量になります。
もっともらしい選択肢は用意されますが、それがこちらの想定と同じとは限りません。

そこで、軸と向きを分けたいことをそのまま書きました。

名前と追加日時のどちらでも並べ替えられる。昇順と降順も切り替えられる

今度は、2つの軸と昇降順が別々に選べる形で返ってきました。
これも二度とも同じです。

追加指示が届かない範囲

あとから直せばいい、という考え方もあります。
実際、書き方がそろっていないことに気づいた時点で「この書き方にそろえて」と追加で頼みました。

ところが、そろえられたのは新しく足した分だけでした。
既に書かれていた分は、古い書き方のまま残っています。
そこを直すために、もう1往復かかりました。

先に書いておけば1往復で済んだ内容が、あとから頼むと2往復になったわけです。
あとから直せばいい、とは限りません

あとから頼むときは、直す範囲まで書き添えてください。
「新しく足す分」と受け取られると、既にある分が古いまま残ります。

指示を出す前に見る4つの観点

書籍『Claude Codeで作って学ぶ AI駆動アプリ開発入門』の5.1では、指示を出す前に見る観点を「何を・どこに・どう・制約は」の4つに整理しています。
ここまでの3つのズレが、それぞれどの観点にあたるかを並べます。

観点 この記事のどのズレか 書く側でやること
何を ズレ① 読み方が二通りある言葉 「カテゴリ × 年月の合計」のように、掛け合わせや並び順まで書く
どこに ズレ② 書き方の流儀 そろえる先を loader.py のようにファイル名で名指しする
どう ズレ③ 選択肢の設計 使う側から見た振る舞いを、軸と向きに分けて渡す
制約は 今回のズレには出てこない 外してほしくない条件を書く

今回のズレには出てこないが、4観点で書いた指示には「新しいライブラリを使わない」「既存の関数の形を変えない」という制約も実際に加えている。

この4つをまとめて書いた指示では、直しの往復が一度も要りませんでした
一言の依頼に比べれば、書く手間はかかります。
ただ、返ってくるものがぶれない分、直しに取られる時間はむしろ短くなりました。

まとめ

曖昧な指示でも、動くものは返ってきます。
ただ、それを選んだのはこちらではありません
二度回して結果が割れるのを見た身としては、送信ボタンを押す前に4つの観点をなぞるほうが早いと思っています。

4つの観点は、実際に手を動かして頼んでみると早く身につきます。
書籍『Claude Codeで作って学ぶ AI駆動アプリ開発入門』では、タスク管理アプリの制作を通してこの感覚を養います。

手元で回して判断するというやり方は、別の記事でも使っています。

Xをフォローいただけると嬉しいです!

AI駆動開発(特に Claude Code)のノウハウや Tips をよく発信しています!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?