MemoryLake
すべての記事に戻る
Tutorial2026年7月30日·7 分で読了

コンテキストを失わずに GitHub Copilot から Claude Code へ移行する方法 (2026)

日々のコーディング作業を GitHub Copilot から Claude Code へ移行することを決めたとします。インストール自体は数分で完了します。しかし、誰も警告してくれない落とし穴があります。それは、Copilot があなたのコードベースについて吸収してきたすべての知識(コーディング規約、3つのアーキテクチャ決定の背後にある理由、リファクタリングしても安全なモジュールと絶対に手を出してはいけないモジュールなど)は、移行時には引き継がれないということです。

結論から言うと、エクスポートボタンは存在しません。なぜなら、移行しようとしているもののほとんどは、あなたが所有するデータとして保存されていないからです。Copilot の永続化レイヤーは、リポジトリ内にある少数の指示ファイルだけであり、これらは半日もあれば移植できます。それ以外の知識は、閉じれば消えてしまうチャットセッションの中に存在していました。したがって、クリーンな移行を行うには、ファイルを移植し、暗黙の知識を意図的に書き直し、そして(これが最も重要ですが、二度と同じ作業を繰り返さないために)その知識をどちらのツールにも依存しない場所に配置する必要があります。

このガイドでは、これら3つのステップを順番に解説します。

コーディングエージェントを切り替えるとコンテキストが失われる理由

Copilot のメモリは想像以上に薄い

数ヶ月間使用していると、Copilot はプロジェクトのことをすべて理解しているように感じられます。しかし、セッションごとに実際に保持しているのは、開いているファイル、リポジトリから取得できる情報、そして指示ファイルだけです。リポジトリレベルのカスタム指示(.github/copilot-instructions.md や、それに付随するスコープごとの指示ファイルやプロンプトファイル)は実在し、ポータブルで、バージョン管理も可能です。しかし、それ以外のすべては、その都度実行される推論にすぎず、チャット履歴は単なる対話の記録であってナレッジベースではありません。開発者は常にこの限界に直面しています。その仕組みについては、why GitHub Copilot forgets your codebase context で詳しく解説しています。

価値のある情報は書き残されていない

本当に価値のある知識とは、会話の中でしか生み出されなかったものです。たとえば、なぜ決済モジュールが重複書き込みを許容するのか、どのテストスイートが誤検知を起こすのか、認証サービスの切り出しに前回失敗した理由は何だったのか、といったことです。これらはチャットの中で Copilot に説明したはずです。しかし、コピーできるファイルは存在せず、仮にあったとしても、それらをキャプチャできるエクスポートフォーマットはありません。

Claude Code もまたステートレスである

これは、ほとんどの移行ガイドが見落としている点です。Claude Code は、すべてのセッションをまっさらな状態で開始します。プロジェクトのルートにある CLAUDE.md やユーザーレベルの ~/.claude/CLAUDE.md を読み込み、MCP 経由で接続されたツールにアクセスすることはできますが、セッション自体には永続的なメモリは蓄積されません。コンテキストの保存方法を変えずにツールだけを切り替えると、UI が変わるだけで同じ問題に直面することになります。これについては、Claude Code forgetting project context で詳細に説明されています。

ツールの切り替えは、インターフェースの変更にすぎません。コンテキストの置き場所を変えることこそが、根本的な解決策となります。

手動での移行手順

ステップ 1: Copilot が実際に保持しているものを収集する

リポジトリ内を整理し、ポータブルな要素を収集します:

  • .github/copilot-instructions.md — リポジトリ全体の指示
  • これまでに蓄積された、特定のスコープ向けの指示ファイルや再利用可能なプロンプトファイル
  • リンターやフォーマッタの設定など、規約をコード化したエディタ設定
  • Wiki、ADR(アーキテクチャ決定記録)フォルダ、オンボーディングドキュメントなどにピン留めされているもの

次に、より困難な棚卸しを行います。過去2週間の Copilot のチャット履歴を開き、複数回説明せざるを得なかったコンテキストをすべて書き出します。その繰り返しこそが「メモリ監査」です。何度も再入力していた内容こそ、保存されていなかった情報そのものです。

