SAFE / SHIP
LANGUAGE 日本語
1分で診断 ↘

04 / GUIDE

レビュー / 公開

公開する前の、
実チェックリスト。

秘密情報・権限・外部送信・入力値・依存・モバイル・SEO・計測・戻し方まで。AIに任せて作ったサイトを公開する前に確認する項目と、その確認でも保証できないこと。

01 / SECRETS

読まれてはいけないものを、先に数える

公開とは、成果物の中身を全員に配ることです。まず、配ってはいけないものが混ざっていないかを確認します。

  • .envや鍵ファイルがリポジトリに入っていないか。無視設定に追加しただけで、過去のコミットには残っていることがあります。履歴も確認します。
  • クライアント側へ埋め込まれる環境変数に、サーバー専用のキーが入っていないか。公開用の接頭辞が付いた変数はビルド時にJavaScriptへ展開され、誰でも読めます。
  • ビルド後の成果物を文字列検索する。生成されたJSやHTMLに、トークン、メールアドレス、ローカルの絶対パスが残っていないか。AIに書かせたコードは、デバッグ用のパスや値をそのまま残すことがあります。
  • 公開する画像や記事のスクリーンショットに、管理画面やトークンが写っていないか。

02 / OUTBOUND

出口を数える

次に、このサイトが外へ何を送るかを確認します。入口より出口のほうが見落とされます。

  • 外部へリクエストを送る先を列挙し、意図した先だけかを確認する。
  • 追加した解析タグやウィジェットが、想定より多くのデータを送っていないか。第三者のスクリプトは、あなたのページの権限で動きます。
  • 公開作業自体をAIに任せているなら、公開・削除・送信が人の確認を通る形になっているかを見直す。設定側でどう止めるかはdenyルールを実運用で育てるにまとめています。

03 / INPUT

受け口を、実際に叩いて確認する

フォームやAPIは、コードを読むだけでなく、実際にリクエストを送って結果を見ます。

  • 認証が必要な画面に認証があるか。noindexやrobots.txtのDisallowは検索結果に出さないための指定であって、アクセス制御ではありません。URLを知っていれば誰でも開けます。
  • 受け取る値を、型・長さ・許可文字で検証しているか。想定外の値は保存せずに拒否する形になっているか。
  • 保存しないと決めたものを、本当に保存していないか。決めたことと実装が一致しているかは、公開前に1回、実際のリクエストで確かめます。
  • 誰でも叩ける受け口に、一定時間あたりの上限があるか。

参考までに、このサイトの診断は、回答とスコアをサーバーへ送らず、ブラウザの中だけで判定しています。送らないと書いた以上、送っていないことを確認できる状態にしておくのが、この項目の目的です。

04 / DEPENDENCIES

依存とビルドを、本番の条件で通す

  • 依存パッケージの既知の脆弱性を確認する。
  • ロックファイルをコミットしているか。手元と本番で違うバージョンが入る状態にしない。
  • 使っていない依存を削除する。AIに任せると、試して採用しなかったパッケージが残りがちです。
  • 本番ビルドを通す。開発サーバーでは出ないエラーが、本番ビルドで初めて出ることがあります。公開前に必ず一度は本番と同じビルドを実行します。

05 / DISPLAY

狭い画面と、キーボードだけで確認する

  • 横スクロールが出ていないか。幅360px前後で、ページ全体が横に動かないことを確認します。表・コード・図は、その要素の中だけでスクロールさせます。
  • キーボードだけで主要な操作ができるか。Tabで進めて、いまどこにフォーカスがあるかが見えるか。
  • 本文へ飛ぶスキップリンクがあるか。
  • 画像の代替テキスト、文字と背景のコントラスト、動的に変わる領域の読み上げ。
  • 実機で1回開く。画面幅を変えるだけの確認では、フォントサイズやタップ範囲の問題が出ません。

06 / METADATA

メタデータは、1ページずつHTMLで見る

  • canonicalが自分自身を指しているか。共通テンプレートで指定したcanonicalを各ページで上書きし忘れると、全ページが同じURLを指す状態になります。管理画面ではなく、公開されたHTMLで確認します。
  • 多言語なら、hreflangが相互に指し合っているか。片方向だけの指定は無効になります。
  • OGP画像が絶対URLで、実際に表示できるか。
  • robots.txtとsitemap.xmlが、実在するURLと一致しているか。sitemapを手で書いているなら、ページを増やしたときの更新漏れが起きやすい場所です。
  • 構造化データの型が本文と一致しているか。FAQの構造化データを書いたなら、同じ質問と答えが本文にも見えている必要があります。

Googleの公式ガイドでは、生成AI検索についても、追加の技術要件や専用のschemaは必要なく、通常の検索の品質・技術要件が基盤になると説明されています。特別なタグを足すより、この項目を通すほうが確実です。

07 / MEASURE

計測と、戻し方を先に用意する

  • 計測が本番ホストだけで動くか。開発中のアクセスが混ざると、公開直後の数字が読めなくなります。
  • 自分の端末を集計から外せるか。公開直後にいちばん多くアクセスするのは自分です。
  • 公開URLで最終確認する。ローカルではなく本番のURLを、別のブラウザとログアウト状態で開きます。キャッシュもCookieもない状態が、訪問者が見る状態です。
  • 戻し方を先に確認する。直前の状態へ戻す手順を、公開前に1回実際に試しておきます。事故のあとに調べ始めると、その時間がそのまま公開状態の時間になります。

08 / LIMITS

このチェックでも保証できないこと

このチェックリストが見つけられるのは、既知の抜けだけです。次のことは範囲外です。

  • 設計そのものの誤りや、想定していない使われ方。
  • 顧客データ、決済、本番の個人情報を扱う場合。この範囲では足りません。
  • 依存パッケージの脆弱性。公開前に1回確認して終わりではなく、公表され続けるものを追う必要があります。

全部通しても、安全になったわけではありません。今日わかっている抜けを埋めた、というだけです。それでも、埋めていない状態で公開するよりは、ずっと戻しやすくなります。

一次情報から確認できること

メタデータと検索まわりの項目は、Googleの公式ガイドの説明に沿っています。権限まわりはClaude Codeの公式ドキュメントを参照しています。

このチェックリストは運用前後の確認項目であり、セキュリティ監査ではありません。順位、表示、安全性を保証するものではありません。

FAQ

よくある確認

テストが通っていれば公開してよいですか?

テストは決めた入力で壊れていないことを確認するものです。何を変えたのか、出してはいけないものが混ざっていないかは、テストとは別に人が確認します。

noindexやrobots.txtで隠せば非公開にできますか?

できません。どちらも検索結果に出さないための指定であって、アクセス制御ではありません。URLを知っていれば誰でも開けます。見せたくないなら認証を実装します。

公開前に本番URLで確認する必要はありますか?

あります。ローカルで通る設定が本番環境で変わることがあります。別のブラウザ、ログアウト状態、キャッシュなしで開いた状態が、訪問者が見る状態です。

チェックリストを全部通せば安全ですか?

いいえ。既知の抜けを埋めただけです。設計そのものの誤りや、公開後に公表される依存パッケージの脆弱性は、このチェックの範囲外です。

任せる前に、5問の安全診断を。

1分で安全診断 →