コース一覧
Claude Code入門
テストを書かせる

Claude Code入門

AIコーディングエージェント「Claude Code」への指示の出し方、生成コードの読み方とレビュー、テストと安全確認、バグ修正から機能追加までの実践ワークフローを、毎レッスン実際にエージェントと開発しながら学びます。入門で自分が書いたおこづかい帳を、AIと一緒に機能拡張していきます。

1
Claude Codeとは
01. AIエージェントとは5分
02. 起動と最初の対話5分
03. はじめての指示5分
04. 動きのしくみ5分
05. つくる:最初の一巡6分
06. 第1章クイズ5分
2
基本操作
01. コードについて質問する5分
02. 修正を依頼する5分
03. 差分を読む6分
04. 動かして確かめる5分
05. 元に戻す5分
06. つくる:操作の一巡6分
07. 第2章クイズ5分
3
良い指示の出し方
01. 要件の伝え方5分
02. 受け入れ条件6分
03. タスクを分割する6分
04. 計画させてから実行6分
05. CLAUDE.mdを書く6分
06. つくる:指示の型6分
07. 第3章クイズ5分
4
レビューと安全
01. 生成コードを読む6分
02. 自分で試験する6分
03. テストを書かせる6分
04. 危険な操作の見極め6分
05. 修正の往復6分
06. つくる:レビュー一巡7分
07. 第4章クイズ5分
5
実践ワークフロー
01. バグ修正を任せる6分
02. 機能追加を任せる6分
03. リファクタを任せる6分
04. ドキュメントを書かせる6分
05. 知らないコードを解説させる6分
06. つくる:ワークフロー実践7分
07. 第5章クイズ5分
6
総合制作
01. 大型機能を共同実装8分
02. 総レビュー7分
03. 任せる/書くの境界6分
04. 自由拡張8分
05. 完成と次のステップ5分

テストを書かせる

手で試すのは1回しか効かない

前の回で、境界値を自分で叩きました。あれは強力ですが弱点があります。次にコードを変えたとき、もう一度全部やり直さないといけません。

人間は3回目でやらなくなります。だから機械にやらせます。それが自動テストです。

自動テストは、期待する値をコードとして書き残したものです。おこづかい帳の合計なら、次のような形になります。

Python

def test_total(): assert total_amount([{"amount": 300}, {"amount": 200}]) == 500 def test_total_empty(): assert total_amount([]) == 0

一度書けば、以後は実行するだけで全部の確認が終わります。

テストを頼むときに書くこと

「テストを書いて」だけで頼むと、AI はふつうの入力のテストを3つ書いて終わりにしがちです。まん中しか通らないテストは、無いのとあまり変わりません。

頼むときは、どの場合を確かめてほしいのかを列挙します。

プレーンテキスト

悪い total_amount のテストを書いて 良い total_amount のテストを書いてください。 次の場合をそれぞれ確かめてください。 ふつうの2件、空リスト、amount が無いレコードが混ざる場合、 金額が負の場合。

前の回で自分が叩いた境界値が、そのまま列挙する項目になります。手で試した内容をテストに移すと考えてください。

テスト自体も生成物である

ここが落とし穴です。AI が書いたテストが全部通ったとき、意味は2つに割れます。

プレーンテキスト

可能性A コードが正しい 可能性B コードの現在の挙動に合わせてテストが書かれた

B は実際に起こります。実装を読んで、その実装が返す値をそのまま期待値にしたテストです。これは何も検証していません。バグごと固定しているだけです。

見分け方は簡単です。期待値を自分で読んで、仕様と合っているかを確かめます。先ほどの例なら、空リストのとき 0 を期待しているか、それとも None を期待しているか。仕様として自分が決めた値と違うなら、直すのはテストではなくコードです。

落ちるところから始める

テストを信用する一番速い方法は、一度落としてみることです。

プレーンテキスト

1 テストを書かせる 2 実行して全部通ることを見る 3 コードをわざと1行壊す 4 テストが落ちることを確かめる 5 戻す

3で壊しても全部通るなら、そのテストは何も見ていません。この確認は10秒で終わります。

演習

kakeibo.py の count_over は、しきい値以上の支出の件数を数える関数です。いまは境界の扱いが間違っていて、ちょうどしきい値と同じ金額を数えません。境界を含む形に直させてください。しきい値ちょうどをどう扱うかを、必ず指示に書いてください。

完成条件

  • 触ってよいのは kakeibo.py だけです
  • しきい値と同じ金額は数えます
  • count_over 関数の戻り値で採点します

依頼

kakeibo.py の count_over を、しきい値ちょうどの金額も数えるように直してください。境界の扱いを指示に明記してください。

  • ・触ってよいのは kakeibo.py だけです
  • ・しきい値と同じ金額は数えます
  • ・count_over 関数の戻り値で採点します

いまのコード

kakeibo.py

def count_over(amounts, threshold):
    """しきい値をこえる支出の件数を数える"""
    count = 0
    for a in amounts:
        if a > threshold:
            count += 1
    return count

AI への指示

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

ヒント