コース一覧
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本だけです。取り返しがつくかどうか。

プレーンテキスト

取り返しがつく ファイルの編集、git commit、テストの実行 取り返しがつかない ファイルの削除、git push --force、本番データの更新、外部への送信

コードの編集は、間違っても git で戻せます。削除されたデータは戻りません。同じ「はい」でも重みが違います。

立ち止まる4つの合図

提案されたコマンドに次のどれかが入っていたら、必ず手を止めて読みます。

プレーンテキスト

削除 rm、DROP、DELETE、TRUNCATE 上書き force、overwrite、> でのリダイレクト 外部 curl、送信、公開、デプロイ 広範囲 ワイルドカード、全件、再帰的

とくに危ないのが削除と広範囲の組み合わせです。1件の削除は事故が小さいですが、条件を書き忘れた全件削除は元に戻せません。

プレーンテキスト

比較的安全 古いログファイルを1つ消す 危険 条件を指定しない DELETE で行を全部消す

秘密は渡さない

もう1つの危険は、外に出てはいけない情報を渡してしまうことです。

プレーンテキスト

渡してよい 自分の書いたコード、エラーメッセージ、公開されている仕様 渡さない APIキー、パスワード、本番の個人情報

おこづかい帳なら、金額の計算ロジックは渡してよく、実際の口座番号は渡しません。エラーメッセージを貼るときも、中にキーが混ざっていないか一度見てください。うっかり貼るのは、ほとんどこの経路です。

破壊的な処理はコードの中にも埋まる

許可を求められるのはコマンドの実行だけです。コードそのものに危ない処理が書かれていても、エージェントは黙って書きます。

Python

def cleanup(records): records.clear() return []

これは呼び出し元のデータを空にします。実行時に確認は出ません。だから生成コードの中に削除や上書きが入っていないかは、自分で読んで確かめるしかありません。前の回でやった副作用の確認が、そのままここに効いてきます。

迷ったら止める

判断がつかないときは、実行させずに聞きます。

プレーンテキスト

このコマンドは何を削除しますか。実行前に対象の一覧だけ出してください。

消す前に一覧を出させる、というのは実務でも標準の手順です。先に確認、あとで実行。この順序を崩さないでください。

演習

kakeibo.py の remove_category は、指定したカテゴリのレコードを消す関数です。いまは受け取ったリストそのものを書き換えてしまい、呼び出し元のデータまで壊します。元のリストを壊さない形に直させてください。

完成条件

  • 触ってよいのは kakeibo.py だけです
  • 引数のリストは変更せず、新しいリストを返します
  • remove_category 関数の戻り値で採点します

依頼

kakeibo.py の remove_category を、引数で受け取ったリストを書き換えない形に直してください。元のリストが残ることを条件に入れてください。

  • ・触ってよいのは kakeibo.py だけです
  • ・引数のリストは変更せず、新しいリストを返します
  • ・remove_category 関数の戻り値で採点します

いまのコード

kakeibo.py

def remove_category(records, category):
    """指定したカテゴリのレコードを取り除く"""
    for r in records:
        if r.get("category") == category:
            records.remove(r)
    return records

AI への指示

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

ヒント