Claude Codeのチェックポイント機能(rewind)とは?コードを安全に巻き戻す方法
こんにちは、とまだです。
Claude Codeで作業していて、「あ、さっきの変更なかったことにしたい...」と思ったことはありませんか?
もしくは「思っていた結果と違うから、戻したい...」ということはありませんか?
AIにコードを編集させていると、思わぬ方向に進んでしまうことがあります。
そんなとき便利なのが、Claude Codeのチェックポイント機能です。
この機能を使うことで、過去の状態にすぐ簡単に戻れるようになりました。
今回は、チェックポイント機能の使い方を実際に検証しながら解説します!
ちなみに私は本業ではフリーランスエンジニア、ならびにAI駆動開発の導入支援を行っています。
また、Udemy で AI 駆動開発講座を複数開講しており、いくつかベストセラーもいただいています。
その経験を活かして、初心者の方でもわかりやすいよう、丁寧に解説しています!
忙しい人のために要約
- チェックポイント機能は
Esc
を2回押すか/rewind
で起動 - 「コードと会話」「会話のみ」「コードのみ」の3つの復元方法がある
- 基本的には「コードと会話」を選ぶのがおすすめ
- bashコマンドや手動編集は追跡されないので注意
チェックポイント機能とは?
チェックポイント機能は、Claude Codeが行ったファイル編集を自動的に記録する機能です。
いわば、タイムマシンのようなものです。
すべてのプロンプト入力が自動的にチェックポイントとして保存されます。
そのため、何か問題が起きたときに過去の状態に戻れます。
どんなときに便利?
実際の開発では、次のような場面で役立ちます。
まず、異なる実装方法を試したいとき。
前の状態を保存しておけば、安心して実験できます。
また、AIが予想外の変更をしてしまったとき。
すぐに元の状態に戻せるので、被害を最小限に抑えられます。
さらに、複数のアプローチを比較したいとき。
それぞれの結果を確認してから、最適なものを選べます。
チェックポイント機能の起動方法
チェックポイント機能を使うには、2つの方法があります。
キーボードショートカット
Esc
キーを2回連続で押します。
これが最も素早い方法です。
スラッシュコマンド
プロンプト入力欄で/rewind
と入力します。
こちらも確実に起動できます。
どちらの方法でも、同じチェックポイントメニューが表示されます。
実際に検証してみた
ここからは、実際の検証結果をもとに機能を説明します。
初期状態の確認
まず、hello.txt
というファイルを用意しました。
$ ls
hello.txt
$ cat hello.txt
Hello
内容は単純にHello
という1行だけです。
この状態でClaude Codeを起動します。
claude
起動後、/rewind
コマンドを試してみます。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> /rewind
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
/rewind (checkpoint) Restore the code and/or conversation to a previous point
まだ何も変更していないため、次のように表示されました。
Rewind
Nothing to rewind to yet.
Esc to exit
これは予想通りの動作です。
Esc
で一旦終了します。
最初の編集を試す
次に、Claude Codeに編集を依頼してみます。
「hello.txtにWorldと書いてください」と指示しました。
⏺ Read(hello.txt)
⎿ Read 2 lines
⏺ ファイルには既に "Hello" と書かれています。これを "World" に変更します。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition and 1 removal
1 - Hello
1 + World
⏺ 完了しました。hello.txt の内容を "World" に変更しました。
Claude Codeは正常にファイルを更新しました。
ファイルの内容がHello
からWorld
に変更されました。
チェックポイントから復元する
ここで巻き戻しを試してみます。
> /rewind
今度は表示が変わりました。
Rewind
Restore the code and/or conversation to the point before…
hello.txt に World と書いてください
hello.txt +1 -1
❯ (current)
Enter to continue · Esc to exit
現状はcurrent
になっています。
ここでEnterキーを押しても、現状には変更がありません。
そこで十字キーの上を押して、hello.txt に World と書いてください
に移動してEnterキーを押します。
❯ hello.txt に World と書いてください
hello.txt +1 -1
(current)
>
というマークが出ているので、カーソルが移動したことがわかります。
巻き戻る前に確認画面が出ます。
Confirm you want to restore to the point before you sent this message:
│ hello.txt に World と書いてください
│ (2m ago)
The conversation will be forked.
The code will be restored +1 -1 in hello.txt.
❯ 1. Restore code and conversation
2. Restore conversation
3. Restore code
⚠ Rewinding does not affect files edited manually or via bash.
ここで3つの選択肢が表示されます。
それぞれの動作を詳しく見ていきましょう。
3つの復元方法の違い
チェックポイント機能には、3つの復元方法があります。
それぞれ復元される範囲が異なります。
1. Restore code and conversation(コードと会話の両方を復元)
まず、一番上(デフォルト)のRestore code and conversation
を選択してEnterキーを押します。
すると、Claude Codeのコンソールがすぐ表示されつつ、ファイルの内容が巻き戻されます。
コンソール(プロンプトを入力する場所)の表示は以下の通りです。
> hello.txt に World と書いてください
つまり、「さっきの指示を出す前の状態」に戻ったことになります。
- Claude Codeの認識:まだ何もしていない
- 実際のファイルの状態:まだ何もしていない
そのまま時間だけが戻ったような状態になります。
これが一番わかりやすいです。
この方法の良いところは、先ほど書いていた指示がそのまま残るところです。
何かプロンプトが間違っていた場合、そのプロンプトを修正して再び実行できます。
2. Restore conversation(会話のみを復元)
さて、もう一度hello.txt
に編集をしてみます。
今度は「Hello」の次に「World」ではなく「Tomada」と書いてみます。
> hello.txt に Tomada と書いてください
⏺ Read(hello.txt)
⎿ Read 2 lines
⏺ ファイルを読み取りました。現在の内容は "Hello" です。次に "Tomada" を追加します。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 + Tomada
⏺ 完了しました。hello.txt に "World" を追加しました。ファイルの内容は以下のようになっています:
Hello
Tomada
また、ここで巻き戻しを試してみます。
> /rewind
次は、Restore conversation
を選択してEnterキーを押します。
まず、コンソール上は以下の通りです。
> hello.txt に World と書いてください
コンソール上は変わりません。
しかし、hello.txt
の内容は巻き戻されておらず、Tomada
が追加されたままです。
$ cat hello.txt
Hello
Tomada
そこで、戻った会話(コンソール上の会話)は一旦削除した上で、もう一度/rewind
を試してみます。
> /rewind
すると次のように表示されました。
Rewind
Nothing to rewind to yet.
Esc to exit
非常にややこしいですが、今回二番目のRestore conversation
を選択した場合、会話は巻き戻されましたが、ファイルの変更は巻き戻されませんでした。
- Claude Codeの認識:まだ何もしていない
- 実際のファイルの状態:変更が行われたまま
もちろん、ファイル自体の変更はそのままです。
つまり、ファイルの状態とClaude Codeの認識は異なります。
3. Restore code(コードのみを復元)
さて、3つ目も試してみます。
一旦、hello.txt
にhoge
と書いてみます。
> hello.txt に hoge と追記してください
⏺ hello.txt に "hoge" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + hoge
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "hoge" を追記しました。
また、ここで巻き戻しを試してみます。
> /rewind
今度はRestore code
を選択してEnterキーを押します。
Confirm you want to restore to the point before you sent this message:
│ hello.txt に hoge と追記してください
│ (31s ago)
The conversation will be unchanged.
The code will be restored +0 -1 in hello.txt.
1. Restore code and conversation
2. Restore conversation
❯ 3. Restore code
まずこのとき、Claude Codeのコンソール上は空っぽになります。
言い換えると、会話は戻っていませんし、会話履歴もそのまま残っています。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + hoge
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "hoge" を追記しました。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
しかし、hello.txt
の内容は巻き戻されており、hoge
が削除されました。
$ cat hello.txt
Hello
World
つまり、Claude Codeの認識と実際のファイルの状態は異なります。
- Claude Codeの認識:
hoge
を追記した - 実際のファイルの状態:
hoge
が追記される前の状態
複数のチェックポイントから選ぶ
もう少し実験を続けてみましょう。
2回ぐらい連続でClaude Codeの指示を出してみます。
> fuga を追記して
⏺ hello.txt に "fuga" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + fuga
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "fuga" を追記しました。
> nyanko と追記して
⏺ hello.txt に "nyanko" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 2 additions and 1 removal
1 Hello
2 World
3 - fuga
3 \ No newline at end of file
4 + fuga
5 + nyanko
6 \ No newline at end of file
⏺ 完了しました。hello.txt に "nyanko" を追記しました。
ここで/rewind
を試してみます。
すると、このように連なっていくつかのバージョンが表示されます。
Rewind
Restore the code and/or conversation to the point before…
hello.txt に hoge と追記してください
hello.txt +1 -0
fuga を追記して
hello.txt +1 -0
nyanko と追記して
hello.txt +2 -1
❯ (current)
ここで十字キーの上を押してfuga を追記して
に移動してEnterキーを押します。
❯ fuga を追記して
hello.txt +1 -0
そしてRestore code and conversation
を選択してEnterキーを押します。
この場合、お察しの通りfuga
を追記する前の状態にすべてが戻ります。
⏺ 完了しました。hello.txt に "hoge" を追記しました。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> fuga を追記して
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
以上がチェックポイント機能の動作確認です。
検証からわかったこと
基本的にはRestore code and conversation
を選択することになります。
たとえばRestore conversation
を選択すると、会話は巻き戻されますが、ファイルの変更は巻き戻されません。
また、Restore code
を選択すると、会話は巻き戻されませんが、ファイルの変更は巻き戻されます。
これは、Claude Codeの認識と実際のファイルの状態が異なることを意味します。
特別な理由がない限り、両方を復元する方が安全です。
注意すべき制限事項
チェックポイント機能には、いくつかの制限があります。
これらを理解しておくことが重要です。
bashコマンドの変更は追跡されない
Claude Codeがbashコマンドでファイルを変更した場合、チェックポイントには記録されません。
たとえば、次のようなコマンドです。
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
これらの変更は、巻き戻しの対象外です。
あくまで、ファイル編集ツールを使った変更のみが追跡されます。
手動編集は追跡されない
エディタで直接ファイルを編集した場合も、記録されません。
Claude Code外での変更は、チェックポイントの対象外です。
ただし、Claude Codeが同じファイルを編集すれば、その時点の状態は記録されます。
バージョン管理の代わりにはならない
チェックポイント機能は、セッション内での素早い復元が目的です。
長期的なバージョン管理には、Gitなどを使用すべきです。
チェックポイントは30日後に自動削除されます。
あくまで、Gitを補完する機能として考えましょう。
実践的な使い方
実際の開発では、次のように使うことをおすすめします。
実験的な変更を試すとき
新しいアプローチを試す前に、チェックポイントがあることを確認します。
もし失敗しても、すぐに元に戻せます。
安心して大胆な変更に挑戦できます。
AIの出力が意図と違ったとき
プロンプトの書き方が不十分だと、意図しない変更が起こります。
そんなときは、Restore code and conversation
で巻き戻します。
プロンプトを修正して、再度実行しましょう。
複数の実装を比較したいとき
まず1つ目の実装を試して、チェックポイントで戻ります。
次に2つ目の実装を試して、結果を比較します。
最終的に、より良い方を選択できます。
まとめ
チェックポイント機能は、Claude Codeでの作業を安全にする重要な機能です。
Esc
を2回押すか/rewind
で起動できます。
復元方法は3つありますが、基本的にはRestore code and conversation
を選びましょう。
ただし、bashコマンドや手動編集は追跡されない点に注意が必要です。
この機能を活用すれば、より大胆にAIとの共同作業を進められます。
ぜひ日々の開発で試してみてください。```markdown
emoji: "⏪"
type: "tech"
topics: ["claudecode", "claude", "ai", "開発環境"]
published: false
title: "Claude Codeのチェックポイント機能とは?コードを安全に巻き戻す方法"こんにちは、とまだです。
Claude Codeで作業していて、「あ、さっきの変更なかったことにしたい...」と思ったことはありませんか?
AIにコードを編集させていると、思わぬ方向に進んでしまうことがあります。
そんなとき便利なのが、Claude Codeのチェックポイント機能です。
この機能を使えば、過去の状態に簡単に戻れます。
今回は、チェックポイント機能の使い方を実際に検証しながら解説します。
忙しい人のために要約
- チェックポイント機能は
Esc
を2回押すか/rewind
で起動 - 「コードと会話」「会話のみ」「コードのみ」の3つの復元方法がある
- 基本的には「コードと会話」を選ぶのがおすすめ
- bashコマンドや手動編集は追跡されないので注意
チェックポイント機能とは?
チェックポイント機能は、Claude Codeが行ったファイル編集を自動的に記録する機能です。
いわば、タイムマシンのようなものです。
すべてのプロンプト入力が自動的にチェックポイントとして保存されます。
そのため、何か問題が起きたときに過去の状態に戻れます。
どんなときに便利?
実際の開発では、次のような場面で役立ちます。
まず、異なる実装方法を試したいとき。
前の状態を保存しておけば、安心して実験できます。
また、AIが予想外の変更をしてしまったとき。
すぐに元の状態に戻せるので、被害を最小限に抑えられます。
さらに、複数のアプローチを比較したいとき。
それぞれの結果を確認してから、最適なものを選べます。
チェックポイント機能の起動方法
チェックポイント機能を使うには、2つの方法があります。
キーボードショートカット
Esc
キーを2回連続で押します。
これが最も素早い方法です。
スラッシュコマンド
プロンプト入力欄で/rewind
と入力します。
こちらも確実に起動できます。
どちらの方法でも、同じチェックポイントメニューが表示されます。
実際に検証してみた
ここからは、実際の検証結果をもとに機能を説明します。
初期状態の確認
まず、hello.txt
というファイルを用意しました。
$ ls
hello.txt
$ cat hello.txt
Hello
内容は単純にHello
という1行だけです。
この状態でClaude Codeを起動します。
claude
起動後、/rewind
コマンドを試してみます。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> /rewind
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
/rewind (checkpoint) Restore the code and/or conversation to a previous point
まだ何も変更していないため、次のように表示されました。
Rewind
Nothing to rewind to yet.
Esc to exit
これは予想通りの動作です。
Esc
で一旦終了します。
最初の編集を試す
次に、Claude Codeに編集を依頼してみます。
「hello.txtにWorldと書いてください」と指示しました。
⏺ Read(hello.txt)
⎿ Read 2 lines
⏺ ファイルには既に "Hello" と書かれています。これを "World" に変更します。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition and 1 removal
1 - Hello
1 + World
⏺ 完了しました。hello.txt の内容を "World" に変更しました。
Claude Codeは正常にファイルを更新しました。
ファイルの内容がHello
からWorld
に変更されました。
チェックポイントから復元する
ここで巻き戻しを試してみます。
> /rewind
今度は表示が変わりました。
Rewind
Restore the code and/or conversation to the point before…
hello.txt に World と書いてください
hello.txt +1 -1
❯ (current)
Enter to continue · Esc to exit
現状はcurrent
になっています。
ここでEnterキーを押しても、現状には変更がありません。
そこで十字キーの上を押して、hello.txt に World と書いてください
に移動してEnterキーを押します。
❯ hello.txt に World と書いてください
hello.txt +1 -1
(current)
>
というマークが出ているので、カーソルが移動したことがわかります。
巻き戻る前に確認画面が出ます。
Confirm you want to restore to the point before you sent this message:
│ hello.txt に World と書いてください
│ (2m ago)
The conversation will be forked.
The code will be restored +1 -1 in hello.txt.
❯ 1. Restore code and conversation
2. Restore conversation
3. Restore code
⚠ Rewinding does not affect files edited manually or via bash.
ここで3つの選択肢が表示されます。
それぞれの動作を詳しく見ていきましょう。
3つの復元方法の違い
チェックポイント機能には、3つの復元方法があります。
それぞれ復元される範囲が異なります。
1. Restore code and conversation(コードと会話の両方を復元)
まず、一番上(デフォルト)のRestore code and conversation
を選択してEnterキーを押します。
すると、Claude Codeのコンソールがすぐ表示されつつ、ファイルの内容が巻き戻されます。
コンソール(プロンプトを入力する場所)の表示は以下の通りです。
> hello.txt に World と書いてください
つまり、「さっきの指示を出す前の状態」に戻ったことになります。
- Claude Codeの認識:まだ何もしていない
- 実際のファイルの状態:まだ何もしていない
そのまま時間だけが戻ったような状態になります。
これが一番わかりやすいです。
この方法の良いところは、先ほど書いていた指示がそのまま残るところです。
何かプロンプトが間違っていた場合、そのプロンプトを修正して再び実行できます。
2. Restore conversation(会話のみを復元)
さて、もう一度hello.txt
に編集をしてみます。
今度は「Hello」の次に「World」ではなく「Tomada」と書いてみます。
> hello.txt に Tomada と書いてください
⏺ Read(hello.txt)
⎿ Read 2 lines
⏺ ファイルを読み取りました。現在の内容は "Hello" です。次に "Tomada" を追加します。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 + Tomada
⏺ 完了しました。hello.txt に "World" を追加しました。ファイルの内容は以下のようになっています:
Hello
Tomada
また、ここで巻き戻しを試してみます。
> /rewind
次は、Restore conversation
を選択してEnterキーを押します。
まず、コンソール上は以下の通りです。
> hello.txt に World と書いてください
コンソール上は変わりません。
しかし、hello.txt
の内容は巻き戻されておらず、Tomada
が追加されたままです。
$ cat hello.txt
Hello
Tomada
そこで、戻った会話(コンソール上の会話)は一旦削除した上で、もう一度/rewind
を試してみます。
> /rewind
すると次のように表示されました。
Rewind
Nothing to rewind to yet.
Esc to exit
非常にややこしいですが、今回二番目のRestore conversation
を選択した場合、会話は巻き戻されましたが、ファイルの変更は巻き戻されませんでした。
- Claude Codeの認識:まだ何もしていない
- 実際のファイルの状態:変更が行われたまま
もちろん、ファイル自体の変更はそのままです。
つまり、ファイルの状態とClaude Codeの認識は異なります。
3. Restore code(コードのみを復元)
さて、3つ目も試してみます。
一旦、hello.txt
にhoge
と書いてみます。
> hello.txt に hoge と追記してください
⏺ hello.txt に "hoge" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + hoge
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "hoge" を追記しました。
また、ここで巻き戻しを試してみます。
> /rewind
今度はRestore code
を選択してEnterキーを押します。
Confirm you want to restore to the point before you sent this message:
│ hello.txt に hoge と追記してください
│ (31s ago)
The conversation will be unchanged.
The code will be restored +0 -1 in hello.txt.
1. Restore code and conversation
2. Restore conversation
❯ 3. Restore code
まずこのとき、Claude Codeのコンソール上は空っぽになります。
言い換えると、会話は戻っていませんし、会話履歴もそのまま残っています。
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + hoge
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "hoge" を追記しました。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
>
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
しかし、hello.txt
の内容は巻き戻されており、hoge
が削除されました。
$ cat hello.txt
Hello
World
つまり、Claude Codeの認識と実際のファイルの状態は異なります。
- Claude Codeの認識:
hoge
を追記した - 実際のファイルの状態:
hoge
が追記される前の状態
複数のチェックポイントから選ぶ
もう少し実験を続けてみましょう。
2回ぐらい連続でClaude Codeの指示を出してみます。
> fuga を追記して
⏺ hello.txt に "fuga" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 1 addition
1 Hello
2 World
3 + fuga
4 \ No newline at end of file
⏺ 完了しました。hello.txt に "fuga" を追記しました。
> nyanko と追記して
⏺ hello.txt に "nyanko" を追記します。
⏺ Read(hello.txt)
⎿ Read 3 lines
⏺ Update(hello.txt)
⎿ Updated hello.txt with 2 additions and 1 removal
1 Hello
2 World
3 - fuga
3 \ No newline at end of file
4 + fuga
5 + nyanko
6 \ No newline at end of file
⏺ 完了しました。hello.txt に "nyanko" を追記しました。
ここで/rewind
を試してみます。
すると、このように連なっていくつかのバージョンが表示されます。
Rewind
Restore the code and/or conversation to the point before…
hello.txt に hoge と追記してください
hello.txt +1 -0
fuga を追記して
hello.txt +1 -0
nyanko と追記して
hello.txt +2 -1
❯ (current)
ここで十字キーの上を押してfuga を追記して
に移動してEnterキーを押します。
❯ fuga を追記して
hello.txt +1 -0
そしてRestore code and conversation
を選択してEnterキーを押します。
この場合、お察しの通りfuga
を追記する前の状態にすべてが戻ります。
⏺ 完了しました。hello.txt に "hoge" を追記しました。
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
> fuga を追記して
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
以上がチェックポイント機能の動作確認です。
検証からわかったこと
基本的にはRestore code and conversation
を選択することになります。
たとえばRestore conversation
を選択すると、会話は巻き戻されますが、ファイルの変更は巻き戻されません。
また、Restore code
を選択すると、会話は巻き戻されませんが、ファイルの変更は巻き戻されます。
これは、Claude Codeの認識と実際のファイルの状態が異なることを意味します。
特別な理由がない限り、両方を復元する方が安全です。
注意すべき制限事項
チェックポイント機能には、いくつかの制限があります。
これらを理解しておくことが重要です。
bashコマンドの変更は追跡されない
Claude Codeがbashコマンドでファイルを変更した場合、チェックポイントには記録されません。
たとえば、次のようなコマンドです。
rm file.txt
mv old.txt new.txt
cp source.txt dest.txt
これらの変更は、巻き戻しの対象外です。
あくまで、ファイル編集ツールを使った変更のみが追跡されます。
手動編集は追跡されない
エディタで直接ファイルを編集した場合も、記録されません。
Claude Code外での変更は、チェックポイントの対象外です。
ただし、Claude Codeが同じファイルを編集すれば、その時点の状態は記録されます。
そのため、たとえば Cursor と Claude Code を並行して使う場合、Cursor でファイルを編集しても、チェックポイントには記録されません。
巻き戻し機能を活用するなら、Claude Code に指示を出してファイルを編集しましょう。
バージョン管理の代わりにはならない
これは Anthropic 社が公開しているドキュメントにも記載されています。
チェックポイント機能は、セッション内での素早い復元が目的です。
長期的なバージョン管理には、Gitなどを使用すべきです。
また、チェックポイントは30日後に自動削除されます。
あくまで、Gitを補完する機能として考えましょう。
実践的な使い方の例
ここまでの検証を元に、実践的な使い方の例を紹介します。
実験的な変更を試すとき
新しいアプローチを試す前に、チェックポイントがあることを確認します。
たとえば「この設計で動くかな?」というような実験的な変更を試すときに便利です。
もし失敗しても、すぐに元に戻せますので、大胆な変更に挑戦できますね。
会話も巻き戻せるので、コンテキストが汚れる心配もありません。
AIの出力が意図と違ったとき
プロンプトの書き方が不十分だと、意図しない変更が起こります。
そんなときは、Restore code and conversation
で巻き戻します。
プロンプトを修正して、再度実行しましょう。
最初はとりあえずざっくり指示を出して、うまくいかなければ巻き戻して修正するといった活用ができますね。
複数の実装を比較したいとき
まず1つ目の実装を試して、チェックポイントで戻ります。
次に2つ目の実装を試して、結果を比較します。
最終的に、より良い方を選択できます。
ただし、巻き戻した時点でのファイルの状態は、巻き戻した時点のものになりますので、Restore code and conversation
を選ぶと、1つ目の実装もリセットされてしまいます。
そのため、たとえば Git の Stash を使って変更を退避させておくと良いでしょう。
Restore code and conversation
以外の使いどころは?
検証からは「基本的にはRestore code and conversation
を選ぶべき」という結論になりました。
しかし、他の2つの選択肢にも使いどころはあります。
Restore conversation の使いどころ
会話だけを巻き戻したい場合です。
たとえば、Claude Codeに指示を出した後、ファイルの変更は気に入ったが、会話の流れを変えたい場合に使えます。
具体的には、次のようなシーンです。
Claude Codeが複数のファイルを編集して、そのうち一部のファイルの変更だけを残したい場合。
会話を巻き戻してから、手動で不要な変更を元に戻せば、必要な変更だけを残せます。
ただし、Claude Codeの認識とファイルの状態にズレが生じるため、注意が必要です。
この後に新しい指示を出すと、Claude Codeは過去の変更を認識していないため、予期しない動作をする可能性があります。
Restore code の使いどころ
コードだけを巻き戻したい場合です。
たとえば、Claude Codeの変更は気に入らなかったが、会話履歴は残しておきたい場合に使えます。
具体的には、次のようなシーンです。
Claude Codeが大幅な変更を加えた後、「やっぱり元のコードの方が良かった」と思った場合。
会話履歴を見返しながら、どこで判断を誤ったのかを確認できます。
また、この後に新しいプロンプトで改めて指示を出せば、会話履歴を参考にしながら別のアプローチを試せます。
しかし、こちらもClaude Codeの認識とファイルの状態にズレが生じます。
次の指示を出す際は、「先ほどの変更を巻き戻した」ことを明示的に伝える必要があります。
結論:基本は Restore code and conversation
この2つの選択肢は、特殊な状況でのみ有用です。
ほとんどの場合、Restore code and conversation
を選ぶことで、Claude Codeの認識とファイルの状態を一致させられます。
認識のズレは予期しない動作の原因になるため、特別な理由がない限り、両方を復元する方が安全です。
まとめ
チェックポイント機能は、Claude Codeでの作業を安全にする重要な機能です。
Esc
を2回押すか/rewind
で起動できます。
復元方法は3つありますが、基本的にはRestore code and conversation
を選びましょう。
ただし、bashコマンドや手動編集は追跡されない点に注意が必要です。
この機能を活用すれば、より大胆にAIとの共同作業を進められます。
ぜひ日々の開発で試してみてください!
その他のClaude Code関連記事
他にも Claude Code 関連の記事を書いていますので、よければご覧ください!
また、Youtube でも AI 駆動開発の実践動画を公開しています!
チャンネル登録していただけると、AI駆動開発の実践的な情報を常にキャッチアップいただけます。
Discussion