メインコンテンツまでスキップ

AIコーディングツールとCursorセッション間でのコンテキスト管理

Cursor Context Management

AIコーディングアシスタントを使用する際の最大の課題の一つは、セッションやツール間でコンテキストを維持することです。Cursorは、プロジェクトコンテキストを保持および共有するためのいくつかのメカニズムを提供し、AIアシスタントが常に必要な情報を持っていることを保証します。このガイドでは、コンテキスト管理のベストプラクティスを解説します。

コンテキストの問題

AIツールを使用する際、以下の課題に頻繁に直面します:

  • セッション健忘症:新しいチャットは毎回以前の作業の記憶なしに新しく始まります
  • ツール切り替え:Cursor、Claude、ChatGPT、その他のツール間を移動するとコンテキストが失われます
  • チーム共有:チームメンバーは同じプロジェクトコンテキストにアクセスする必要があります
  • コンテキストドリフト:長時間のセッションで、AIは元の目標を見失います

解決策 1:AGENTS.md - プロジェクト憲法

リポジトリのルートに AGENTS.md ファイルを作成します。これはすべてのAIツールに対する唯一の真実の源です。

AGENTS.md の構造

# プロジェクト:MyApp

## 概要
このプロジェクトの機能と技術スタックの簡潔な説明。

## 技術スタック
- フロントエンド:React 18 + TypeScript + Tailwind CSS
- バックエンド:Node.js + Express + PostgreSQL
- テスト:Jest + React Testing Library
- ビルド:Vite

## プロジェクト構造

src/ components/ # 再利用可能なUIコンポーネント pages/ # ルートレベルのページ hooks/ # カスタムReactフック utils/ # ヘルパー関数 types/ # TypeScript型 api/ # APIクライアント関数


## ビルド&テストコマンド
```bash
npm run dev # 開発サーバーを起動
npm run build # 本番ビルド
npm run test # テストを実行
npm run lint # ESLintを実行

コーディング標準

  • フックを使用した関数コンポーネントを使用する
  • 既存のファイル構成に従う
  • すべての新機能にテストを書く
  • TypeScriptの厳格モードを使用する

重要な決定事項

  • サーバー状態管理にReact Queryを使用
  • JWTトークンをhttpOnlyクッキーに保存
  • 共有型パッケージを持つMonorepo構造

### CursorでAGENTS.mdを参照する

新しいチャットの開始時に:

AGENTS.mdを読んで、[機能]を実装するのを手伝ってください。すべてのコーディング標準に従い、既存のパターンを使用してください。


## 解決策 2:Cursor固有のルール

Cursor固有のガイドラインのために `.cursor/rules/` を作成します:

```markdown
---
description: 'プロジェクト固有のCursor動作'
globs: ['**/*.ts', '**/*.tsx']
alwaysApply: true
---

# Cursorガイドライン

## 変更を行う前に
1. プロジェクトコンテキストのためにAGENTS.mdを読む
2. 既存の類似実装を確認する
3. 確立されたパターンに従う

## コード生成の好み
- 明示的な型を持つTypeScriptを生成する
- 公開APIにはJSDocコメントを含める
- 既存のエラーハンドリングパターンを使用する

## テスト要件
- 常に新機能のテストを提案する
- コンポーネントにはReact Testing Libraryを使用する
- API呼び出しはMSWでモックする

解決策 3:MCPによるセッションメモリ

永続的なメモリにはMCP(Model Context Protocol)サーバーを使用します:

メモリMCPのセットアップ

CursorのMCP設定に追加します:

{
"mcpServers": {
"memory": {
"command": "npx",
"args": ["-y", "@cursor-memory/server"]
}
}
}

メモリの使用

重要な事実を保存します:

PostgreSQLを使用しており、usersテーブルには以下が含まれることを覚えておいてください:
- id (UUID, 主キー)
- email (一意, インデックス付き)
- created_at (タイムスタンプ)
- preferences (JSONB)

将来のセッションで思い出します:

データベーススキーマについて何を覚えていますか?

解決策 4:CONTRACT.md パターン

複雑なプロジェクトでは、不変条件を定義する契約ファイルを使用します:

# プロジェクト契約

## 不変条件(絶対に違反しない)
1. すべてのAPIレスポンスには `success` ブール値を含める必要がある
2. ユーザーIDは常にUUIDであり、整数ではない
3. パスワードはログに記録されず、レスポンスで返されない

## アーキテクチャルール
1. ドメインロジックは `src/domain/` に配置する
2. APIルートはサービスに委譲するのみ
3. データベースアクセスはリポジトリパターンのみを通じて行う

## 現在のスプリント目標
- ユーザー認証を実装する
- パスワードリセットフローを追加する
- メール通知を設定する

意味のある変更の後にこのファイルを更新します。

解決策 5:セッションサマリー

各セッションの終了時に、サマリーを作成します:

# セッションサマリー:2026-06-22

## 完了済み
- [x] JWT認証ミドルウェアを設定
- [x] ログインと登録エンドポイントを作成
- [x] bcryptでパスワードハッシュを追加

## 進行中
- [ ] メール検証フロー(開始済み、テストが必要)

## 次のステップ
1. トークン期限切れ付きのパスワードリセットを実装
2. 認証エンドポイントにレート制限を追加
3. 統合テストを書く

## 変更された主要ファイル
- src/middleware/auth.ts (新規)
- src/routes/auth.ts (新規)
- src/services/auth.ts (新規)
- src/models/user.ts (変更済み)

## 決定事項
- リフレッシュトークン付きの15分JWT有効期限を使用
- リフレッシュトークンをRedisに保存

これを docs/session-summaries/YYYY-MM-DD.md として保存します。

解決策 6:Markdownによるクロスツールコンテキスト

ツール間を切り替える際、標準化されたコンテキスト形式を使用します:

# コンテキスト転送

## 現在のタスク
ユーザープロフィールページの実装

## 関連ファイル
- src/pages/Profile.tsx
- src/components/UserForm.tsx
- src/api/users.ts

## 現在の状態
- プロフィールページの骨格が作成された
- UserFormコンポーネントに検証が必要
- APIエンドポイント /api/users/me が正しいデータを返す

## 障害
- 画像アップロードアプローチを決定する必要がある

## 次のアクション
フォーム検証と送信ハンドラを追加

これを任意のAIツールにコピーしてシームレスに続行します。

ベストプラクティスまとめ

すべきこと

  • プロジェクト開始時にAGENTS.mdを作成する
  • アーキテクチャが変更されたときにAGENTS.mdを更新する
  • ツール固有のガイドラインにはCursorルールを使用する
  • 閉じる前に各セッションを要約する
  • MCPメモリで永続的な事実を保存する
  • すべてのコンテキストファイルにバージョン管理を使用する

すべきでないこと

  • AIのセッションメモリだけに頼らない
  • 外部ノート(Obsidian/Notion)にコンテキストを保存して同期しない
  • コンテキストファイルを古くならせない
  • 複数のファイル間で情報を重複させない

クイックスタートチェックリスト

新しいプロジェクトの場合:

  1. プロジェクト概要を含む AGENTS.md を作成
  2. Cursor動作のために .cursor/rules/ を設定
  3. MCPメモリサーバーを設定
  4. アーキテクチャ不変条件のために CONTRACT.md を作成
  5. docs/session-summaries/ ディレクトリを設定
  6. すべてのコンテキストファイルをバージョン管理に追加

関連リソース