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 に出力した上で、
<head>の同期スクリプトが描画前に URL の?showGuideとlocalStorageを確認し、プレビュー許可時は<html data-show-guide>を付与する。CSS はこの属性の有無だけで本文と Coming Soon 画面を出し分けるため、 未許可の閲覧者に本文がちらつかない。- プレビュー:
?showGuideを付けると本文が見える。一度付けるとlocalStorage(キーrimo:showGuide)に 保持し、クエリなしでサイト内の他ページも閲覧できる。解除は?showGuide=off(false/0/noも可)。 /api/guidelines.jsonは{ name, status: "coming-soon" }のみを返す。/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 のまま配信される。 リリース手順に明記して運用でカバーする。
- 本文 HTML はビルド成果物に含まれるため、ソース表示・
- Implications: リリース時はこの DDR と
BaseLayoutのnoindexメタ(公開時に削除予定)も併せて見直す。
Source
- 依頼: 「本番ビルド時に対外的に中身が見えないよう、全体に Coming Soon 表示をしたい」
- 追加依頼: 「
?showGuideなど何かクエリを付けたらリリース前でも見えるようにしたい」 - 実装:
site/src/lib/comingSoon.ts,site/src/components/ComingSoon.astro,site/src/layouts/BaseLayout.astro
Related
- DDR-0015: AI ファースト情報構造(llms.txt / JSON も同時にゲートする理由)
- DDR-0016: サイト技術スタック(Astro / GitHub Pages 配信)