SEO、アクセシビリティ、演出を別工程にすると、最後に衝突します。見出しをアニメーション用のdivへ変えた後でsemantic HTMLへ戻す、Canvasへ入れた情報をスクリーンリーダー向けに書き直す、といった手戻りが起きます。

三つを同時に満たす近道は、スコアを一つにすることではありません。同じ主要フローを、複数の観点で通過させる品質ゲートを作ることです。

品質ゲートのhard failureとwarning

hard failure:直すまで公開判定にしない

  • routeのHTMLが生成され、h1が主題を示している。
  • canonical、title、description、OGP、Twitter Card、JSON-LDが本文と一致している。
  • 内部リンク、sitemap、RSS、robots、画像パスが生成物から解決できる。
  • JS無効時も本文、見出し、主要リンク、FAQ、図のHTML代替が読める。
  • キーボードで操作でき、focusが見え、320pxで二方向スクロールがない。
  • dist/upload/のファイル内容が一致している。
  • 秘密情報、未確認の実績、架空の数値が差分へ入っていない。

warning:記録してから判断する

  • 外部URLのTLS、cache、compression、security headersがこの環境から確認できない。
  • npm auditがCA証明書エラーなどで取得できない。
  • Search Console、Lighthouse、SNS crawlerの実環境確認をまだしていない。
  • axeの自動検出外にある文脈、読み上げ順、操作の分かりやすさを人手で未確認。

warningは0件と書き換えず、取得不能・未確認として残します。npm auditで証明書検証を無効にしたり、strict-ssl=falseへ逃がしたりしないことも品質ゲートの一部です。

semantic HTMLを共通の基盤にする

検索エンジンと支援技術は目的が違いますが、文書の主題、見出し、ナビゲーション、本文がHTMLとして明確であることは両方に効きます。

  • ページごとに一つの主題を持つh1
  • セクションの関係を表すh2h3
  • サイト移動はnav、本文はmain、補足はaside
  • 操作はbutton、移動はa
  • 比較はtable、用語と値はdescription list。

見た目のために要素を選ばず、CSSで見た目を変えます。divrole=buttonを足すより、最初からbuttonを使う方がキーボードと状態を保ちやすくなります。

headingとfocusを視覚設計へ含める

大きな見出しはブランド表現であると同時に、文書の入口です。日本語タイトルがモバイルで一文字ずつ分断されない幅、本文が一行70文字前後を超えないmeasure、200%拡大時のreflowを確認します。

focus ringは後付けの枠ではありません。NightテーマとPaperテーマの両方で背景から見える色をトークン化し、sticky headerの裏へフォーカス対象が隠れないscroll-padding-topも設定します。

ダイアログでは次を確認します。

  1. 開いたとき検索欄へフォーカスする。
  2. Tabがダイアログ内を移動する。
  3. Escで閉じる。
  4. 閉じた後、開いたボタンへ戻す。

Command Paletteは便利でも、通常ナビゲーションの代わりにはしません。JavaScriptがなければ使えない入口だけを作らないためです。

structured dataは画面の内容と一致させる

Article structured dataには、画面に存在するtitle、description、公開日、更新日を使います。架空の組織、著者資格、評価、レビューを足しません。

品質ゲートでは、JSON-LDの構文だけでなく次を見ます。

  • headlineがH1と同じ主題か。
  • datePublisheddateModifiedが記事metaと一致するか。
  • canonicalが本番URL一種類か。
  • draftがsitemap、RSS、記事一覧から除外されるか。
  • BreadcrumbListの順序と実際の導線が一致するか。

構造化データはランキングを約束する装飾ではなく、ページの内容を別形式で矛盾なく表すものです。

AI検索で意味を失わない確認

