コース一覧
Claude Code入門:良い指示とレビュー
自分で試験する

Claude Code入門:良い指示とレビュー

Claude Codeへの指示とレビューの基本を学び、作業内容を確認するコースです。

1
良い指示の出し方
01. 要件の伝え方5分
02. 受け入れ条件6分
03. タスクを分割する6分
04. 計画させてから実行6分
05. CLAUDE.mdを書く6分
06. つくる:指示の型6分
07. 第3章クイズ5分
2
レビューと安全
01. 生成コードを読む6分
02. 自分で試験する6分
03. テストを書かせる6分
04. 危険な操作の見極め6分
05. 修正の往復6分
06. つくる:レビュー一巡7分
07. 第4章クイズ5分

自分で試験する

まん中は必ず通る

生成されたコードを試すとき、多くの人は「ふつうの入力」を入れます。300円と200円を足して500円になった、よし動いた、という確かめ方です。

これはほとんど意味がありません。AI が返すコードは、ふつうの入力ではまず通ります。そこが通ることを確かめても、新しい情報は増えません。

壊れるのはいつも端です。

端を4方向から叩く

端の探し方には型があります。おこづかい帳なら次の4つです。

プレーンテキスト

空     レコードが1件も無いとき
1件   最小の個数のとき
0     金額が0円のとき、月の残高がちょうど0のとき
極端  金額が負のとき、桁がとても大きいとき

「1か月の平均支出を出して」と頼んだコードを考えます。ふつうの月なら正しく出ます。では支出が1件も無い月はどうでしょうか。件数で割る実装なら、ゼロ除算で落ちます。

Python

def average(records):
    return sum(r["amount"] for r in records) / len(records)

空リストを渡した瞬間に ZeroDivisionError です。ふつうの入力では絶対に見つかりません。

境界は「含む・含まない」で割れる

もう1つの典型が、しきい値のまわりです。「1000円以上の支出を高額として抽出して」と頼んだとします。

プレーンテキスト

999円   入らない
1000円  入る? 入らない?
1001円  入る

ちょうど1000円がどちらになるかは、>= と > のどちらで書かれたかで変わります。指示のときに決めていなければ、AI が勝手に決めています。だから試すべきはちょうど1000円です。999と1001は、どちらの実装でも同じ結果になるので、試しても割れません。

境界値は、実装が割れる1点を狙って入れる。これが試験のコツです。

試す順番

手を動かす順序は次のとおりです。

プレーンテキスト

1  仕様で「こうなるはず」を先に紙に書く
2  そのとおりの値を入れて動かす
3  違ったら、コードではなく仕様のほうを先に疑う

3が大事です。自分の期待が間違っていることもあります。先に期待を書いてから動かすと、あとから結果に合わせて期待を作り変えてしまう事故を防げます。

演習

kakeibo.py の average_amount は、1件以上あれば正しく動きます。空リストで落ちます。また、平均の端数の扱いが決まっていません。落ちない形にして、端数の扱いも決めてください。

完成条件

  • 触ってよいのは kakeibo.py だけです
  • 空リストのときは 0 を返します
  • 平均は小数を切り捨てて整数で返します

依頼

kakeibo.py の average_amount を、空リストでも落ちないようにしてください。平均の端数の扱いも指示で決めてください。

  • ・触ってよいのは kakeibo.py だけです
  • ・空リストのときは 0 を返します
  • ・平均は小数を切り捨てて整数で返します

いまのコード

kakeibo.py

def average_amount(amounts):
    """おこづかい帳の金額の平均を出す"""
    return sum(amounts) / len(amounts)

AI への指示

残り 3 回
AI に依頼するにはが必要です

ヒント