💨

Claude Codeで実現する効率的なプロジェクト管理:階層化メモリバンクシステム入門

に公開

Claude Codeで実現する効率的なプロジェクト管理:階層化メモリバンクシステム入門

この記事について

Claude Codeでの記憶の永続化とコンテキスト消費の効率化を目指したメモリバンクシステムの紹介です。個人開発者や小規模プロジェクトを対象としています。きっとすぐにもっと優れた手法が登場するでしょうが、他山の石として参考になれば幸いです。

作者について

  • 地方都市在住の非常勤講師です。
  • この記事はAIと人間の協業で作成されており、AI一発書きではなく「人間→AI→人間」の繰り返しで作成されています。

動機:Claude Codeで感じた課題

個人開発でClaude Codeを使っていて、以下の課題を感じていました:

  • プロジェクトの一貫性が保てない
  • Claude Codeが想定外の機能を提案してしまう
  • コンテキスト使用量が想定以上に増える

これらの問題は、おそらくCLAUDE.mdを適切に管理できていなかったことが原因だと思います。また、Claude Codeに記憶を持たせる仕組みがないことも課題でした。

解決のヒント:Clineのメモリバンクシステム

VSCode拡張のClineを使った際に、メモリバンクシステムがとても良い印象でした。これをClaude Codeに応用できないかと考え、カスタムコマンドを活用して実現してみました。

参考:Cline Memory Bank

基本的な考え方

人間の記憶構造を参考に、AIが管理するプロジェクト情報を階層化しています:

人間の記憶              →  AIが管理するプロジェクト情報
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
短期記憶      →  core/(今必要な情報のみ)
中期記憶      →  context/(詳細仕様)
長期記憶      →  archive/(完了済み)

ディレクトリ構造

.claude/
├── core/         # 短期記憶(常時参照・約200行)
│   ├── current.md    # 今の状況(50行以内)
│   ├── next.md       # 次の一手(30行以内)
│   ├── overview.md   # プロジェクト概要(20行以内)
│   └── templates.md  # よく使うパターン
├── context/      # 中期記憶(必要時参照)
│   ├── tech.md       # 技術的な決定事項
│   ├── history.md    # 過去の判断理由
│   └── rules.md      # 守るべきルール
└── archive/      # 長期記憶(定期整理)
    └── [日付]-[内容].md  # 完了したもの

各ファイルの役割

1. current.md - 現在の状況

# Current Status - 2025/01/19 09:00

## 3行サマリー
- **現在**: MVP開発フェーズ - ユーザー認証機能実装中
- **技術選定**: JWT(※マイクロサービス化は却下済み)
- **次のマイルストーン**: 1/25 アルファ版リリース

## 今日のタスク
- [ ] [P1] JWT認証のミドルウェア実装 - 3h
  - Express.jsでシンプルに実装
  - 余計な抽象化は避ける(YAGNI原則)
- [ ] [P2] ユーザー登録APIのバリデーション - 2h
- [ ] [P3] 認証関連のユニットテスト作成 - 1h

## ブロッカー・注意事項
- マイクロサービス化の提案は却下済み(history.md参照)
- 認証はJWTで統一(Session認証は使わない)

## 今日のコンテキスト
- 使用ライブラリ:jsonwebtoken v9.0.0
- トークン有効期限:Access 15分、Refresh 7日

2. overview.md - プロジェクトの方向性

# Project Overview - Todo Master Pro

## ビジョン(1行)
個人の生産性を最大化する、シンプルで使いやすいタスク管理アプリ

## スコープ(これだけ、これ以上はやらない)
- ✅ 基本的なCRUD機能
- ✅ ユーザー認証(JWT)
- ✅ タグによる分類
- ❌ AI機能(v2.0以降で検討)
- ❌ チャット機能(スコープ外)
- ❌ ブロックチェーン(永遠にスコープ外)

## 技術スタック(固定)
- Backend: Node.js + Express(マイクロサービス化しない)
- Frontend: React + TypeScript
- DB: PostgreSQL(NoSQLは使わない)
- Deploy: Vercel + Supabase

## 成功の定義
- 1ヶ月でMVPリリース
- シンプルさを保つ(機能追加より削除を優先)

3. history.md - 過去の判断記録

# Decision History

## 2025-01-15: マイクロサービス化の提案を却下
- Claude提案:「認証をマイクロサービスで分離」
- 却下理由:個人開発には過剰、複雑性が増すだけ
- 決定:モノリシックで十分

## 2025-01-10: JWT vs Session認証
- 検討:両方のメリット・デメリット
- 決定:JWTを採用(SPAとの相性、スケーラビリティ)
- 理由:ステートレスで管理が楽

## 2025-01-05: 技術スタック確定
- 理由:枯れた技術で確実に動くものを作る
- 新しい技術への誘惑は断つ

カスタムコマンドの活用

日常的に使うコマンド

コマンド 用途 使用タイミング
/project:plan 作業計画立案 朝の作業開始時
/project:act 実装モード 実装作業時
/project:focus 現在のタスクのみ表示 集中したい時
/project:daily 日次更新(3分以内) 夕方の振り返り

専門的なコマンド

コマンド 用途 AIの振る舞い
/scope:check スコープ確認 新機能提案時にoverview.mdと照合
/tech:lock 技術固定モード 新技術の提案を受け付けない
/history:why 決定理由確認 過去の決定事項とその理由を参照

運用してみての感想

良かった点

  1. コンテキスト使用量の削減

    • 通常時:coreファイルのみ参照(約200行)
    • 必要な情報に絞り込めるため効率的
  2. 軽量な運用

    • 日次更新:3分程度
    • ファイルサイズ制限:core各50行以内
    • 定期的なアーカイブで軽量維持
  3. プロジェクトの一貫性

    • 「やらないこと」を明確化
    • 過去の判断を記録することで同じ議論を回避

課題や制約

  1. 個人開発特化

    • チーム開発には不向き
    • 同時編集を想定していない
  2. 軽量化の代償

    • 詳細な履歴管理は困難
    • 複雑な依存関係の管理が苦手
  3. 活用できていない機能

    • 残念ながらCLAUDE.mdの機能は現状では十分活かせていない
    • タグシステムも作ったけど使えていない

導入方法

1. テンプレートの準備

# GitHubからクローン
git clone https://github.com/sougetuOte/claude-file-template.git your-project
cd your-project

# 重要:.gitディレクトリを削除
rm -rf .git/
git init
git add .
git commit -m "プロジェクト開始:階層化メモリバンクシステム導入"

2. カスタマイズ

CLAUDE.mdでプロジェクト名を変更し、.claude/core/内の各ファイルを更新:

  • overview.md: プロジェクトの概要
  • current.md: 現在の状況
  • next.md: 次のアクション

3. 運用開始

# 最初の計画立案
/project:plan

# 実装作業
/project:act

# 日次更新
/project:daily

まとめ

階層化メモリバンクシステムは、個人開発や小規模プロジェクトに特化したプロジェクト管理手法です。

  • コンテキスト使用量の削減
  • 軽量な運用(日次3分程度)
  • プロジェクトの一貫性維持

ただし、チーム開発や大規模・複雑なプロジェクトには向いていません。個人開発中心で、迅速な開発サイクルを重視する場合に適していると思います。

まだ改善の余地は多く、今後より良い手法が登場することでしょう。この記事が何かの参考になれば幸いです。

参考リンク

連絡先

https://www.programjourney.com/
info@programjourney.com

Discussion