AI検索向けの別ページや専用ファイルを先に増やすのではなく、通常のHTMLだけで「問い → 結論 → 条件 → 根拠 → 次の行動」が追えるかを確認します。Google Search CentralのAI features and your website生成AI機能の最適化ガイドに合わせ、特別な記法や引用順位を約束せず、検索に必要な通常の品質を保ちます。

  • H1と冒頭の段落で、誰のどの判断を助けるページかを言い切る。
  • 用語、対象範囲、条件、例外を同じ本文の近くに置き、断片だけでも意味が変わらないようにする。
  • Projectデータ、確認日、Git履歴、外部資料などの根拠を、主張の直後からたどれるようにする。
  • 数値や判断が変わるときは、公開日と更新日、集計日、サンプル規模を分けて記録する。
  • 読了後の行動を、関連Note・Pattern・Project・Simulatorの既存ルートへ一つだけ渡す。

Claim-to-evidence recordを作る

AI検索や人手レビューで文脈が切れても、主張の意味と限界が残る最小記録を、ページ単位で作ります。BUILD ORBITでは次の5欄を使います。

書く内容BUILD ORBITでの確認先
Claim読者が決められるようになることH1と冒頭の結論
Scope対象、条件、対象外本文の採用・回避条件
Evidence実装、公開画面、Git、公式資料のどれかSourceList、Project、確認commit
Freshness公開日、実質更新日、データ確認基準日article meta、frontmatter、reportのsourceReviewedAt
Next action条件に合う次の一手Note、Pattern、Project、Simulatorの既存URL

たとえばAstro静的サイトの判断Noteは、HTMLへ残す情報とIslandへ切り出す状態を分け、Local AI Compassのケーススタディで実例へ戻します。これはAI回答への掲載や引用を約束する記法ではなく、元ページだけを読んでも過剰な一般化をしにくくする編集基準です。

JavaScript無効時を設計レビューに使う

no-JS確認は、古い環境だけのためではありません。情報と機能の境界が正しいかを見る強いテストです。

JavaScriptを無効にしたとき、次が読めれば基盤は残っています。

  • サイトの目的と主要導線。
  • Projectの概要一覧。
  • 記事本文と関連記事。
  • Simulatorが扱う条件と基本方針。
  • プライバシーと外部リンク。

診断の再計算やCommand Paletteのような機能は止まって構いません。ただし、その事実と代替経路をnoscriptで伝えます。

performance budgetを機能要件として書く

「できれば速く」では削減判断ができません。初期JavaScript gzip 180KB以内、LCP 2.5秒未満を目標、CLS 0.1未満など、測定条件と一緒に予算を置きます。

予算を超えたときは、次の順で直します。

  1. bundleや画像から原因を測る。
  2. 不要な依存や重複コードを削る。
  3. 画面下のIslandを遅延読込する。
  4. SVGやCSSなど軽い代替表現へ変える。
  5. 効果の密度を段階的に下げる。

機能を無条件に削ってLighthouseだけ上げるのではなく、同じ目的を軽い表現で達成できるか検討します。

自動・ブラウザ・人手の担当を分ける

AIコーディングの出力は、同じ種類の「確認済み」へまとめません。再現可能なsource/build検証、実行環境でのbrowser検証、意味を読むhuman reviewに分けます。

担当主に止める問題代表的な確認
source / build自動化型、schema、生成漏れ、リンク切れ、納品物差分typecheck、unit、build、SEO、sitemap、hash
browser自動化hydration、直接URL、操作、機械検出可能なa11yPlaywright、主要viewport、keyboard flow、axe
human review主題、事実、文脈、迷いやすさ、公開責任見出し、copy、出典、同意、no-JS、rollbackの判断

自動化しやすいものは、毎回同じ基準で止めます。

自動チェック主な対象
format / lint / typecheck構文、型、規約
content schemafrontmatter、日付、必須項目
unit test判定、URL状態、検索、関連slug
build / route静的生成、直接アクセス
internal link存在しない遷移
axe機械検出できるa11y違反
dist / deliverysitemap、OG、upload一致

