コース一覧
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分

リファクタを任せる

リファクタは外から見て何も変わらない

リファクタは、外から見た動きを変えずに、中の書き方だけを整える作業です。整理した結果として動きが変わったなら、それはリファクタではなく仕様変更です。

この性質があるので、AI に頼むときの合言葉は決まっています。

プレーンテキスト

動作は変えないでください。戻り値が変わってはいけません。

書かないと、AI は「ついでに改善」をします。丸め方を変えたり、エラー時の戻り値を None から空の辞書に変えたり。良かれと思っての変更ですが、呼び出し側は壊れます。

重複はバグの温床

同じ計算が2か所に書かれていると、片方だけ直して片方を忘れる事故が起きます。

Python

def total_expense(records): return sum(r["amount"] for r in records if r["type"] == "expense") def total_income(records): return sum(r["amount"] for r in records if r["type"] == "expence")

2つ目の綴りが違います。コピーして直し忘れた、典型的な形です。重複を1つにまとめれば、こういう食い違いはそもそも起きません。重複を消す本当の理由は、行数ではなく、直し漏れを無くすことです。

整理の前にテストを用意する

動作が変わっていないことを、どうやって確かめるでしょうか。目で読んで確かめるのは無理です。整理の前後で同じテストが通ることを見るのがいちばん確実です。

このコースの演習では、テストはあらかじめ用意されています。実務では、リファクタの前にテストを書かせてから整理を頼むという順序になります。テストが無い状態で大きく整理させるのは、命綱なしで屋根に登るのと同じです。

頼み方の例

プレーンテキスト

kakeibo.py の集計処理に重複があります。共通部分を1つの関数にまとめてください。 ただし各関数の戻り値は変えないでください。

「まとめて」だけだと、AI は関数の数まで減らそうとして、公開している名前を消すことがあります。残してほしい関数名は明示してください。

今回の演習

支出と収入の合計を出す2つの関数があります。中身がほぼ同じで、しかも片方が綴りを間違えていて正しく動きません。重複を整理しつつ、両方が正しく動くようにさせてください。

完成条件

  • 触ってよいのは kakeibo.py だけです
  • total_expense と total_income の名前は残してください
  • summary 関数の戻り値で採点します

依頼

kakeibo.py の total_expense と total_income は中身がほぼ同じ重複です。共通部分をまとめつつ、片方の綴り間違いを直してください。関数名と戻り値は変えないでください。

  • ・触ってよいのは kakeibo.py だけです
  • ・total_expense と total_income の名前は残してください
  • ・summary 関数の戻り値で採点します

いまのコード

kakeibo.py

def total_expense(records):
    """支出の合計を返す"""
    total = 0
    for r in records:
        if r["type"] == "expense":
            total += r["amount"]
    return total


def total_income(records):
    """収入の合計を返す"""
    total = 0
    for r in records:
        if r["type"] == "incom":
            total += r["amount"]
    return total


def summary(records):
    """支出合計と収入合計と差額を返す"""
    expense = total_expense(records)
    income = total_income(records)
    return {"expense": expense, "income": income, "balance": income - expense}

AI への指示

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

ヒント