form silent failures
外部フォームが死んでも壊れて見えない|数え方とpatternが黙って消える欠陥
外部のフォームサービスを埋め込んだページは、そのサービスが止まっても入力欄も送信ボタンも出ます。届かないだけです。入力検査のpatternも、書き方を間違えると何も出さずに消えます。この面は、フォームが静かに壊れていた3つの形と、それを数え直した手順の記録です。
このサイトはAnthropicの公式サイトではありません。Claude Codeの機能・料金・提供範囲は変わる可能性があるため、重要な判断の前には公式のドキュメントと自分のアカウント設定を確認してください。
先に結論:壊れても見た目が変わらない3つの形
| 形 | 見た目 | 壊れ方 | 確かめ方 |
|---|---|---|---|
| 外部サービスが止まった | 正常に見える | 送信しても誰にも届かない | 埋め込みの数を、ファイルの実数で数える |
| pattern属性の生の - | 正常に見える | 入力検査が丸ごと無効になる | ブラウザと同じ形(vフラグ)で正規表現を通す |
| 描画結果の保存版 | 正常に見える | 24時間後から全員が送れない | フォームの時刻の値を今と比べる |
共通するのは、画面を見ても、HTTPの200を見ても、異常が分からないことです。送ってみるか、構造を機械で読むしかありません。
読者が確かめる手順
A. 外部フォームの数え方
- sitemapではなく、サーバー上のファイル一覧で数える。FTPで全ファイルを取り、外部サービスのスクリプトと埋め込みの印を検索します。sitemapに載らない古いページが、まとまって残っていることがあります。
- 「生きた入力フォーム」と「スクリプトの残骸だけ」を分ける。後者は実害がありません。
- 自前の受け口があるかを見る。あるなら、そちらへ送られているかを確認します。
- 外から見えない退避フォルダの古い版は、別に数える。混ぜると桁が変わります。
- IDごとに残数を出す。同じIDを複数のサイトが使っていると、1サイトずつ外しても「まだ使われている」状態が続きます。外す順は、サイト単位ではなくID単位です。
B. patternの確認
- pattern を書いたら、Nodeで
new RegExp("^(?:" + p + ")$", "v")を通す。ブラウザはこの形で読みます。 - 角括弧の中の生の
-は、vフラグでは文法の誤りになるので[A-Za-z0-9_\-]と逃がす。 - 効いているかは、見た目ではなく、申込の流れの記録(ブロックされた数とエラーの数の比)で見る。
C. 保存版の見分け
フォームの name="ts" の値を今の時刻と比べます。15分以内ならその場で描画、日単位で古ければ保存版です。送信は要りません。
関連して、本番の取得内容を信頼する危うさは手元が本番より古い記録に、数える範囲を誤る例は検査コードの書き方にあります。
実際に起きた記録
1,146ページが誰にも届かないフォーム(2026年9月24日)
あるサイトで、sitemapの300ページのうち72ページに外部フォームが入っていました。内訳は、生きた入力フォーム50、残骸のスクリプトだけ22。午前に「sitemapを全数で読み直して0」と報告しましたが、夕方にサーバー上の旧ブログをFTPで数えると、1,228本のうち1,104本がsitemapに載っておらず、1,096本が生きた入力フォームでした。どのページにも自前の受け口はなく、ここから申し込んだ人は全員、どこにも届いていませんでした。外部サービスは容量いっぱいで、運営者は見ていませんでした。残りの退避は412本で、97のフォルダはすべて外から403でした。
数え方の誤りは、前に同じサイトで一度記録していた「sitemapを範囲にした一括修正の漏れ」と同じ形でした。記録があっても、手順に従って同じ穴に落ちました。自前のフォームへの差し替えでは、実測9,313ピクセルの高さに対し、雛形の高さは9000ピクセルで固定されていたので、srcだけ替えると末尾の送信ボタン側が切れました。iframeと実寸を渡すスクリプトの対で入れる必要があります。
IDはサイトをまたいでいた(2026年9月28日)
6つのIDを手元の写しだけで数えると、最大のIDは110ページにわたり、3〜4つのサイトが同じIDを使っていました。回答や申込が混ざり、どのサイトから来たかが分からない形です。担当も3つのセッションにまたがるので、1つでは終わりません。手元の写しは他のセッションの反映を映さないので、「本番にある」とは言えません。
patternが黙って消えた(2026年9月27日)
Chrome 152 で、トークIDの欄の [A-Za-z0-9_-]{4,32} が効いていないのが見つかりました。ブラウザは誤りになったpatternを丸ごと無視します。網全体の手元の写しで、patternは177個、うち175個が無効でした。全部同じ文字列で、共通の型と生成の道具からの写しでした。日本語や記号のIDもブラウザを通り、サーバーで断られ、写真を付けていた人は付け直しになります。電話番号の [0-9-]+ も同じです。本番だけ直しても、型と生成の道具を直さなければ、次の展開で戻ります。
保存版で全員が送れない(2026年9月8日〜24日)
2026年9月7日に描画した結果を保存版として上げてしまった予約ページが3件、トップが13件ありました。トークの時刻が固まり、9月8日から全員が「ページを開いてから時間が経ちすぎています」で断られ続けました。見つけたのは9月24日です。直し方は、描画済みの部分を元の目印に戻すこと。取得したHTMLを元ファイルとして上げない、が守るべき規則です。
見落としやすいところ
外部フォームを外すときは、受け口の差し替えが先で、外すのは後です。先に外すと、申込の入口がなくなります。また、自前のフォームに替えた直後は、スマホ幅で最後までスクロールして送信ボタンが見えること、入力欄の文字が16ピクセル以上で拡大されないこと、送信後に相談一覧へ届くことを、実際に1件送って確かめます。テストの送信は、記録に残る形で1件だけにしてください。
よくある質問
外部フォームが生きているかは、サービスの管理画面で分かりますか。
管理画面が見られるとは限りません。外から見える状態は正常なので、自前の受け口へ置き換える、または届いた件数の記録で確かめます。
patternのハイフンはどう直しますか。
角括弧の中では逆スラッシュで逃がします。角括弧の外のハイフンは問題ありません。直したらvフラグで通してから上げます。
IDごとの残数は、何で数えますか。
配信される分のファイルだけを、手元の全リポジトリから走査して数えます。控えや退避を混ぜると桁が変わるので、別に数えます。