メインコンテンツへスキップ
中級14分で読める

Claude Codeのrewindとfork:セッション管理を極める

Claude Codeのチェックポイント・rewind・fork・summarize機能を体系的に解説。コンテキスト管理を制して生産性を最大化する方法を学びます。

効率化Claude Coderewindforkコンテキスト管理セッション管理

🎯 この記事で学べること

  • 1
    Claude Codeのチェックポイントシステムの仕組みを理解できます
  • 2
    rewindの5つのオプションを使い分けられるようになります
  • 3
    summarizeでコンテキストを効率的に圧縮できるようになります
  • 4
    forkでセッションを分岐させる方法と活用場面がわかります
  • 5
    rewind・fork・compact・clearを状況に応じて判断できるようになります

読了時間: 約14

あの完璧な実装、なかったことにされました

こんにちは!今日はClaude Codeのセッション管理について学びましょう。

こんな経験はありませんか?

Claude Codeにリファクタリングを任せていたら、途中で方向性がズレてしまった。「ここまでは良かったんだけど、直近3ステップだけ巻き戻したい...」と思っても、どうすればいいか分からない。結局セッションを閉じて最初からやり直し。あの良かった部分の実装も、全部消えてしまいました。

あるいはこんなケースはどうでしょう。設計の方針を2パターン試したいけど、片方を試すともう片方には戻れない。「パラレルワールドがあれば...」と思ったこと、ありますよね?

実は、Claude Codeにはこれらを解決する強力な機能が最初から備わっています。rewind(巻き戻し)とfork(分岐)です。

この記事では、チェックポイントの仕組みからrewindの全オプション、summarize、fork、そしてcompact/clearとの使い分けまで、セッション管理の全体像を体系的に解説します。

チェックポイント:知らないうちに守られている

rewindやforkの話に入る前に、まずその土台となるチェックポイントの仕組みを理解しておきましょう。

自動チェックポイントとは

Claude Codeは、ファイルを変更するたびに自動でチェックポイントを作成しています。これはgitの仕組みを利用したもので、ユーザーが意識しなくても裏側で動いています。

上の図でCPがチェックポイントです。ファイルに変更が加わるたびに、その時点のスナップショットが保存されます。

チェックポイントの仕組み

具体的には、Claude Codeはプロジェクトの.gitディレクトリ内でチェックポイントを管理しています。通常のgitコミット履歴とは別に保存されるので、あなたのコミットログが汚れることはありません。

チェックポイントが記録するのはファイルの変更だけです。以下の点に注意してください:

  • ファイルの追加・変更・削除は記録される
  • bashコマンドの実行結果は記録されない
  • 外部ツール(エディタ等)で行った変更は記録されない
  • 会話の内容そのものは記録されない(コンテキストウィンドウに保持される)

チェックポイントは内部的にgitの仕組みを使っていますが、通常のブランチやコミットとは独立して管理されています。git logには表示されないので安心してください。

チェックポイントの有効期限

チェックポイントは永久保存ではありません。セッション終了後、約30日間保持されます。それ以降はガベージコレクションによって削除される可能性があります。

重要な変更を行った後は、通常のgitコミットで明示的に保存することをおすすめします。チェックポイントはあくまで「一時的なセーフティネット」と考えましょう。

rewind:タイムマシンを使いこなす

チェックポイントの仕組みが分かったところで、いよいよrewindの使い方を見ていきましょう。

rewindの起動方法

rewindを起動する方法は2つあります:

方法操作用途
Escキー2回キーボードでEscを素早く2回押す直前のターンを巻き戻したいとき
/rewindコマンドプロンプトに/rewindと入力特定のターンまで巻き戻したいとき

どちらの方法でも、rewindのインターフェースが表示され、過去の会話ターンの一覧から巻き戻し先を選択できます。

rewindの5つのオプション

巻き戻し先のターンを選択すると、以下の5つのオプションが表示されます:

オプション動作ファイル会話
Restore files and conversationファイルも会話も巻き戻す復元される巻き戻される
Keep files, restore conversationファイルはそのまま、会話だけ巻き戻す変更なし巻き戻される
Restore files, keep conversationファイルだけ巻き戻し、会話は維持復元される維持される
Summarize and continue選択地点までの会話を要約して続行変更なし要約される
Create a fork選択地点から新しいセッションを分岐復元される分岐先にコピー

最もよく使うのは「Restore files and conversation」(完全巻き戻し)です。「あの操作全部なかったことにしたい」という場面で使います。迷ったらまずこれを選びましょう。

オプションの使い分け

それぞれのオプションが活躍する場面を見てみましょう。

Restore files and conversation(完全巻き戻し)

  • Claude Codeが間違った方向に進んでしまったとき
  • 「3ステップ前の状態に戻してやり直したい」というとき