ステップ 2: Claude Code が読み取れる場所に再構築する

Claude Code は CLAUDE.md を読み取るため、まずはここから始めます。指示内容を移植し、プロジェクトの成長に合わせて使い続けられるように構造化します:

  • プロジェクトの全体像:どのようなサービスがあり、何が何と通信し、何が非推奨なのか
  • 規約:命名規則、エラーハンドリング、テストの期待値、コミットやレビューのルール
  • 理由を伴う決定事項:「Postgres を使用する」ではなく「キューモードのワーカーがインプロセス状態を破損したため、Postgres を採用」など
  • 罠:不安定なテストスイート、隠れた結合があるモジュール、順序通りに実行する必要があるマイグレーション

ユーザーレベルの好みは ~/.claude/CLAUDE.md に、プロジェクトの事実はリポジトリ内のファイルに分けて記述することで、チームメンバーはあなたの個人設定に影響されることなく、プロジェクトに関する情報だけを引き継ぐことができます。

これで Claude Code のセットアップは完了し、ゼロから始めるよりもはるかにスムーズになります。しかし、これには限界もあります。単一の Markdown ファイルは「概要説明書」であって「メモリ(記憶)」ではありません。自動的に成長することはなく、過酷なデバッグセッションの後に誰も更新しません。また、インシデントレビューに使用するアシスタントや、来月より安価なモデルに切り替えるエージェントにその内容が共有されることもありません。半年も経てば、CLAUDE.md は陳腐化するか、あるいは肥大化してしまうでしょう。

より良い方法:どちらのツールでも使える単一のメモリレイヤー

この移行作業を繰り返さないための解決策は、使用するエージェントの内部にプロジェクトの知識を保存するのをやめることです。MemoryLake はツールの外部に位置します。アーキテクチャのメモ、決定事項、リポジトリのコンテキストは単一のメモリレイヤーに保存され、Claude Code は MCP 経由でそこから読み取ります。将来的に Codex を追加したり、オートコンプリート用に Copilot を併用したり、別のエージェントに作業を任せたりする場合でも、それぞれが独自のコピーを再構築するのではなく、同じソースを読み取ることができます。

ステップ 1: API キーを作成する

キーを生成し、約30秒で最初のリクエストを送信できます。

MemoryLake API キーの作成
MemoryLake API キーの作成

ステップ 2: 最初のメモリをアップロードする

プロジェクトの実際のコンテキストを保持するドキュメント、画像、ファイルをアップロードします。先ほど作成した CLAUDE.md、アーキテクチャ図、ADR、ランブック、インシデント報告書、API 仕様書などがこれに該当します。これらは、かつてチャットの中にしか存在しなかった資料です。

MemoryLake に最初のメモリをアップロード
MemoryLake に最初のメモリをアップロード

ステップ 3: AI とエージェントを接続する

MCP または API を介して、Claude、Codex、OpenClaw、およびその他のエージェントにそのメモリへのアクセス権を付与します。Claude Code の具体的な設定方法については、how to add memory to Claude Code を参照してください。それ以降は、プロジェクトがすでにロードされた状態で新しいセッションが開始され、次のツール変更は移行作業ではなく、単なる設定の編集になります。

MCP 経由で AI とエージェントを接続
MCP 経由で AI とエージェントを接続

移行にかかる実際のコストと、それによって得られる節約効果

手動での移行にかかるコストを現実的に見積もってみましょう。指示ファイルの移植:1時間未満。暗黙の知識を CLAUDE.md に再構築する作業:徹底的に行うと半日。そして、継続的に発生するコスト:仮にプロジェクトのコンテキストが 2,000 トークンあり、セッションやエージェントをまたいで1日に20回再提示されるとします。これは、同じことを繰り返すために毎月約 1.2M トークンを消費し、セッションを開くたびに4〜5分の再説明を行っていることになります。

