無料全文公開・第1章

第1章 なぜ「メモを書いても Claude が読まない」のか

書籍『Claude Code に記憶を持たせる — CLAUDE.md / memory / Ingest / Lint 運用パック』の第1章を、要約なしの全文でそのまま公開します。

これは書籍『Claude Code に記憶を持たせる — CLAUDE.md / memory / Ingest / Lint 運用パック』の第1章全文です。この続き(第2章〜第7章、付録A・B)は有料版で読めます。 ← 書籍の詳細・購入ページに戻る

第1節 会話セッションは状態を持てないという構造的な制約

Claude Code を毎日使っていると、ある時期から同じ違和感に突き当たる。前回のセッションで散々説明した設計方針を、 次のセッションではもう一度最初から説明する羽目になる。プロジェクトの命名規則、避けてほしい実装パターン、 過去に試して失敗したアプローチ——どれも一度は言語化して伝えたはずなのに、次に会う Claude はそれを知らない。

これは Claude が「学習していない」からではない。会話セッションという仕組みそのものが、セッションをまたいだ 記憶を前提にしていないからだ。一般的には、会話モデルは「そのセッションのコンテキストウィンドウに載っている情報」 だけを参照して応答を組み立てる。セッションが終了すれば、そのウィンドウの中身は失われる。次に開いたセッションは、 別のプロセスとして、白紙の状態から始まる。

これは欠陥ではなく仕様だと捉えたほうが実務上は正しい。もし会話モデルが全ユーザーの全セッションを横断して 記憶を保持していたら、それ自体がプライバシーとセキュリティの重大な問題になる。セッションが独立していることは 安全設計の一部であり、この前提は覆らない。したがって、記憶を持たせたいなら、モデルの内部に期待するのではなく、 モデルの外側にファイルとして状態を置くしかない。

Claude Code には、この外側の置き場所として CLAUDE.md という仕組みが用意されている。 プロジェクトのルートに置いた CLAUDE.md は、セッション開始時に自動的に読み込まれ、 コンテキストに含められる——というのが一般的に知られている仕様である。この仕組み自体は単純で、 特別な設定もほとんど要らない。だからこそ多くの人が「とりあえず書いておけば覚えてくれるはずだ」と考えて使い始める。

ここで見落とされがちなのは、「読み込まれる」ことと「記憶が引き継がれる」ことは、似ているようで別の話だという点である。 ファイルは確かに毎回読み込まれる。だが読み込まれた情報をモデルがどう扱うかは、書いてある内容の量・質・ 整理のされ方に強く左右される。人間同士のコミュニケーションに置き換えると分かりやすい。新しく入ったメンバーに 分厚いドキュメントを一度渡しただけで、細部まで完璧に把握してもらえるとは誰も期待しない。要点が整理されていなければ、 渡した情報の大半は読み飛ばされるか、記憶の片隅に追いやられる。CLAUDE.md も同じで、「置いてあること」と 「機能していること」の間には運用の工夫が必要になる。

ところが、しばらく運用すると分かってくる。ファイルに書くことと、Claude がそれを実際に活用できる形で 読み取ることの間には、大きな距離があるということだ。ファイルは確かに読み込まれている。だが、 そこに書かれている情報が多すぎたり、古かったり、矛盾していたりすると、読み込まれてはいても実質的に 「読まれていない」のと同じ結果になる。次節では、この距離がどういう形で事故として表面化するかを見ていく。

第2節 CLAUDE.md に何でも詰め込んだときに起きる3つの事故(読まれない・矛盾する・膨張して埋もれる)

「セッションをまたぐと文脈が消える」という問題に気づいた人の多くが、最初に取る対策は同じだ。 CLAUDE.md に気づいたことをとにかく書き足していく。プロジェクトのルール、過去のバグの原因、 今後のタスク、雑多な気づき——分類せずに、時系列に、思いついた順に追記していく。

この運用は、最初の数週間はうまくいく。だが規模が大きくなるにつれて、次の3つの事故がほぼ確実に起きる。

