コース一覧
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周する

この章で扱った4つを、1件のバグ修正でつなげます。実務で回っている順序はいつも同じです。

プレーンテキスト

1 症状を再現手順つきで報告する 2 原因の特定と修正を任せる 3 再現手順をもう一度実行して直ったか見る 4 周辺が壊れていないか境界値で確かめる

3 と 4 を飛ばすと、直ったつもりの修正が本番に出ます。修正を受け取った時点は、まだ半分です。

報告に書くこと

第1回でやった3点セットに、今回は制約を1つ足します。

プレーンテキスト

再現手順 どう呼んだら起きるか (実際の入力を書く) 期待 本当はどうなってほしいか 実際 いまどうなっているか 制約 壊してはいけない既存の動き

制約が要るのは、バグ修正が既存の動作を巻き添えにしやすいからです。「合計がおかしい」を直させたら、並び順まで変わっていた、はよく起きます。

巻き添えを防ぐ書き方

プレーンテキスト

この入力ではいまも正しく動いているので、こちらの結果は変えないでください。

正しく動いている入力を1つ添えるのが効きます。AI にとっては、それが壊してはいけない境界の実物になります。抽象的に「既存動作を維持」と書くより確実です。

今回のバグ

月末締めのおこづかい帳です。month_summary は、指定した月のレコードを集めて件数と合計と平均を返します。

平均の計算に問題があります。1件も無い月を指定すると、0で割ってエラーになります。件数と合計は正しく出ているので、そこは変えてはいけません。

報告の4点セットを書いて、AI に直させてください。直ったら、レコードがある月でも今まで通りの結果が返ることを必ず確かめてください。それがこの章の締めくくりです。

終わったあとに残るもの

この型は Claude Code に限りません。人間の同僚に頼むときも、自分でチケットを書くときも同じです。再現手順が書けた時点で、バグの半分は解決しているとよく言われます。書けないなら、まだ症状を掴めていないということです。

完成条件

  • 触ってよいのは kakeibo.py だけです
  • 件数と合計の計算は正しいので変えないでください
  • month_summary 関数の戻り値で採点します

依頼

kakeibo.py の month_summary は、レコードが1件も無い月を指定するとゼロ除算で落ちます。再現手順と期待と実際と制約を書いて直させてください。

  • ・触ってよいのは kakeibo.py だけです
  • ・件数と合計の計算は正しいので変えないでください
  • ・month_summary 関数の戻り値で採点します

いまのコード

kakeibo.py

def month_summary(records, month):
    """指定した月の件数と合計と平均を返す"""
    target = [r for r in records if r["date"][:7] == month]
    total = sum(r["amount"] for r in target)
    average = total // len(target)
    return {"count": len(target), "total": total, "average": average}

AI への指示

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

ヒント