AI が書いたコードに「なぜそうなったか」の記録はあるか — git-memento と AI コード追跡の新標準

@SatoshiSsSs 氏が X で投稿した、git-memento に関する解説が注目を集めています。

AIが書いたコードに「なぜそうなったか」の記録はあるか? Hacker News(HN)で議論になっている git-memento を読み解く

Hacker News での議論では、AI が生成したコードのセッション履歴をコミットに紐づけるべきか否かが活発に議論されています。AI コーディングの普及とともに、「コードは動くが、なぜその実装になったのか誰も分からない」という問題が深刻化しています。本記事では、この問題の構造と、git-memento をはじめとする解決策の技術的な仕組みを掘り下げます。

問題 — AI が書いたコードの「なぜ」が消えている

Vibe Coding 時代の追跡可能性の危機

2026 年、AI コーディングツール(Claude Code、Cursor、GitHub Copilot など)でコードを書くことが日常になりました。しかし、AI が生成したコードには構造的な問題があります。

従来の開発:
  開発者が考える → コードを書く → コミットメッセージに意図を記録
  → 「なぜそうしたか」は開発者の頭の中 + コミット履歴にある

AI 駆動開発:
  開発者が指示する → AI が考える → AI がコードを書く → コミット
  → 「なぜそうなったか」は AI セッションの中に閉じている
  → セッションが終わると消える

CodeRabbit の分析(2025 年 12 月)によると、AI と共著されたコードは人間が書いたコードと比較して、ロジックエラーが 75% 多く、セキュリティ脆弱性が 2.74 倍多いとされています。問題が発見されたとき、「なぜこの実装になったのか」を遡れなければ、修正の方針すら立てられません。

3 つの「消える記録」

消える記録影響
意思決定の経緯なぜライブラリ A ではなく B を選んだのか分からない
却下された選択肢検討して却下したアプローチを後任が再び検討する無駄
AI の推論プロセスAI がどのような前提で実装したかが不明、バグの原因特定が困難

git-memento — AI セッションを Git に紐づける

インストール

git-memento は Git の拡張ツールです。git notes は Git に標準搭載されていますが、git-memento は別途インストールが必要です。

ワンライナーインストール(推奨):

1
curl -fsSL https://raw.githubusercontent.com/mandel-macaque/memento/main/install.sh | sh

ソースからビルド(.NET SDK 10 が必要):

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# macOS (Apple Silicon)
dotnet publish src/GitMemento.Cli/GitMemento.Cli.fsproj \
  -c Release -r osx-arm64 -p:PublishAot=true

# Linux
dotnet publish src/GitMemento.Cli/GitMemento.Cli.fsproj \
  -c Release -r linux-x64 -p:PublishAot=true

# Windows
dotnet publish src/GitMemento.Cli/GitMemento.Cli.fsproj \
  -c Release -r win-x64 -p:PublishAot=true

ビルド後、生成された実行ファイルを PATH の通ったディレクトリに git-memento として配置します。NativeAOT コンパイルにより、ランタイム依存なしの単一バイナリとして動作します。

初期設定(リポジトリごとに実行):

1
2
3
4
5
# Claude Code を使う場合
git memento init claude

# Codex を使う場合
git memento init codex

環境変数でプロバイダを切り替えることもできます。

1
2
export MEMENTO_AI_PROVIDER=claude      # claude または codex
export MEMENTO_CLAUDE_BIN=claude       # Claude Code のコマンド名

init コマンドは .git/config に設定を永続化するため、環境変数の設定は初回のみで十分です。

仕組み

git-memento は、AI コーディングセッションの会話ログを Git Notes としてコミットに紐づける Git 拡張ツールです。

開発者が AI と会話しながらコードを書く
    ↓
git memento commit <session-id> -m "機能追加"
    ↓
1. AI プロバイダからセッション履歴を取得
2. Markdown に整形
3. git notes としてコミットに添付
    ↓
通常のコミット履歴はクリーンなまま
AI セッションの全記録が notes に保存される

重要なのは、Git Notes を使っている点です。通常のコミットメッセージやファイルツリーを汚さず、メタデータとして会話ログを保持します。

Git Notes とは

Git Notes は、コミットオブジェクトに対して後から追加できるメタデータです。コミットハッシュを変更せずに情報を添付できるため、履歴の改変なしに補足情報を記録できます。

1
2
3
4
5
6
7
8
# 通常の git notes の使い方
git notes add -m "この実装は性能テストの結果に基づく" HEAD

# notes を確認
git log --show-notes

# git-memento では自動的に notes が添付される
git memento commit abc123 -m "認証機能を追加"

git-memento は 2 つの notes ref を使い分けます。

ref内容
refs/notes/commits要約またはセッション全文(通常の git log で表示)
refs/notes/memento-full-audit完全な監査記録(詳細な調査時に参照)

主要コマンド

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 初期設定(Claude Code の場合)
git memento init claude

# AI セッション付きコミット
git memento commit <session-id> -m "機能追加"

# AI による要約を自動生成
git memento commit <session-id> --summary-skill default -m "機能追加"

# notes をリモートに共有
git memento share-notes

# 監査(どのコミットに AI セッションが紐づいているか確認)
git memento audit --range main..HEAD

CI/CD 統合

git-memento は GitHub Actions との統合も提供しています。

モード用途
commentセッション notes をコミットコメントとして投稿
gatenotes のカバレッジを CI チェックとして強制
merge-carryPR のコミットからマージコミットへ notes を転送

gate モードは特に注目に値します。「AI が書いたコードには必ずセッション記録を添付せよ」というポリシーを CI で強制できます。

競合ツールと標準化の動き

git-memento だけでなく、AI コードの追跡は 2026 年のホットトピックです。

