Claude Code が足す長いコメントは、読みやすさの保険に見えて、実際にはコンテキストを食い、レビュー負荷を上げることが多いです。公式のベストプラクティスは、コンテキストが埋まるほど性能が落ちると明記しています。コミュニティの報告では、CLAUDE.md や memory を書いても冗長コメントが止まらないケースが続いています。この記事では、「有用か」だけでなく「置き場所として正しいか」で切る基準と、禁止リスト・計測・フック・diff レビューまで含めた運用手順を整理します。

📑目次
  1. サマリー:問題・症状・判断軸
  2. 長いコメントが「役に立たない」と分かる根拠
  3. 比率は下がっても長いブロックが残る理由
  4. WHYのみ・置き場所で切るコメント基準
  5. 導入チェックリスト:ルール・フック・レビュー観点
  6. 筆者の観点
  7. よくある質問(FAQ)
  8. まとめ

サマリー:問題・症状・判断軸

まず全体像です。長いコメント問題は「丁寧さ不足」ではなく、出力の置き場所と計測の設計問題として扱う方が実務に効きます。

判断の全体像

観点 要点 実務での含意
問題 長いコメントは AI 読解を助けず context を圧迫する 公式 best practices の context 制約と同型
現場症状 デフォルトで冗長、ルール文章だけでは半減しきれない GitHub #65961、unrequested comment rewrite
計測の落とし穴 比率は下がっても長いブロックは残る ブロック数・最大行数を必須指標にする
判断軸 有用か → 置き場所か(WHY / 履歴は git・PR) 禁止リスト型のルールが効く
実行手段 禁止リスト、hooks、diff レビュー、密度 lint 文章ルール単体で終わらせない

出典(2026年8月時点):

対象読者は、Claude Code やコーディングエージェントを日常利用し、PR のコメントノイズと context 劣化を抑えたい開発者・テックリードです。


長いコメントが「役に立たない」と分かる根拠

結論から言うと、長い説明コメントは理解補助ではなく出力癖になりやすく、限られたコンテキストをコードから奪います。

公式が示すコンテキスト制約

Claude Code の公式ベストプラクティス(日本語) は、コンテキストウィンドウが会話・読んだファイル・コマンド出力で急速に埋まり、満杯に近いほど性能が落ちると説明しています。

同じ文書は CLAUDE.md についても、コードから推測できない指示だけを短く残し、肥大すると重要ルールがノイズに埋もれて無視されると警告しています。

コードコメント専用の章ではない一方で、「AI 向けの長い文章が増えるほど効きが落ちる」という制約は、コード内コメントにもそのまま当てはまります。

