Skip to content

Commit 1ed8030

Browse files
committed
docs: add Qiita and note.com article drafts for marketing
1 parent 809eb17 commit 1ed8030

2 files changed

Lines changed: 436 additions & 0 deletions

File tree

articles/note.md

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
# Claude Code の複数セッション問題、SQLite で解決した話
2+
3+
## はじめに
4+
5+
Claude Code を使っていると、こんな経験ありませんか?
6+
7+
- 朝のセッションで決めた方針を、昼のセッションで忘れられる
8+
- 「あれ、この前話したよね?」と何度も同じ説明をする
9+
- 複数のタブで Claude を開いたら、片方の記憶が消える
10+
11+
私も同じ問題に悩んでいました。そこで、**公式の memory サーバーを SQLite ベースに改造したパッケージ**を作って公開しました。
12+
13+
**GitHub**: https://github.com/Daichi-Kudo/mcp-memory-sqlite
14+
**npm**: @daichi-kudo/mcp-memory-sqlite
15+
16+
この記事では、なぜ作ったのか、どう使うのかを共有します。
17+
18+
---
19+
20+
## 問題: 公式の memory サーバーの限界
21+
22+
Claude の MCP(Model Context Protocol)には、公式で `@modelcontextprotocol/server-memory` という記憶保存サーバーがあります。これを使うと、セッションをまたいで情報を保持できます。
23+
24+
でも、**ファイル形式が JSONL**(JSON Lines)なんです。
25+
26+
### JSONL の何が問題か
27+
28+
1. **ファイルロックがない**
29+
複数の Claude セッションが同時に書き込むと、データが壊れるリスクがあります。
30+
31+
2. **全件読み込みが必要**
32+
検索するたびにファイル全体を読み込むので、データが増えると遅くなります。
33+
34+
3. **トランザクションがない**
35+
途中で失敗すると、中途半端な状態でデータが残ってしまうことがあります。
36+
37+
実際、私も以下のような問題に遭遇しました。
38+
39+
- **朝のセッション**で「このプロジェクトは Python + FastAPI で作る」と決定
40+
- **昼のセッション**で「Next.js で作りましょうか?」と提案される
41+
- **夕方のセッション**で朝の決定事項が消えている
42+
43+
これでは「記憶」の意味がない…。
44+
45+
---
46+
47+
## 解決策: SQLite + WAL モード
48+
49+
そこで、**JSONL を SQLite に置き換えた**パッケージを作りました。
50+
51+
### SQLite の利点
52+
53+
| 特徴 | 効果 |
54+
|------|------|
55+
| **WAL モード** | 複数プロセスが同時に読み書き可能(レースコンディション回避) |
56+
| **インデックス** | 高速な検索 |
57+
| **トランザクション** | データの整合性保証 |
58+
| **単一ファイル** | 管理が簡単、バックアップも楽 |
59+
60+
公式の JSONL 版と違い、**複数の Claude セッションを同時に開いても安全**です。
61+
62+
---
63+
64+
## 使い方
65+
66+
### 1. インストール不要(npx で直接実行)
67+
68+
```bash
69+
npx @daichi-kudo/mcp-memory-sqlite
70+
```
71+
72+
### 2. Claude の設定ファイルに追加
73+
74+
`~/.claude.json` に以下を追加:
75+
76+
```json
77+
{
78+
"mcpServers": {
79+
"memory": {
80+
"command": "npx",
81+
"args": ["@daichi-kudo/mcp-memory-sqlite"],
82+
"env": {
83+
"MEMORY_DB_PATH": "./.claude/memory.db"
84+
}
85+
}
86+
}
87+
}
88+
```
89+
90+
- `MEMORY_DB_PATH` は任意の場所でOK
91+
- プロジェクトごとに分けたい場合は `./.claude/memory.db` を指定
92+
- 全プロジェクト共通なら `~/memory.db` など
93+
94+
### 3. Claude を再起動
95+
96+
設定ファイルを保存したら、Claude を再起動してください。
97+
98+
---
99+
100+
## 実際の使い方
101+
102+
Claude との会話の中で、自然に使えます。
103+
104+
### 記憶を保存
105+
106+
```
107+
あなた: このプロジェクトは Next.js + TypeScript + Tailwind で作ることに決めました。記憶しておいて。
108+
109+
Claude: 了解しました。memory に保存します。
110+
```
111+
112+
### 記憶を検索
113+
114+
```
115+
あなた: このプロジェクトの技術スタックは?
116+
117+
Claude: memory を検索します…このプロジェクトは Next.js + TypeScript + Tailwind で作ることになっています。
118+
```
119+
120+
### 記憶を削除
121+
122+
```
123+
あなた: プロジェクトのことを全部忘れてください。
124+
125+
Claude: 関連する記憶を削除します。
126+
```
127+
128+
---
129+
130+
## 公式版との違い
131+
132+
| 項目 | 公式(JSONL) | 本パッケージ(SQLite) |
133+
|------|---------------|------------------------|
134+
| **ストレージ** | JSONL ファイル | SQLite データベース |
135+
| **並行アクセス** | 非対応(壊れる可能性) | WAL モードで対応 |
136+
| **検索速度** | 全件読み込み | インデックス検索 |
137+
| **データ整合性** | 保証なし | トランザクション保証 |
138+
139+
---
140+
141+
## こんな人におすすめ
142+
143+
- **複数の Claude タブ/セッションを同時に使う人**
144+
朝・昼・夜でセッションを分けても、記憶が共有されます。
145+
146+
- **長期プロジェクトで Claude を使う人**
147+
「前回決めたこと」を毎回説明し直す手間がなくなります。
148+
149+
- **サブエージェントを活用している人**
150+
複数のエージェントが同じ記憶を安全に参照できます。
151+
152+
---
153+
154+
## 注意点
155+
156+
### セキュリティ
157+
158+
- memory には機密情報を保存しないでください
159+
- DB ファイルは平文で保存されます
160+
161+
### 容量
162+
163+
- 定期的に不要な記憶を削除することをおすすめします
164+
- 重要な決定事項は、別途ドキュメントにも記録しましょう
165+
166+
---
167+
168+
## まとめ
169+
170+
Claude Code の記憶問題を解決するため、**SQLite ベースの memory サーバー**を作りました。
171+
172+
- **複数セッション対応**(WAL モード)
173+
- **高速検索**(インデックス)
174+
- **データ整合性保証**(トランザクション)
175+
176+
公式の JSONL 版では不安定だった「記憶の永続化」が、これで実用レベルになりました。
177+
178+
もし同じ悩みを抱えている方がいれば、ぜひ試してみてください。
179+
180+
**GitHub**: https://github.com/Daichi-Kudo/mcp-memory-sqlite
181+
**npm**: @daichi-kudo/mcp-memory-sqlite
182+
183+
Issue や PR もお待ちしています!
184+
185+
---
186+
187+
#ClaudeCode #MCP #SQLite #開発 #AI開発 #個人開発 #技術

0 commit comments

Comments
 (0)