InfraGuard

公開ランディング・デモ申請・アナリティクスタグ

ログインなしで開く画面(ランディング、デモ申請フォーム、ユーザーマニュアル)と、その訪問者を計測する GA4/GTM タグ、そして受け付けたデモ申請を処理する管理画面。

概要 — 何を扱うか

ログインの背後にあるコンソールとは別に、InfraGuard には 公開面 があります。

パス 画面 アクセス
/ マーケティング用ランディング ゲスト(認証済みセッションは /console へリダイレクト)
/demo デモ申請フォーム ゲスト
/manual ユーザーマニュアル ゲストもログインユーザーも同様に
/login · /lang/{locale} ログイン · 言語切り替え ゲスト

コンソールのホームは /console にあります。この移動によって、ルート名(overview)も既存のブックマークも壊さずに / を公開面へ明け渡しました。

ランディングは独立したバンドル(front.*)としてビルドされます。 コンソールのバンドルに載せると、訪問者全員が Vue・ECharts・CodeMirror・Konva・xterm をダウンロードすることになります(実測: コンソール約 1,283KB に対しフロント 24KB)。マーケティングページにとって、第一印象 そのもの が読み込み速度です。共有が必要な最小限の UI(アイコンボタン、言語スイッチャー)だけを _shared-ui に置き、両者が 同じ定義 を使うようにしています — コピー&ペーストにすると片方だけが直されて食い違います。

公開マニュアル

/manual は ログインなしで 開きます。製品を評価している人が実際の運用方法を読めるべきですし、公開ドキュメントそのものがマーケティングと SEO の資産です。ドキュメントには秘密情報もライブデータも含まれません。

デモ申請

公開フォーム(/demo)

これはワンクリックデモではなく、申請の受付です。必須は氏名と業務用メールアドレスだけで、ロケール・流入元・IP が併せて記録されます。

このフォームは アプリケーション内で唯一のゲスト書き込み経路 であるため、4重に防御されています。

  1. ハニーポット — 入力されていた場合は何も保存しませんが、レスポンスは 成功 のように見せます(検知したことを決して知らせません)。
  2. throttle:8,1 — 1分間で9件目のリクエストは 429 になります。
  3. CSRF トークン。
  4. ホワイトリスト方式のサーバー検証 — status と note は管理者専用なので、公開フォームからは設定できません。

管理画面(管理 ▸ デモ申請)

/admin/demo-requests が受信箱として動きます。モーダルによる CRUD に加えて、検索、件数付きのステータスフィルター、ページネーションがあります。

ステータス 意味
new 受付済み・未対応
contacted 連絡済み
qualified 有望案件と判断
closed 完了

検索は LIKE のワイルドカードをエスケープ します(%、_、\)。これがないと % を1文字入力しただけで全行に一致してしまいます。

アナリティクスタグ(GA4 · GTM · Search Console)

.env に測定 ID を入れると、タグは 公開面にだけ 現れます。値が空のときは <script> 自体がレンダリングされないため、既定のデプロイでは外部へのリクエストがゼロ です。

キー 値 用途
GA_MEASUREMENT_ID G-XXXXXXXXXX gtag.js(GA4)
GTM_CONTAINER_ID GTM-XXXXXXX Google Tag Manager(併用可)
GOOGLE_SITE_VERIFICATION meta トークン Search Console の所有権確認
GA_PRODUCTION_ONLY true(既定) 本番環境でのみ発火

これらをコンソール(layouts/app)に追加しては絶対にいけません。 コンソールの URL とタイトルには、ホスト名・IP・インスタンスの別名・インシデントのタイトルが含まれます。それらをサードパーティのアナリティクスプロパティへ送ることは、ランディングページ自身が掲げるセルフホスティングとデータ主権の約束に反し、顧客のインフラ情報を漏らします。

GA4 は検索キーワードを教えてくれません。 チャネル(オーガニック検索)までを報告してそこで止まり、クエリは Search Console にしかありません。だからこそ所有権確認の meta タグは GA4 とは独立して 出力されます — GA4 をまったく有効にしなくても所有権を確認できます。サイトごとのレポートについては 訪問者・検索インサイト を参照してください。

コピーの方針

ランディングに載せる信頼の数値は コードで数えられるものだけ を使い、ハードコードせず レンダリング時に数えます(ルールセット数、点検項目数、メール/SMS アダプター数など)。

この方針は実際の誤りを1件見つけました — 点検項目は 37 ではなく 36 でした。逆に 観測値は決して使いません: シグネチャの種類数は24時間で 43、7日で 67、全体で 79 となり、訪問のたびに変わって信頼を築くどころか損ないます。公開ページである以上 DB にも触れません — 訪問ごとのクエリは不要ですし、マーケティング面はデータベースが揺らいでも生き残るべきです。

データソース

対象 場所 役割
infr_demo_request default(000770) デモ申請の受信箱(status、note、locale、source、ip)
config/analytics.php ← .env config 測定 ID とゲーティングの SOT(App\Support\Analytics)
public/brand/ 静的ファイル ロゴと OG 画像

public/brand/ は必ずコミットしてください。 public/ の大半は生成物であり(build、hot、storage は gitignore 済み)見落としやすいのですが、ブランド素材は Vite の出力ではありません — 誰もビルドしないため、コミットしないと本番でロゴと OG 画像が 404 になります。OG 画像は PNG でなければなりません: 多くの SNS クローラーは SVG のプレビューをレンダリングしません。

アクセス権限

トラブルシューティング · FAQ

関連項目

공개 랜딩 페이지
공개 랜딩 페이지