Keep files, restore conversation(ファイル維持・会話巻き戻し)

  • ファイルの変更自体は正しいが、Claudeの理解がズレてしまったとき
  • 「コードは合ってるけど、会話の文脈をリセットしたい」というとき

Restore files, keep conversation(ファイル復元・会話維持)

  • Claudeの理解は正しいが、ファイルへの変更だけ取り消したいとき
  • 「議論の流れはこのままで、コードだけ戻したい」というとき

Summarize and continue(要約して続行)

  • セッションが長くなりすぎてコンテキストが圧迫されてきたとき
  • 次のセクションで詳しく解説します

Create a fork(分岐)

  • 別のアプローチを試したいが、今の状態も残しておきたいとき
  • forkセクションで詳しく解説します

summarize:コンテキストを圧縮する裏ワザ

summarizeとは

rewindのオプションの一つであるsummarizeは、選択した地点までの会話履歴を要約文に圧縮して、そこから会話を続行する機能です。

なぜこれが便利かというと、Claude Codeにはコンテキストウィンドウという制約があるからです。会話が長くなるほどコンテキストが消費され、やがてClaudeの応答精度が落ちたり、古い会話が自動で切り捨てられたりします。

summarizeのイメージ

上の図のように、ターン1〜4の詳細な会話が1つの要約に圧縮されます。これによりコンテキストウィンドウの空きが増え、以降の会話でClaudeがより多くの情報を処理できるようになります。

summarizeの使い方

  1. Escを2回押すか、/rewindを入力してrewind UIを開く
  2. 要約の区切りにしたいターンを選択する
  3. Summarize and continueを選ぶ

選択した地点までの会話が自動で要約され、その要約を起点として会話が続行されます。

/compact との違い

Claude Codeにはsummarizeの他に/compactというコマンドもあります。混同しやすいので整理しておきましょう。

特徴summarize(rewind内)/compact
起動方法rewind UI内で選択/compactコマンド
圧縮範囲選択した地点まで会話全体
選択の自由度どこまで要約するか選べる全体を一括圧縮
ファイルの変更なしなし
使いどころ途中までの議論を圧縮したいときセッション全体がコンテキストを圧迫しているとき

summarizeも/compactも、要約の過程で詳細な情報が失われる可能性があります。重要な仕様や決定事項は、事前にファイルやコメントに書き出しておくと安全です。

fork:パラレルワールドを作る

forkとは

forkは、セッションの特定の時点から新しいセッションを分岐させる機能です。元のセッションはそのまま残り、分岐先で別のアプローチを試すことができます。

ターン3の時点でforkすると、元のセッションとは独立した新しいセッションが作られます。

forkの2つの方法

forkを作成する方法は2つあります。

方法1:rewind UIから

  1. Escを2回押すか、/rewindでrewind UIを開く
  2. 分岐元にしたいターンを選択
  3. Create a forkを選ぶ
  4. 新しいセッションが別ウィンドウで開く

方法2:CLIオプションから

# 既存セッションからforkして新しいセッションを開始
claude --fork-session <session-id>

--fork-sessionにはセッションIDを指定します。セッションIDは/sessionsコマンドで確認できます。

forkで作られた新しいセッションには、分岐元の会話履歴がすべてコピーされます。ファイルも分岐時点の状態に復元されるので、完全に独立した環境で別のアプローチを試せます。

rewindとforkの違い

rewindとforkは似ているようで、根本的に異なります。

特徴rewindfork
元のセッション巻き戻される(上書き)そのまま残る
新しいセッション作られない新しく作られる
使いどころ「やり直したい」「別の道も試したい」
戻れるかrewindした先から再びrewind可能両方のセッションが独立して存在

rewindは「時間を戻す」、forkは「世界線を分ける」 と覚えると分かりやすいでしょう。

コンテキストウィンドウの全体戦略

ここまでrewind、summarize、forkを個別に見てきました。ここでは、Claude Codeのコンテキスト管理ツール全体を俯瞰して、使い分けを整理しましょう。

ツール一覧と使い分け

ツール目的ファイルへの影響会話への影響
rewind過去の状態に戻す復元(オプション次第)巻き戻し
summarize会話の一部を圧縮なし部分的に要約
forkセッションを分岐分岐先で復元分岐先にコピー
/compact会話全体を圧縮なし全体を要約
/clearセッションをリセットなし全削除

判断フローチャート

「今の状況でどのツールを使うべきか?」の判断フローです。

迷ったときのシンプルな指針:「戻したい」→ rewind、「試したい」→ fork、「軽くしたい」→ /compact。この3つを覚えるだけでほとんどの場面をカバーできます。

実践シナリオ:こんなとき、どうする?

具体的な場面でどのツールを使うか、3つのシナリオで見てみましょう。

シナリオ1:リファクタリングが暴走した

状況: Claude Codeにコンポーネントのリファクタリングを依頼したら、関連ファイルを10個以上変更してしまった。最初の3ファイルの変更は良かったが、それ以降は不要だった。

