html comments leak
テンプレートのHTMLコメントと内部メモが、公開ページに混入した記録
コードの中に説明を書くのは普通のことです。ところが、ページを書き出すテンプレートの文字列の中に書いた説明は、書き方によってはそのまま公開ページに出ます。しかもGSCの数字には現れません。この面は、2026年8月から9月に実際に見つけた混入の型、検索結果のスニペットで気づいた経緯、全ページを走査して見つける手順を書いた記録です。具体的な中身(お客様に関わる記述など)は書きません。
このサイトはAnthropicの公式サイトではありません。Claude Codeの機能・料金・提供範囲は変わる可能性があるため、重要な判断の前には公式のドキュメントと自分のアカウント設定を確認してください。
先に結論:説明は「出力されない側」に書く
| 書き方 | 公開ページに出るか | 備考 |
|---|---|---|
| JavaScriptの行コメント(行頭のスラッシュ2つ)をテンプレート文字列の外に書く | 出ない | 説明はここに書く |
| 行コメントをテンプレート文字列の中に書く | 出る(本文の文字になる) | 文字列の中では、コメントではなくただの文字 |
| HTMLコメント(山括弧と感嘆符とハイフン2つ)をテンプレート文字列の中に書く | 出る(ソースに残る) | 画面に見えなくても、取得すれば読める |
残してよいのは、機能的な目印だけです(計測タグの設置の目印、フォームの差し込み位置の短い名前など)。場所を示したいなら短い名前にして、中身の説明は行コメントの側へ移します。
検査の手順
- サイトマップの全URLと、サイトマップに無いnoindexページを取得する。トップだけ見ると漏れます。この実測では、3件のうち2件がトップ以外で、1件はnoindexかつサイトマップ対象外でした。
- 各ページのHTMLコメントを全部拾う。script、style、headを除いた本文と、コメントの中を別々に見ます。
- 40字を超えるコメント、または内部の語彙を含むコメントを出す。内部の語彙とは、記号の星、記憶ファイルへの参照の記法、台帳、ツール名、他のサイト名などです。
- 本文には、運用の語彙(検索の管理画面、検索意図、候補として受けています、優先しつつ、被リンク、CTR、順位)が出ていないかを探す。ただし、解説サイトでは正当な話題なので、語彙だけで判定せず、「読者に向かって書く理由が無い文」かで区別します。
- 直した後は本番を全数で走査して0件を確認する。リポジトリの検索では足りません(本番と手元が乖離していることがあります。手元が本番より古いときも参照)。
- 生成元から直す。本番だけ直すと、次のビルドで戻る。
「実装は変えていない」は主張ではなく比較で示します。本番と手元を、HTMLコメントだけ除いて突き合わせ、一致することを機械で確かめます。サーバー側が配信時に差し込む仕様のコメントだけが差分に出るのが正常です。
実際に起きた記録
2026年8月27日:検索結果のスニペットで気づいた
ある催しのページの、実際の検索結果を見に行ったところ、スニペットがこうなっていました。内部のSEO運用メモ(どの催しを優先し、どれを予定候補として受けているか)が本文の一節としてそのまま入り、他の催しの優先順位まで公開されていました。GSCの数字では絶対に出ません。順位もCTRも「低いページ」にしか見えず、説明文を読んでも見つかりません。Googleが拾ったのは説明文ではなく本文の一節で、しかも「予定候補を確認する」という見出しの直下という、一見まともな位置にありました。保存していたのは題・説明・見出しだけで、原理的に検出できませんでした。
見つけた後の手順は3つです。同じ雛形を使った他ページを探す(4ファイルに同じ形がありました)。本番を全数で走査する(サイトマップの234本を実際に取りました)。手元のリポジトリにも残っていないか見る。道具化し、本番を実際に取得して本文を走査する仕組みにしました。
2026年8月28日:行コメントが本文に出た
テンプレート文字列の中に、行頭がスラッシュ2つの判断メモを書いたところ、HTMLの本文にそのまま出ました。2つのページに同じ文が入り、重複の一致率が44.3%から54.7%に上がって初めて気づきました。判断の記録はテンプレート文字列の外に書き、ビルドの自己検査に「本文内の、直後にスラッシュ2つが8文字以上続くもの」「TODO」「日付つきの記号」を入れて止めるようにしました。
2026年9月19日:HTMLコメントが3件、公開されていた
あるサイトの全28URLを実測したところ、3件が見つかりました。97字のもの(記憶ファイル名まで露出)、76字のもの(ユーザー指示の内容)、123字のもの(お客様個人の行動に関わる記述)です。後者はnoindexでサイトマップ対象外のページにあり、「1件」と報告されて1件だけ直すと2件残るところでした。お客様個人の行動は、行コメントにも書きません。公開はされなくても、リポジトリには残るからです。経緯は記憶(作業記録)にだけ置きます。
逆向きの注意もあります。他社の公式ページを読むときは、先にHTMLコメントを消します。ある公式の特典ページは、コメントで隠した古い枠が大量に残っていて、そのまま抽出すると古い内容を拾いました。コメントは書く側だけの問題ではありません。
生成元から混入が広がる経路は生成元を写して作った新サイトに残るものにもまとめています。
混入を防ぐ仕組みにする
見つけて直すだけでは、次のサイトで同じことが起きます。ビルドの自己検査に入れました。
- ビルドの出力に対して、40字を超えるHTMLコメントがあれば止める。
- 記号の星、台帳、記憶ファイルへの参照、ツール名がコメントや本文にあれば止める。
- 本文要素の中に、行頭がスラッシュ2つの行が8文字以上続くものがあれば止める。
- 止めた理由を、ビルドのログに「どのページの何文字目」まで出す。
止める検査は、誤検出で止まりすぎると外されます。運用を解説するサイトには正当な運用の語彙が出るので、規則をサイトの種類で分けておくのが長持ちするコツでした。
よくある質問
HTMLコメントは検索結果に出ますか。
コメントそのものが出るとは限りませんが、ソースは誰でも読めます。検索結果に出た実例は、コメントではなく本文に入った内部メモでした。どちらも公開前に走査して確かめます。
GSCで混入を見つけることはできますか。
できません。順位やCTRの数字には原因が現れません。実際の検索結果の表示を見ることと、本番を取得して本文とコメントを走査することで見つかります。
走査で誤検出が多いときは。
語彙では区別せず、「読者に向かって書く理由が無い文」かで規則を分けます。運用そのものを解説するサイトでは、運用の語彙は正当な本文です。