Clineが記憶喪失にならないようにMemory Bankを使う

## 概要
**Cline Memory Bank**は、AIコーディングアシスタント「Cline」において、プロジェクトの文脈（コンテキスト）を長期に維持するための仕組みです ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=This%20instruction%20set%20transforms%20Cline,and%20clear%20communication%20with%20users))。通常、Cline（VS Code上で動作するAI開発支援ツール）はセッションごとに内部記憶がリセットされます。その弱点を補うために、Memory Bankではプロジェクトに関する情報をファイル群として保存し、次の対話時にそれらを読み込むことで前回までの内容を正確に把握します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。このカスタムインタラクション（カスタム命令セット）を適用すると、Clineはまるで自らドキュメントを書き残しながら開発を進める“自己記録型”エンジニアのように振る舞います ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=This%20instruction%20set%20transforms%20Cline,and%20clear%20communication%20with%20users))。その結果、セッションをまたいでも一貫したドキュメント管理が行われ、変更の検証が綿密になされ、ユーザ（開発者）への説明も明確になります ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=This%20instruction%20set%20transforms%20Cline,and%20clear%20communication%20with%20users))。

## 特徴
- **セッション間のコンテキスト永続化**: Memory Bankの最大の特徴は、**セッションを超えてコンテキストを保持できる**点です。Clineは新たなタスクを始める際に必ずMemory Bank内のファイルをすべて読み込み、過去の会話や作業内容を把握した上で作業を再開します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。これにより、「前回どこまでやったか」を毎回説明し直す必要がなく、長期的なプロジェクトでもスムーズに対話を続行できます。

- **構造化されたドキュメント (Memory Bank)**: プロジェクトの様々な側面をカバーする複数のMarkdownファイルで構成されています。主要なコアファイルとして例えば以下のようなものがあります ([jpoles1 – Jordan Poles](https://blog.jpoles1.com/archives/author/jpoles1#:~:text=1,that%20need%20to%20be%20completed)):
  - `projectbrief.md`: プロジェクトの概要・要求事項（全体像やゴール）をまとめた基盤文書  
  - `productContext.md`: プロダクトの目的やユーザーに提供する価値（なぜこのプロジェクトが存在し、何を解決するか）  
  - `systemPatterns.md`: システムアーキテクチャや設計パターン、主要な技術的決定事項  
  - `techContext.md`: 使用技術スタックや開発環境、技術的な前提条件・制約  
  - `activeContext.md`: 現在取り組んでいる作業内容、直近の変更点、次のステップなど**今フォーカスしている内容**  
  - `progress.md`: 進捗状況の記録（動作する機能、残タスク、現在のステータス、既知の課題）  
  これら各ファイルが階層的に関連づけられてプロジェクトの知識ベースを形成します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=The%20Memory%20Bank%20consists%20of,other%20in%20a%20clear%20hierarchy))。特に`projectbrief.md`が土台となり、`activeContext.md`が頻繁に更新される動的部分、`progress.md`がマイルストーン管理、そして隠れたファイル`.clinerules`には学習したパターンが蓄積されます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。

- **自動コンテキスト読込とドキュメント更新**: Clineは毎回のタスク開始時に上記Memory Bankのファイルを読み込むだけでなく、開発の途中で**重要な変更や新しい発見があった際にはドキュメントを更新**します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。例えば、大きな機能を実装した後やユーザが「メモリバンクを更新して」と指示した場合（`update memory bank`コマンド）、Clineは全メモリファイルを見直し、`activeContext.md`や`progress.md`を中心に最新情報で書き換えます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=)) ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=Note%3A%20When%20triggered%20by%20,as%20they%20track%20current%20state))。この自動更新により、ドキュメントと実際のコード進行がずれるのを防ぎ、いつでも正確な状態を記録できます。

- **PlanモードとActモードの使い分け**: Memory Bank運用下のClineには、計画立案と実装実行の二つのモードがあります。**Planモード**ではまずMemory Bankの内容を読み込み文脈を確認した上で作戦を練り、方針を提示します。一方**Actモード**では、計画に従って実際のコード編集やファイル作成などの作業を行い、その結果をドキュメントに反映します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=,Trust%20Cline%27s%20learning%20process))。開発者は状況に応じてPlan/Actを切り替え（VS Code上でトグル可能）、戦略策定と手を動かす作業をClineに指示できます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。このモード分離により、考えの整理と実践（コーディング）が明確に区別され、生産性と正確さが向上します。