対処法:

  1. Escを2回押してrewind UIを開く
  2. 3ファイル目の変更が完了したターンを選択
  3. Restore files and conversation を選ぶ
  4. 3ファイル目まで変更された状態に戻る
  5. 「残りのファイルは変更しないで」と指示してから続行

ポイント: rewindの完全巻き戻しは「ここまでは良かった」という境界が明確なときに最も効果的です。

シナリオ2:設計を2パターン比較したい

状況: APIの設計で、REST APIとGraphQLのどちらを採用するか迷っている。Claude Codeに両方のプロトタイプを作ってもらって比較したい。

対処法:

  1. まず共通の設計議論をClaude Codeと行う
  2. 「まずREST APIで実装して」と指示
  3. REST APIの実装が完了したら、設計議論が終わったターンでforkを作成
  4. fork先のセッションで「GraphQLで実装して」と指示
  5. 両方のセッションの結果を比較して判断

ポイント: forkは「共通の文脈を維持したまま、実装だけ分岐させたい」ときに真価を発揮します。

シナリオ3:長時間セッションでコンテキストが圧迫

状況: 2時間以上にわたる開発セッションで、Claude Codeの応答が遅くなってきた。初期の要件定義や試行錯誤の会話が大量に残っている。

対処法:

  1. まず現在の作業状態をgitコミットで保存
  2. /compactで会話全体を圧縮

または、より細かく制御したい場合:

  1. Escを2回押してrewind UIを開く
  2. 「ここからが本番の実装」というターンを選ぶ
  3. Summarize and continue を選ぶ
  4. 初期の議論が要約され、コンテキストに余裕ができる

ポイント: /compactはお手軽ですが、summarizeは「どこまでを圧縮するか」を選べるのが強みです。重要な議論が最近のターンに含まれる場合、summarizeで古い部分だけ圧縮するのが安全です。

知っておくべき制限事項

rewind/forkを効果的に使うために、制限事項を把握しておきましょう。

bashコマンドの実行は追跡されない

チェックポイントが記録するのはファイルの変更のみです。Claude Codeがbashコマンドで行った操作(パッケージのインストール、データベースのマイグレーション、外部APIへのリクエストなど)は記録されません。

rewindでファイルを巻き戻しても、npm installで追加されたパッケージや、データベースへの変更は元に戻りません。

rewindは万能の「元に戻す」ではありません。bashでrmしたファイル、送信したAPIリクエスト、実行したマイグレーションなどの副作用は巻き戻せません。破壊的な操作の前には必ず手動でバックアップを取りましょう。

外部での変更は追跡されない

Claude Codeの外(エディタやターミナル)で行ったファイル変更は、チェックポイントに含まれません。rewindしても、外部で加えた変更はそのまま残るか、チェックポイントの状態で上書きされます。

チェックポイントの有効期限

前述の通り、チェックポイントはセッション終了後約30日間保持されます。古いセッションに対してrewindやforkを試みても、チェックポイントが期限切れで失われている場合があります。

ベストプラクティス

これらの制限を踏まえた運用のコツをまとめます。

  1. 重要な節目でgitコミットする: チェックポイントに頼りすぎず、明示的にコミットしておく
  2. 破壊的操作の前にrewindポイントを意識する: 「ここに戻れるようにしたい」と思ったら、コミットしておく
  3. 長時間セッションでは定期的に/compactする: コンテキストの圧迫を感じる前に、先手を打つ
  4. forkは比較検討に使う: 「どちらの設計がいいか」を客観的に比較できる

理解度チェック

Q1: rewindのオプション選択

Claude Codeが行ったファイル変更は取り消したいが、これまでの議論の文脈は維持したい場合、rewindのどのオプションを選ぶべき?

Q2: forkの動作

forkで新しいセッションを作成したとき、元のセッションはどうなる?

Q3: コンテキスト管理の判断

長時間のセッションでコンテキストウィンドウが圧迫されてきた。最近の議論は重要だが、序盤の試行錯誤は圧縮したい。最適な方法は?

まとめ

今回はClaude Codeのセッション管理について学びました!

覚えておきたいポイントをまとめます:

  • チェックポイント: ファイル変更のたびに自動作成される一時的なスナップショット
  • rewind: Escx2 または /rewind で起動。5つのオプションでファイルと会話を柔軟に巻き戻し
  • summarize: rewind内のオプション。会話の一部を要約してコンテキストを節約
  • fork: セッションを分岐させ、元を残したまま別のアプローチを試行
  • 判断基準: 「戻したい」→ rewind、「試したい」→ fork、「軽くしたい」→ /compact

セッション管理を使いこなせると、Claude Codeでの開発体験が格段に向上します。「間違えても戻れる」「別の道も試せる」という安心感は、より大胆な設計判断を可能にしてくれますよ。

AIターミナルの効率化に興味がある方は、cmuxでAIコーディングを加速するもぜひチェックしてみてください!