Rimo Brand Guidelines Design Decision Records

DDR-0021

公開前は Coming Soon ゲートで本文を隠す

Status

Accepted

Date

2026-07-03

Context

ブランドガイドラインサイトは独自サブドメイン(brand.rimo.app)で GitHub Pages 配信する(DDR-0016)。 一方で内容は公開前であり、正式リリースまでは外部に中身を見せたくない。

これまでは <meta name="robots" content="noindex, nofollow"> で検索インデックスだけを止めていたが、 URL を直接知っている相手には本文がそのまま見えてしまう。

加えて、公開前でも関係者にはプレビューを共有したいという要件がある。GitHub Pages は静的配信で サーバ側ロジックを持てないため、URL クエリで表示を出し分ける方式(?showGuide)を採る。この方式は 「本文 HTML をビルド成果物に含めた上でクライアント側で出し分ける」ことを必要とする。したがって 「本文を成果物から完全に除外する」案とは両立せず、プレビュー可能性を優先して、casual な隠蔽 (=一般の閲覧者には見せないが、ソース表示・curl では読み取れる)に位置づける。

Decision

環境変数 PUBLIC_COMING_SOON で制御する公開前ゲートを導入する。判定は site/src/lib/comingSoon.ts に集約する。

  • デフォルト(未指定): 本番ビルド(astro build = import.meta.env.PROD)のときだけ Coming Soon を表示する。 ローカルの astro dev では通常どおり本文が見えるので開発を妨げない。
  • PUBLIC_COMING_SOON=false: 常に本文を公開する。正式リリース時はこれを付けてビルドする。
  • PUBLIC_COMING_SOON=true: dev でも強制的に Coming Soon を表示する(確認用)。

ゲート有効ビルドでは、本文は通常どおり HTML に出力した上で、

  1. <head> の同期スクリプトが描画前に URL の ?showGuidelocalStorage を確認し、プレビュー許可時は <html data-show-guide> を付与する。CSS はこの属性の有無だけで本文と Coming Soon 画面を出し分けるため、 未許可の閲覧者に本文がちらつかない。
  2. プレビュー: ?showGuide を付けると本文が見える。一度付けると localStorage(キー rimo:showGuide)に 保持し、クエリなしでサイト内の他ページも閲覧できる。解除は ?showGuide=offfalse/0/no も可)。
  3. /api/guidelines.json{ name, status: "coming-soon" } のみを返す。
  4. /llms.txt は告知一行のみを返す(静的配信のためクエリで出し分けられず、常にプレースホルダ)。

Alternatives Considered

  • 本文を成果物から完全に除外(初期案): ソース表示・curl からも中身が漏れず最も堅牢。しかし静的サイトでは 「含めていない本文を後からクエリで表示する」ことが原理的にできず、?showGuide プレビュー要件と両立しないため却下。 プレビューは PUBLIC_COMING_SOON=false の別ビルド/別 URL でしか出せなくなる。
  • 合言葉つきクエリ?showGuide=<token>): 推測しづらくなるが、本文 HTML 自体はソースに存在するため保護は 見た目だけで実効性は薄い。運用の手間に見合わないため単純な有無判定を採用。
  • Basic 認証 / パスワード: GitHub Pages は静的配信のためサーバ側認証を持てない。運用コストも高く却下。
  • robots メタのみ: 検索避けにはなるが URL 直打ちには無力。現状維持では要望を満たせない。

Consequences

  • Positive: 一般の閲覧者にはトップで Coming Soon が出て中身が見えない。関係者は ?showGuide を付けた URL を 共有するだけでプレビューでき、以降は保持されてサイト全体を回遊できる。リリースは PUBLIC_COMING_SOON=false を 付けてビルドするだけで、コード変更なしに切り替えられる。
  • Negative:
    • 本文 HTML はビルド成果物に含まれるため、ソース表示・curl では読み取れる(暗号的な秘匿ではなく casual な隠蔽)。 機密度が高い内容は Coming Soon 中でも掲載しないなど、運用側で判断する。
    • 「デフォルトで本番は隠れる」安全側の初期値のため、公開時に環境変数の設定を忘れると Coming Soon のまま配信される。 リリース手順に明記して運用でカバーする。
  • Implications: リリース時はこの DDR と BaseLayoutnoindex メタ(公開時に削除予定)も併せて見直す。

Source

  • 依頼: 「本番ビルド時に対外的に中身が見えないよう、全体に Coming Soon 表示をしたい」
  • 追加依頼: 「?showGuide など何かクエリを付けたらリリース前でも見えるようにしたい」
  • 実装: site/src/lib/comingSoon.ts, site/src/components/ComingSoon.astro, site/src/layouts/BaseLayout.astro
  • DDR-0015: AI ファースト情報構造(llms.txt / JSON も同時にゲートする理由)
  • DDR-0016: サイト技術スタック(Astro / GitHub Pages 配信)
Copied!