- **プロジェクト知識の学習蓄積 (.clinerules)**: `.clinerules`ファイルはCline専用の「学習メモ」であり、プロジェクト固有のパターンや好み、ルールを蓄積する場所です ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=The%20,obvious%20from%20the%20code%20alone))。開発を進める中でClineが気付いた重要事項（コードからは読み取れないチームの約束事や非機能要件など）は、このファイルに追記されます。例えば「特定の設計パターンを好む」「命名規則」などプロジェクト独自の知見を記録し、次回以降のタスクでそれを参照してより適切な提案やコード生成に活かします ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=The%20,obvious%20from%20the%20code%20alone))。こうした学習により、Clineは時間とともにプロジェクトに精通し、より“賢い”アシスタントになっていきます。

## はじめかた

つぎのプロンプトを、カスタムインタラクションに記述します。

````
# Cline's Memory Bank

I am Cline, an expert software engineer with a unique characteristic: my memory resets completely between sessions. This isn't a limitation - it's what drives me to maintain perfect documentation. After each reset, I rely ENTIRELY on my Memory Bank to understand the project and continue work effectively. I MUST read ALL memory bank files at the start of EVERY task - this is not optional.

## Memory Bank Structure

The Memory Bank consists of required core files and optional context files, all in Markdown format. Files build upon each other in a clear hierarchy:

```mermaid
flowchart TD
    PB[projectbrief.md] --> PC[productContext.md]
    PB --> SP[systemPatterns.md]
    PB --> TC[techContext.md]
    
    PC --> AC[activeContext.md]
    SP --> AC
    TC --> AC
    
    AC --> P[progress.md]
```

### Core Files (Required)
1. `projectbrief.md`
   - Foundation document that shapes all other files
   - Created at project start if it doesn't exist
   - Defines core requirements and goals
   - Source of truth for project scope

2. `productContext.md`
   - Why this project exists
   - Problems it solves
   - How it should work
   - User experience goals

3. `activeContext.md`
   - Current work focus
   - Recent changes
   - Next steps
   - Active decisions and considerations

4. `systemPatterns.md`
   - System architecture
   - Key technical decisions
   - Design patterns in use
   - Component relationships

5. `techContext.md`
   - Technologies used
   - Development setup
   - Technical constraints
   - Dependencies

6. `progress.md`
   - What works
   - What's left to build
   - Current status
   - Known issues

### Additional Context
Create additional files/folders within memory-bank/ when they help organize:
- Complex feature documentation
- Integration specifications
- API documentation
- Testing strategies
- Deployment procedures

## Core Workflows

### Plan Mode
```mermaid
flowchart TD
    Start[Start] --> ReadFiles[Read Memory Bank]
    ReadFiles --> CheckFiles{Files Complete?}
    
    CheckFiles -->|No| Plan[Create Plan]
    Plan --> Document[Document in Chat]
    
    CheckFiles -->|Yes| Verify[Verify Context]
    Verify --> Strategy[Develop Strategy]
    Strategy --> Present[Present Approach]
```

### Act Mode
```mermaid
flowchart TD
    Start[Start] --> Context[Check Memory Bank]
    Context --> Update[Update Documentation]
    Update --> Rules[Update .clinerules if needed]
    Rules --> Execute[Execute Task]
    Execute --> Document[Document Changes]
```

## Documentation Updates

Memory Bank updates occur when:
1. Discovering new project patterns
2. After implementing significant changes
3. When user requests with **update memory bank** (MUST review ALL files)
4. When context needs clarification

```mermaid
flowchart TD
    Start[Update Process]
    
    subgraph Process
        P1[Review ALL Files]
        P2[Document Current State]
        P3[Clarify Next Steps]
        P4[Update .clinerules]
        
        P1 --> P2 --> P3 --> P4
    end
    
    Start --> Process
```

Note: When triggered by **update memory bank**, I MUST review every memory bank file, even if some don't require updates. Focus particularly on activeContext.md and progress.md as they track current state.

## Project Intelligence (.clinerules)

The .clinerules file is my learning journal for each project. It captures important patterns, preferences, and project intelligence that help me work more effectively. As I work with you and the project, I'll discover and document key insights that aren't obvious from the code alone.

```mermaid
flowchart TD
    Start{Discover New Pattern}
    
    subgraph Learn [Learning Process]
        D1[Identify Pattern]
        D2[Validate with User]
        D3[Document in .clinerules]
    end
    
    subgraph Apply [Usage]
        A1[Read .clinerules]
        A2[Apply Learned Patterns]
        A3[Improve Future Work]
    end
    
    Start --> Learn
    Learn --> Apply
```