Git AI

Git AI は、AI が書いた行を行単位で追跡するツールです。

Git AI のアプローチ:
  1. 開発中にチェックポイント(ローカルスナップショット)を記録
  2. コミット時にチェックポイントを Authorship Log に集約
  3. Authorship Log を Git Notes としてコミットに添付

git-memento が「会話ログの保存」に焦点を当てるのに対し、Git AI は「どの行を AI が書いたか」の行レベルの帰属追跡を行います。Cursor、Claude Code、GitHub Copilot、Gemini など主要なコーディングエージェントに対応しています。

特筆すべき機能として、リベース・マージ・スカッシュ・チェリーピックなど Git の履歴操作を透過的に処理し、Authorship Log を自動的に書き換えます。

Agent Trace

Agent Trace は、AI 生成コードを追跡するためのオープンな仕様(フォーマット標準)です。

1
2
3
4
5
6
7
8
9
{
  "version": "1.0",
  "timestamp": "2026-03-03T10:00:00Z",
  "file": "src/auth.py",
  "line_range": {"start": 15, "end": 42},
  "contributor_type": "ai",
  "model_id": "anthropic/claude-opus-4-5-20251101",
  "conversation_url": "https://..."
}

ツール固有のフォーマットではなく、ベンダー中立の標準仕様を定義することで、異なるツール間での相互運用性を目指しています。

ツール比較

ツールアプローチ追跡粒度保存先
git-memento会話ログの保存セッション単位Git Notes
Git AI行レベルの帰属追跡行単位Git Notes (Authorship Log)
Agent Trace標準フォーマット定義ファイル・行単位実装者に委任

Hacker News での議論 — 賛否両論

賛成派の論点

将来のメンテナーへの価値: 「会話履歴にアクセスできれば、なぜコードがそのように書かれたかを逆引きできる。これは素晴らしいコンテキストだ」

却下された選択肢の記録: プロジェクトの計画ファイル(project.mdplan.md)をコードと一緒にコミットすることで、「何が作られたか」だけでなく「何が検討され、却下されたか」を将来のモデルが理解できるという意見。

反対派の論点

ノイズの問題: AI セッションの全文には「大量のノイズ、誤った実装、レッドヘリング(誤った手がかり)」が含まれ、有意義な情報が埋もれるという批判。セッションをそのまま保存するのではなく、蒸留されたコミットメッセージやドキュメントに加工すべきだという主張。

実用上の懸念:

  • モデルは頻繁に変わり、非決定的(同じ入力でも異なる出力)
  • コンテキスト肥大が将来の AI タスクのパフォーマンスを低下させる
  • 蓄積された Markdown ファイルによるリポジトリの肥大化

折衷案 — ADR としての蒸留

議論の中で浮上した折衷案が、AI セッションを Architecture Decision Record(ADR) に蒸留するアプローチです。

ADR は、アーキテクチャ上の意思決定を構造化して記録するドキュメントです。以下の要素で構成されます。

要素内容
Context決定の背景・状況
Decision何を決めたか
Consequences予想される影響
Status採用/却下/保留

AI セッションの生ログをそのまま保存するのではなく、AI に「このセッションの意思決定を ADR 形式でまとめて」と指示し、構造化された記録だけを残すアプローチです。git-memento の --summary-skill オプションはまさにこの用途に対応しています。

なぜ今この問題が重要か

コンプライアンスとガバナンス

企業の AI 利用が拡大するにつれ、「AI が書いたコードの監査可能性」が法的・規制的な要件になりつつあります。

業界要件
金融AI が生成したアルゴリズムの説明可能性
医療ソフトウェア医療機器(SaMD)の開発プロセス追跡
自動車機能安全規格(ISO 26262)における開発記録
全業界EU AI Act によるリスクレベルに応じた文書化義務

git-memento の gate モードのように、CI パイプラインで「AI セッション記録の添付」を強制できる仕組みは、こうしたコンプライアンス要件への対応策になります。

チーム開発での知識共有

AI コーディングは本質的に「個人と AI の対話」です。チームメンバーが同じリポジトリで AI を使って開発する場合、各自の AI セッションは他のメンバーからは見えません。

開発者 A: Claude Code で認証機能を実装
  → セッション: 「JWT vs セッションを検討し、JWT を採用」
  → コミットメッセージ: 「認証機能を追加」
  → セッションを閉じる → 検討過程が消える

開発者 B: 3 ヶ月後に認証機能を改修
  → 「なぜ JWT なんだろう?セッションの方がよくないか?」
  → 同じ検討を最初からやり直す

AI セッションがコミットに紐づいていれば、開発者 B は git notes show で A の検討過程を確認でき、同じ議論の繰り返しを避けられます。

まとめ

  • AI コードの「なぜ」が消えている: AI が書いたコードは動くが、なぜその実装になったかの記録がセッション終了とともに失われる
  • git-memento は Git Notes で解決する: AI セッションの会話ログを Git Notes としてコミットに紐づけ、履歴を汚さずに記録を保持する
  • 行レベルの追跡も進化中: Git AI は Authorship Log で「どの行を AI が書いたか」を行単位で追跡し、リベースやマージにも対応する
  • 標準化が始まっている: Agent Trace のようなベンダー中立の仕様が登場し、ツール間の相互運用性が模索されている
  • 生ログ vs 蒸留の議論: HN では全セッション保存(ノイズが多い)vs ADR 形式への蒸留(構造化された記録)で議論が分かれている
  • コンプライアンス要件の高まり: EU AI Act や業界規制により、AI 生成コードの監査可能性が法的要件になりつつある
  • CI での強制が現実解: git-memento の gate モードのように、AI セッション記録の添付を CI パイプラインで強制する仕組みが実用的

参考