ブラウザでは、直接URL、戻る・進む、共有状態、キーボード、主要viewport、reduced motion、no-JSを実際の生成物で確認します。axeはこの層で機械検出できる違反を減らします。

人手で残すものもあります。

  • 見出しを順に読んで主題が伝わるか。
  • キーボードだけで主要フローを完了できるか。
  • 320px、390px、landscapeで情報が欠けないか。
  • 200%拡大で固定要素が重ならないか。
  • NightとPaperのコントラストが実際に読みやすいか。
  • Motion Offで操作結果が分かるか。

BUILD ORBITで実行できる確認群は、次の順に分けています。長い一括コマンドで最後の失敗だけを読むのではなく、どの層で止まったかを残します。

npm run format:check
npm run lint
npm run typecheck
npm run check:content
npm run test
npm run build
npm run check:og
npm run check:seo
npm run check:dist
npm run test:routes
npm run check:links
npm run prepare:upload
npm run check:delivery
npm run test:e2e
npm run test:a11y

Playwrightとaxeは自動検出できる問題を減らすための道具で、axeが通ったことだけでアクセシビリティ全体を証明しません。320px、390px、200% zoom、reduced motion、キーボード、no-JSは人が意味と連続性を確認します。実装を再利用するPatternは静的な本体に操作だけを重ねる設計、検証工程全体はMethodへ接続します。構成ごとのgate候補はBuild Simulatorで整理できます。

axeで問題がないことは、使いやすさの証明ではありません。自動検出が得意な問題を先に減らし、人は意味と連続性を確認します。

リリース前ゲート

次の順で一つでも失敗したら公開作業を止めます。

  1. content schemaと関連slugが正しい。
  2. format、lint、strict typecheck、unitが成功。
  3. build後の全主要routeが存在。
  4. 内部リンク、canonical、OG、sitemap、RSSが一致。
  5. キーボード、reduced motion、no-JSを手動確認。
  6. 代表ページをaxeと主要breakpointで確認。
  7. distとuploadが一致。
  8. diffとcommit対象に秘密情報がない。

このNoteは検証責任の分担をownerとします。実際に公開するかをbuildからrollbackまで順に決めるときはAIサイトの公開前チェックリストへ進みます。

SEO、アクセシビリティ、演出は、奪い合う予算ではありません。semantic HTMLを本体にし、動きを意味へ限定し、生成物まで検証すれば、同じ設計判断が三つの品質を同時に支えます。

よくある質問

品質ゲートのFAQ

Lighthouse 100点は必要ですか

点数を公開判定の唯一の条件にはしません。本文の可用性、直接URL、HTMLの意味、実際の性能予算、配信物の一致を目的に合わせて確認します。

axeが通ればアクセシブルですか

いいえ。axeは自動検出できる違反を見つける補助です。キーボード、読み上げ順、文脈、操作の理解、reduced motionは手動確認が必要です。

canonicalとsitemapは両方必要ですか

役割が違います。canonicalはそのページの代表URLを示し、sitemapは発見してほしいURLの一覧を配ります。生成HTMLとsitemapのURLが一致するかを確認します。

reduced motionではどこまで止めますか

意味のない常時運動、追従、視差は止めます。状態変化の結果やfocusの可視性まで消さず、情報と操作の理解を維持します。

確認した一次情報

  1. W3C: Web Content Accessibility Guidelines (WCAG) 2.2(外部サイト) — 確認 2026/9/1
  2. Google Search Central: Technical requirements(外部サイト) — 確認 2026/9/1
  3. Google Search Central: AI features and your website(外部サイト) — 確認 2026/9/7
  4. Google Search Central: Generative AI features optimization guide(外部サイト) — 確認 2026/9/7
  5. web.dev: Web Vitals(外部サイト) — 確認 2026/9/1
  6. Schema.org: Article(外部サイト) — 確認 2026/9/1