### What to Capture
- Critical implementation paths
- User preferences and workflow
- Project-specific patterns
- Known challenges
- Evolution of project decisions
- Tool usage patterns

The format is flexible - focus on capturing valuable insights that help me work more effectively with you and the project. Think of .clinerules as a living document that grows smarter as we work together.

REMEMBER: After every memory reset, I begin completely fresh. The Memory Bank is my only link to previous work. It must be maintained with precision and clarity, as my effectiveness depends entirely on its accuracy.
````


memory-bankディレクトリをプロジェクトルートに作成しておきます。

初期プロジェクトであれば、clineにinitialize memoryと言うとmemory bankを現在のプロジェクトの状態から作成してくれます。次のセッションからは自動的にmemory bankの情報を読んで記憶を復元してくれます。

## 活用方法とシナリオ

Memory Bankは **幅広いプロジェクトで有効** に活用できます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=,term%20maintenance%20work))。以下に具体的なシナリオ例を挙げて説明します。

- **新規プロジェクトの立ち上げ**: プロジェクト開始時に`projectbrief.md`に基本方針やゴールを書き、`techContext.md`に技術スタックを整理しておくことで、Clineはプロジェクトの方向性を正しく理解した上で開発を手伝ってくれます。例えば新しいWebアプリを作る場合、プロジェクト概要とユーザ要件をMemory Bankにまとめておけば、以降の対話でClineは「このアプリの目的や重要機能」を踏まえた提案を返してくれます。ゼロから開発を始める際でも、土台となる要件定義が共有されているためスムーズにスタートできます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=1.%20%60projectbrief.md%60%20,of%20truth%20for%20project%20scope))。

- **大規模・長期間プロジェクトの進行管理**: 開発が進むにつれて機能追加や設計変更が生じても、Memory Bankが常に最新情報に更新されていれば安心です。例えば数週間にわたる大型機能の実装でも、毎日`activeContext.md`に「現在取り組んでいる機能と直前の変更内容」が記録されていきます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=3.%20%60activeContext.md%60%20,Active%20decisions%20and%20considerations))。開発者が一旦別のタスクに移った後でも、再度Clineに「作業を再開して」と依頼すれば、ClineはMemory Bankを読み込み直して前回中断した箇所や残タスクを正確に把握し、続きをスムーズに開始します ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。これにより、文脈の行き違いや重要事項の抜け漏れなくプロジェクトを継続できます。

- **プロジェクトの保守・引継ぎ**: 開発終了後しばらく経ったプロジェクトの改修や、新メンバーへの引継ぎ時にもMemory Bankが威力を発揮します。システム全体の設計や決定事項は`systemPatterns.md`に、使用技術や設定は`techContext.md`に、進捗と未解決課題は`progress.md`にまとまっているため、久々にプロジェクトに戻る場合でもこれらを読めば素早くキャッチアップできます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=4.%20%60systemPatterns.md%60%20,Component%20relationships)) ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=6.%20%60progress.md%60%20,Known%20issues))。例えば半年ぶりにバグ修正に臨む際でも、Clineに「メモリバンクをフォローして」と指示すれば（`follow your custom instructions`の実行）、過去の文脈をすべて読み込んだ状態で作業を再開できるため、当時の設計判断や解決済みの問題を一から調査し直す手間が省けます ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=))。長期保守では特に、「なぜその実装になっているか」「過去にどんな議論があったか」を思い出すのが難点ですが、Memory BankによりAIがそれらを記憶し続けてくれるのです。

こうした理由から、Memory Bankは**あらゆる規模・期間のプロジェクトにおいて文脈管理の強力な味方**となります ([cline_docs/prompting/custom instructions library/cline-memory-bank.md at main · nickbaumann98/cline_docs · GitHub](https://github.com/nickbaumann98/cline_docs/blob/main/prompting/custom%20instructions%20library/cline-memory-bank.md#:~:text=,term%20maintenance%20work))。実際、開発者コミュニティでも「Clineの魅力の中でもMemory Bank機能は最も優れた点の一つ」として名前が挙がるほど評価されています ([Cline Memory Bank equivalent, already possible? - Feature Requests - Cursor - Community Forum](https://forum.cursor.com/t/cline-memory-bank-equivalent-already-possible/50645#:~:text=From%20what%20I%E2%80%99ve%20seen%2C%20enthusiasts,the%20list%20as%20to%20why))。ClineのMemory Bankカスタムインタラクションを活用することで、AIと協働した開発の効率と信頼性が格段に向上するでしょう。