Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】A Project Needs Two Memories—But Only One Should Travel With Git

2026年10月05日に「Dev.to」が公開したITニュース「A Project Needs Two Memories—But Only One Should Travel With Git」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

プロジェクトで扱う情報は「作業中のローカルなメモ」と「チームで共有する永続的な知識」の二種類に分けるべきだ。ローカルな情報はGitで管理せず、レビュー済みで共有すべき情報だけをGitに含めることで、プライバシーを守りつつ、チームの共有知識を明確に管理できる。

ITニュース解説

プロジェクトを進める上で、さまざまな情報や「記憶」が生まれる。例えば、システムを動かす上での細かい設定、開発中に気づいた一時的な制約、チーム全体で共有すべき重要な決定事項など、多種多様な情報だ。これらの情報は、プロジェクトの進行に不可欠なものだが、すべてを同じように扱うと問題が生じることがある。具体的には、個人的な作業に関する情報が誤ってチーム全体に共有されてしまったり、逆に重要な決定事項が特定の開発者のパソコンの中に閉じ込められてしまい、他のメンバーには伝わらなくなったりする状況だ。

このような課題を解決するために、「Agent Project Context」(APX)と「Agent Project Contract」(APC)という二つの異なる役割を持つ「記憶」の仕組みが提案されている。これらの仕組みは、情報をその性質に応じて適切に管理することで、プロジェクトをよりスムーズに進めることを目指す。基本的な考え方はシンプルで、新しく発見されたりメモされたりした情報は、まずAPXによってローカルに保管され、その後、レビューされてチーム全体で共有すべきだと判断された情報だけがAPCへと昇格されるというものだ。

まず、「ローカルに留まる記憶」、つまりAPXが管理する情報について説明する。APXは、開発者のパソコンの内部、具体的にはリポジトリとは別の場所で、一時的なプロジェクトの記憶を保持する。これは、日々の開発作業やシステム運用中に得られる情報、例えば同僚との会話から得たメモ、特定のタスクを進める上で一時的に必要となる制約、あるいは将来プロジェクトのコードをコピーする(クローンする)すべてのメンバーに知られる必要がない詳細な情報などを保存するのに適している。

APXがこれらの情報をリポジトリとは別の場所に保持することには、明確な意図がある。自動的に記録されたメモの中には、チャットのやり取りや一時的な作業セッションで得られた情報が含まれることがある。もし、これらの情報をすぐにコードのリポジトリにコミットしてしまうと、その情報は永続的に残り、チーム全体に共有され、後から取り消すことが非常に難しくなる。しかし、APXのようなローカルの記憶として保持することで、開発者はその情報を日々の作業の中で活用できると同時に、それが自動的にプロジェクト全体の正式な方針やルールになってしまうのを防げる。例えば、ある開発者が、自分が担当しているタスクが特定のローカルサービスの設定に依存していることをAPXに記録したとする。この情報は、次にその開発者が同じパソコンで作業を再開する際に役立つかもしれないが、プロジェクトに参加するすべてのメンバーがそのローカル設定を継承すべきだという意味ではない。このように、APXは、一時的で個人的な、しかし作業には有用な情報を柔軟に管理する役割を担う。

次に、「Gitで共有される記憶」、つまりAPCが管理する情報について説明する。APCは、プロジェクトのリポジトリ内に存在する「.apc/memory.md」というファイルに、チーム全体にとって安全で、かつ厳選されたプロジェクトの事実を記録する。このファイルはリポジトリに存在するため、Gitのバージョン管理システムを通じて、プロジェクトのクローン(コピー)が行われる際や、コードの変更がレビューされる際、また過去の履歴をたどる際に、チーム全体に確実に共有される。これは、一時的な作業セッションを超えて長期的に残るべき重要な決定事項、例えばシステムの設計における重要な境界線、チーム内で守るべき永続的な開発ルール、あるいは確認された運用上の重要な制約などを記録するのに非常に適している。

APCにおける情報の追加には、作成者による厳格な判断が伴うことが重要だ。APXが新しく収集した一時的な実行時メモは、自動的にAPCファイルに書き込む許可とは見なされない。必ず人間がその事実をレビューし、それがプロジェクト全体の契約、つまりチームで共有すべき正式な情報として適切かどうかを判断する。APXとAPCの両方の情報を表示できるインターフェースがあったとしても、それぞれの情報が持つ信頼レベルや重要度が異なるという事実は変わらない。

このように二つの記憶を使い分けることで、日々の開発作業は大きく改善される。もしすべての情報を一つの場所に記録しようとすると、その情報は共有するには個人的すぎるか、または安易にコミットされてしまうかのどちらかになりがちだ。しかし、二つの記憶を使い分ける設計により、それぞれの情報はまず適切な場所(APX)に安全に保管される。 具体的な流れとしては、まずAPXを使って作業中のコンテキスト(状況や情報)をローカルに記録する。その情報は、開発者のパソコンで作業している間は継続して利用する。そして、その情報がプロジェクトにとって永続的であるべきか、そしてチーム全体で共有しても安全かを慎重にレビューする。最終的に、レビューを通過した、より小さな情報の集合だけが「.apc/memory.md」ファイルへと昇格され、チーム全体で共有される。

このアプローチは、APCが「ポータブル」(持ち運び可能、共有可能)であることを保証する。新しい開発者がプロジェクトのコードをクローンした場合、彼らが受け取るのは、プロジェクトを理解し、作業を進める上で本当に必要な決定事項であり、他の開発者の個人的な会話のメモや、特定のパソコンにしか関係しない残り物ではない。一方で、APXは、短命で一時的な運用上の情報をローカルに保持し続けることで、開発者の日々の作業を効率的にサポートする。

この考え方の本質は、ローカルに記録されるメモが、共有される情報よりも価値が低いということではない。そうではなく、それらの情報が異なる読み手や、異なる寿命を持つ知識であるという点だ。APCはチーム全体で共有されるコンテキストを明確にし、APXは日々の作業に必要なコンテキストを、Gitで管理される正式な成果物と混同することなく利用可能にする。どちらの記憶も重要だが、チームで共有する情報は慎重に選び、意識的に昇格させることが重要だ。

関連コンテンツ

関連IT用語