現場報告(GitHub #65961)

現場側の証拠も揃っています。anthropics/claude-code の Issue #65961 は、次を報告しています。

  • デフォルトで冗長なコードコメントが付き、隣接コードの自明な言い換えが多い
  • CLAUDE.md の必須ルールや memory でも確実には止まらない

追記では、複雑な非自明箇所だけに絞るべき、チャット経緯や plan phase の参照をコードに残すべきでない、といった運用上の指摘が続いています。

Claude Code の冗長コメント問題を報告する GitHub issue #65961 の画面
GitHub issue #65961。冗長コメントがデフォルトで残り、ルールだけでは止まりにくいと報告されている

出典

依頼なき書き換え(verbose comment replacement)

独立記事の explainx.ai は、短い精密なコメントが依頼なく長段落に置き換わる verbose comment replacement を失敗モードとして切り出しています。

同記事は「unrequested comment rewrites を diff で確認せよ」とチェックリスト化しています。依頼していない書き換えは、機能差分より目立ちにくく、レビューで見逃しやすい点に注意が必要です。

verbose comment replacement を失敗モードとして整理した explainx.ai の記事画面
explainx.ai が整理した verbose comment replacement。依頼のないコメント書き換えを diff レビュー項目に含めている

出典

計測元の実感

UZU Tech の Zenn 記事 では、Claude 自身に「長いコメントは助かっているか」を確認したところ、「助かっていない。邪魔が多い」という趣旨の回答だったと報告されています。

自信がない箇所ほど言葉で埋める傾向があり、分量そのものが不確実さの指標になり得る、という読み方も実務では有用です。

要するに、長いコメントは「説明が厚いほど安全」ではなく、「限られた context と人間の注意を奪うコスト」として扱う方が妥当です。


比率は下がっても長いブロックが残る理由

「コードから復元できない情報だけ書け」というルールは有効です。ただし、それだけでは長いブロックは消えません。

実測で見えるギャップ

UZU Tech の計測(PR 27件、自動生成除外)では、ルール導入後に次の変化が報告されています。

  • 追加コメント比率: 21.1% → 8.8%
  • 4行以上の連続ブロック: 52 → 50(ほぼ不変)
  • ブロック最大行数: 17 → 18

比率だけ見ると改善に見えます。一方で、レビュー中にスクロールを止める十数行ブロックの数はほぼ減っていません。最大18行の例は、クライアント実装依存・ライブラリ内部仕様・OOMKill 経緯など、いずれも「コードから復元不能」に該当する情報を含んでいたため、有用性ルールでは1行も消せなかった、と説明されています。

追うべき3指標

ここが計測設計の要点です。コメント比率は散発 WHAT コメントの削減を拾えますが、長い WHY ブロックや長い説明段落の体感負荷は拾いにくい。

チーム指標には、少なくとも次をセットで入れます。

  1. 追加行に対するコメント比率
  2. 4行以上の連続コメントブロック数
  3. 最大連続コメント行数

コミュニティ側でも同型の指摘があります。#65961 の議論では、全行説明は不要で非自明制約に絞るべき、変更履歴型コメントや phase バナーはコードベースに残すべきでない、といった運用ルールが共有されています。比率改善を「効いた」と即断せず、次スプリントでブロック数を再集計する方が安全です。


WHYのみ・置き場所で切るコメント基準

判断軸を「有用か」から「そこが正しい置き場所か」へ移します。コードコメントに残すのは、非自明な WHY だけです。

書いてよいもの(WHY)

  • 隠れた制約や workaround の理由
  • 外部仕様、ハードウェア、upstream issue など耐久性のある原因
  • 読み手が驚く挙動、units / boundary / nil の意味、ownership、invariant

書かないもの(禁止リスト)

  • WHAT(コードを読めば分かる実況)
  • 変更履歴(「旧実装では」「〜を追加した」「NEW / UPDATED / FIXED」)
  • タスク ID だけの参照(必要な内容は本文に直書きする)
  • チャット履歴や plan mode の phase バナー

置き場所の対応表

情報の種類 コードコメント より良い置き場所
非自明な WHY・制約 ○ 短く残す
WHAT 実況 × コード自体
変更履歴・移行経緯 × git log / PR 説明
タスク ID のみ × issue(必要内容はコメントへ昇格)
チャット / phase メモ × セッションログ(永続化しない)
長い手順・ドメイン知識 ×(CLAUDE.md 肥大化) skills / 条件付き rules

この節の出典

CLAUDE.md への写像

CLAUDE.md への写像も同じ軸です。Qiita の整理 は、「これを削除すると Claude がミスするか?」を1行テストにし、推測不能な Bash・固有決定・落とし穴だけを残すよう勧めています。

公式の memory docs は、各 CLAUDE.md を200行未満に保ち、長い手順は skills や path-scoped rules へ移すよう勧めています。CLAUDE.md はコンテキストに読み込まれる指示であり、ハードな強制設定ではありません。コメント生成を確実に止める境界が必要なら、PreToolUse hook などの検査・拒否を使います。コメント規約と CLAUDE.md 規約は別物ではなく、同じ keep/drop テストで管理できます。

公開実装例(禁止語の固定)

公開実装例として、KyleOndy の Claude Code skill は次を明文化しています。

  • デフォルト no comments
  • 状態を述べ、遷移を述べない
  • 制約は編集経緯ではなく durable cause

禁止リストを文章の雰囲気ではなく、具体語(NEW: / no longer / phase banner など)で固定すると、エージェントが守りやすくなります。


導入チェックリスト:ルール・フック・レビュー観点

文章ルールだけでは不十分です。禁止リスト、計測、自動フック、diff レビューをセットにします。

ルールと自動化

  1. グローバルまたはリポジトリの CLAUDE.md に、「WHY のみ / WHAT・履歴・タスクID禁止」を名指しで書く。表形式の曖昧な方針より、禁止語リストを優先する。
  2. 実際に出た違反(履歴コメント、phase 参照、丁寧な長段落置換)を項目として追記する。
  3. PostToolUse などで comment density lint を入れる。言語別 ceiling を超えたら削除パスを再実行する。書いたモデルに「多すぎ?」と聞く正当化ループは避ける(KyleOndy が #61305 を踏まえて注意している点)。
  4. /code:comments 相当の cleanup を用意する。Pass1 で叙述削除、Pass2 で編集叙述を現在理由へ変換、Pass3 で欠落 WHY のみ追加。実行コード変更は revert する。

計測と人間レビュー

  1. PR マージ前後で測る。コメント比率に加え、4行以上ブロック数最大行数を必須にする。
  2. 人間レビューの観点に、unrequested comment rewrites を入れる(explainx のチェックリスト)。
  3. 不確実さはコメント分量で隠さず、PR description や回答本文で「未確認」と明示する。

採用時の注意

ルール追加直後の体感判断は誤りやすいです。比率が下がってもブロック数が残るなら、レビュー負荷はほぼ変わっていない可能性があります。

次のスプリントで同じ指標を再集計し、禁止リストの穴(新しい定型句)だけを更新する運用が現実的です。


筆者の観点

著者本人の個別運用ログは本記事では使いません。公開ソースから見える実務判断だけを整理します。

  • 「丁寧なコメントが多い PR」を品質の代理指標にしない。context 消費とレビュー停止時間の方が先に効く。
  • ルール文章の追加だけで安心しない。禁止リスト、密度フック、ブロック数計測、diff 観点の4点が揃って初めて再現性が出る。
  • CLAUDE.md とコードコメントは別問題に見えて、keep/drop テストは同じ。片方だけ痩せていても、もう片方が肥大すれば同じ失敗が起きる。
  • 長い WHY が本当に必要なら残してよい。消すべきなのは、履歴・実況・依頼されていない言い換えである。

よくある質問(FAQ)

Q1. CLAUDE.md に「コメントを減らして」と書けば十分ですか?

不十分なことが多いです。#65961 は、必須ルールや memory でも冗長コメントが続くと報告しています。

禁止リスト、hooks、計測をセットにしてください。

Q2. 「コードから復元できない情報」ルールだけでもよいですか?

比率は下がっても、長い有用ブロックは残り得ます(UZU 計測では 52→50)。

置き場所基準と履歴禁止を追加してください。

Q3. 公式ドキュメントはコードコメントについて何と言っていますか?

コードコメント専用の章ではありません。公式の memory docs は、コンテキストを圧迫する長文を避け、各 CLAUDE.md を200行未満にし、長い手順を skills や path-scoped rules へ分けるよう説明しています。これは行動の助言であり、強制には PreToolUse hook など別の制御が必要です。

AI 向け長文全般に適用できます。

Q4. レビューでどこを見ればよいですか?

次を重点的に見ます。

  • 依頼していない comment rewrite
  • chat/phase 参照
  • NEW/旧実装叙述
  • タスクIDだけの行

explainx の diff チェックと #65961 の追記が観点になります。

Q5. 計測はどの数字を追うべきですか?

コメント比率に加え、4行以上ブロック数と最大連続行数です。

比率だけだと体感改善を取り違えます。


関連記事:

まとめ

  • 長い AI コメントは丁寧さの証拠ではなく、context とレビューを削るコストになりやすい。
  • 公式は context 劣化と over-specified 指示の失敗を警告し、コミュニティはデフォルト冗長と rules 無効化を継続報告している。
  • 有用性ルールだけでは長いブロックは消えない。置き場所(WHY vs git/PR)と禁止リストで切る。
  • 導入はルール文章で終わらせず、density hook・cleanup・ブロック数計測・diff レビューまでセットにする。

次アクション

  1. 今週マージする PR で、コメント比率・4行以上ブロック数・最大行数のベースラインを取る。
  2. CLAUDE.md に WHY のみ/禁止リストを1節で固定する。
  3. 1週間後に同じ3指標で再計測し、残った定型句だけ禁止リストへ追加する。
krona23

著者

krona23

IT業界20年以上の実務経験を持ち、日本国内有数のPVを誇る大規模Webサービスで事業部長・CTOを複数社で歴任。Windows/iOS/Android/Webと技術の変遷を経験し、現在はAIネイティブへの変革に注力。DevGENTでは、AIコードエディタ・自動化ツール・LLMの実践的な使い方を日英西3言語で発信中。

DevGENT について →

コメントを残す

Trending

DevGENTをもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む