事故1: 読まれない

ファイルが数百行、数千行に膨れ上がると、コンテキストウィンドウの中でその情報が占める割合が大きくなる。 すべての情報が同じ重みで並んでいると、モデルにとって「今の作業に関係が深い情報」と「関係が薄い情報」の 区別がつきにくくなる。書いてあるのに、実際の応答には反映されない——という現象が起き始める。

事故2: 矛盾する

同じ論点について、3週間前に書いた結論と、先週書いた結論が食い違っていることがある。状況が変わって 方針を変えたのに、古い記述を消し忘れる。一つのファイルに時系列で追記し続けると、この矛盾は自然に蓄積する。 厄介なのは、矛盾していること自体に、書いている本人もなかなか気づけない点だ。ファイルの前半と後半を 見比べる作業を、誰も日常的にはやらないからである。

事故3: 膨張して埋もれる

恒久的なルール(「このプロジェクトでは○○という命名規則を使う」)と、一時的な進行状況(「今このタスクの 途中まで終わっている」)と、過去の学び(「以前この方法を試して失敗した」)が、すべて同じファイルの 同じ階層に並ぶと、本当に重要な恒久ルールが、日々増えていく進行状況のログに埋もれていく。結果として、 一番参照してほしい情報ほど見つけにくくなるという逆転が起きる。

この3つに共通する原因は一つだ。「何でも1つのファイルに書けば記憶になる」という発想そのものが、 情報の性質の違いを無視していることである。恒久的に変わらない情報と、日々更新される進行状況と、 過去の失敗から得た教訓は、更新される頻度も、参照されるべきタイミングも、扱われ方も本来まったく異なる。 それらを1つのファイルに混在させたまま量だけ増やしていけば、遅かれ早かれこの3つの事故のどれかに行き着く。

さらに厄介なのは、この3つの事故が独立して起きるのではなく、互いを悪化させる方向に作用することだ。 矛盾した記述(事故2)を消さずに残すと、ファイルはその分だけ膨張する(事故3)。膨張したファイルの中では、 個々の記述が相対的に読まれにくくなる(事故1)。一度この悪循環に入ると、「とりあえず書き足す」という 対症療法では収まらなくなり、ファイルを開くこと自体が億劫になっていく。運用が破綻するプロジェクトの多くは、 この悪循環に気づかないまま、書く量だけを増やし続けた結果として起きている。

本書が扱うのは、この3つの事故を避けるための分割設計と、書き方・読み方の手順そのものである。とはいえ、 それは「1つのファイルではなく複数のファイルに分ければ解決する」という単純な話でもない。分割の軸を どこに置くか、どのファイルを何のタイミングで更新するか、更新した情報同士の矛盾をどう検出するかまで 含めて設計しないと、ファイルが増えただけで同じ事故が形を変えて再発する。

第3節 本書が扱う範囲と扱わない範囲(単一プロジェクトの知識管理。マルチユーザーの共有知識ベースは対象外)

期待値を先にそろえておく。「求めていたものと違った」という結果は、書き手と読み手の双方にとって 一番の損失だからだ。

扱うこと

扱わないこと

前提とする読者

Claude Code(または類似の CLI 型 AI コーディングツール)を日常的に使っていて、Markdown を読み書きでき、 セッションをまたぐと文脈が消えることに不便さを感じている個人開発者・副業エンジニアを想定する。 チーム運用や大規模な組織導入は想定しない。

次章では、この3つの事故を避けるために、CLAUDE.md をどういう軸で分割するかという設計そのものに入っていく。

この続き(第2章〜第7章・付録A・B)

CLAUDE.md の分割設計、Ingest プロトコル、Lint プロトコル、記憶を腐らせない運用、hooks / サブエージェントによる 自動化、そしてそのまま使えるテンプレート集は、有料版で読めます。

書籍の詳細・購入ページを見る

特定商取引法に基づく表記 ・ プライバシーポリシー