共有メモリレイヤーへの1回限りの書き込みは、この継続的なコストを不要にします。また、次のツール評価の際にも大きな違いが生まれます。現在、Codex や新しいエージェントを試すには、コンテキストの再構築コストを再び支払う必要があります。これこそが、チームがすでに限界を感じているツールを使い続けざるを得ない理由です。メモリが外部化されていれば、ツールの評価にかかる時間は1か月ではなく、半日で済みます。

移行のためのベストプラクティス

チャットログではなく、決定事項を移行する

チャットログをそのまま新しいセットアップに流し込まないでください。結論(選択肢、理由、日付)を抽出し、それらを保存します。結論は検索しやすく、一方でチャットログは重要な情報を埋もれさせ、読み取りに余計なトークンを消費します。

2週間は両方のツールを併用する

Claude Code にエージェントとしての作業を任せつつ、Copilot の自動補完機能は残しておきます。併用期間を設けることで、移植し忘れたコンテキストが浮き彫りになります。なぜなら、同じことを2回説明している自分に気づくからです。

メモリの書き込みは一度だけ、読み取りはどこからでも

規約、制約、事後分析の知見など、今後も必要になる事柄をエージェントに説明するたびに、セッションではなく共有レイヤーに保存するようにしてください。この習慣こそが、3回目の移行を極めて容易にする鍵です。これは、migrating from Cursor to Claude Code や、ゼロからやり直すことなく moving off Codex を行う際と同じ原則です。

結論

GitHub Copilot から Claude Code への移行は、1つの名前の下に行われる2つの異なる移行作業です。1つ目は機械的な作業です。指示ファイルを CLAUDE.md に移行するだけで、1時間もあれば終わります。2つ目は、痛みを伴う作業です。チャットで説明してきた数ヶ月分のコンテキストの移行であり、これらは保存されていなかったため、エクスポートする手段がありません。

これを手動で再構築することは可能であり、一度は行うべきです。しかし、それを Claude Code の内部で再構築してしまうと、将来的にまた別のツールへ移行する際に同じ問題が発生します。プロジェクトのメモリは、エージェントが読み取れる外部レイヤーに保持しましょう。そうすれば、「コンテキストをどうやって Claude Code に移行するか」という問いは消え、「今日はどのエージェントにこれを読み込ませるか」という問いに変わるはずです。

よくある質問

GitHub Copilot のチャット履歴を Claude Code にエクスポートすることはできますか?

Copilot のチャット履歴を実用的な形で Claude Code に移行する公式のエクスポート機能はありません。また、生のチャットログをそのまま移行しても適切な形式にはなりません。Claude Code が読み取るのは指示や接続されたメモリであり、他のツールのログではないからです。指示ファイルを移植した上で、チャットから重要な結論を手動で抽出してください。

`.github/copilot-instructions.md` に相当する Claude Code のファイルは何ですか?

プロジェクトルートの CLAUDE.md と、ユーザーレベルの設定を保持する ~/.claude/CLAUDE.md です。どちらもプレーンな Markdown 形式であり、コードと同様にレビュー対象とするべきです。なぜなら、古くなった指示ファイルは、それを読み取るすべてのセッションを誤った方向へ導いてしまうからです。

Claude Code はセッション間でプロジェクトのことを記憶していますか?

単体では記憶しません。セッションごとに CLAUDE.md ファイルを再読み込みし、MCP 経由で接続されたツールにはアクセスできますが、セッション自体には何も残りません。永続性は、接続する外部ソースによって担保されます。

移行後も Copilot を使い続けるべきですか?

多くのチームがそのようにしています。インライン補完には Copilot を使い、複数ファイルにまたがるエージェント作業には Claude Code を使用するという組み合わせです。ただし、この運用がうまくいくのは、両方が同じコンテキストを参照している場合のみです。そうでない場合、2つの異なるプロジェクト知識を個別に管理する手間が発生します。

この移行作業を二度と繰り返さないためにはどうすればよいですか?

プロジェクトのコンテキストをエージェントの外部に保存することです。規約、決定事項、注意すべき罠などが、エージェントが MCP や API 経由で読み取れるメモリレイヤーに存在していれば、ツールの切り替えや追加は単なる接続設定の変更になり、知識を再構築するプロジェクトではなくなります。