ADR-0128: コーポレート社内サイトの入口(landing)IA と概要ページ Tier 規約を定義する
- Status: Accepted
- Mode: Standard
- Kruchten Type: Existence/Property
- Scope: platform
- Implementation Status: Not Started
- 起案者: [email protected]
- 起案日時 (JST): 2026-06-08 18:37
- 承認日時 (JST): 2026-06-08 20:51(審査 46/50 PASS → PR #1574 merge により受理)
- Deciders: [email protected] (単独)
コンテキスト
§1.1 背景
docs サイトは「管理会計ERP 単体ドキュメント」から「BizLinkPartners コーポレート社内サイト(事業軸 Corp / MAS / DRP)」へ再ポジショニングされた。トップ landing docs/SUMMARY.md を 865 行 → 59 行に薄化し、ERP 製品ドキュメント本文を docs/architecture/ 配下へ退避。サイドバーに事業軸フィルタ Corp/MAS/DRP を導入した。
§1.2 現状 (As-Is)
- 各軸の概要/入口ページが非対称: MAS は
architecture/product_overview.md(Tier A だが H1「bizlp-gas-accounting 完成形プロダクト全体像」に MAS の明示がなく、状態 Development)、DRP は_internal/03_decisions/decision_pipeline/README.md(Tier A・Production・模範例)。一方 Corp(全社)には入口・概要ページが存在しない(空白)。3 軸のうち area landing が揃うのは 2/3。 SUMMARY.mdは ADR-0114 で明示的に Tier C(ファクトボックス適用外)と列挙されているが、再ポジショニング後は「全社の顔 = landing」の役割を担い始めた。- 先行決定 ADR-0079「docs を engineering/corporate に分割し Cloudflare Pages サイトを分離」は Status: Proposed / Implementation: Not Started のまま未実装で、実際に採られた方向(単一サイト + Corp/MAS/DRP 軸フィルタ)と矛盾したまま残置している。
§1.3 課題
- Corp 軸に入口・概要ページが存在せず(空白)、新規読者が全社像を把握できない。
- ADR-0114 の Tier A 判定基準は「単一システム/製品全体 landing かつ対応コードあり」で、コードを持たないコーポレートポータルは現基準で Tier A 不適格。Tier A 必須ファクトボックス(状態/コード/基盤決定/変更履歴)はすべてシステム前提であり、ポータルでは形骸化する。
§1.4 制約・要件
- ADR-0114 の核心(§1§2 形式・Tier A 必須 7 ページ・Tier B 禁止条項・上限 10 ページ)は温存する。
scripts/tier-a-header-lint.mjsの TIER_A 配列・必須 4 項目(REQUIRED_LABELS)は変更しない(既存 Tier A 7 ページの検査回帰を防ぐ)。- 事業軸の各 doc への割当方式(現状は nav グループ名 prefix 派生)、および顧客向けプロダクト(電帳法/証憑管理 SaaS = JTBD-012)の扱いは本 ADR の射程外(RQ-097 の粒度基準で別 spike / 別 ADR)。
§1.5 目標 (To-Be)
サイトの入口を 2 階層の landing 構造(L0 全社ポータル → L1 各軸入口) として規約化し、ADR-0114 を Refine(Supersede しない)する。Non-Goals: 事業軸の各 doc への割当方式変更、顧客向けプロダクトドキュメントの軸/別サイト化判断、Corp L1 入口の本文執筆そのもの。
決定
コーポレート社内サイトの入口を 2 階層の landing 構造(L0 全社ポータル → L1 各軸入口) として規約化し、新類型「Tier P(ポータル landing)」を新設する。L0 = 全社ポータル(SUMMARY.md・Tier P)、L1 = 各軸入口でコードを持つ軸(MAS / DRP)は Tier A、持たない軸(Corp)は Tier P。MAS は product_overview.md を MAS 明示に retitle、DRP は現状維持、Corp は Tier P 入口を新設する決定のみ本 ADR の射程とし、本文執筆は DOC-OPS バックログの別タスクへ分離。ADR-0114 を Refine、ADR-0079 を Supersede する。
判断基準 (Decision Drivers)
3.1 評価軸
| # | 軸 | 重要度 (係数) | 案件特有の解釈 |
|---|---|---|---|
| 1 | #usable | [Must] (×2.0) | 新規読者が L0(全社)→ L1(各軸)の入口だけで全体像と現在地を把握できるか。Corp 空白の解消度。 |
| 2 | #suitable | [Must] (×2.0) | コードを持たない landing にシステム前提のファクトボックスを無理に当てない設計か。 |
| 3 | #operable | [High] (×1.0) | tier-a-header-lint の必須 4 項目アサート(システム前提)を破綻させず新類型を扱えるか。CI が誤 FAIL しないか。 |
| 4 | #maintainable | [High] (×1.0) | 規約改訂の同期コスト。writing-guide / tier-a-header-lint の二重管理を増やさないか。ADR-0114 の「核心 vs 実施細則」2 層を壊さないか。 |
| 5 | #flexible | [Medium] (×0.5) | 4 つ目の事業軸(例: 顧客向けプロダクト)が増えたとき、L1 を 1 つ足すだけで規約が追従するか。 |
K.O. criterion: Must 軸(#usable / #suitable)の score < 3 は不採用。
3.2 評価軸 × 案スコア表
| 軸 | 係数 | 採択案 (Tier P 新設 + L0/L1) | 案 A (Tier C 維持) | 案 C (Tier A 拡張) | 案 (一律 Tier A) |
|---|---|---|---|---|---|
#usable [Must] | ×2.0 | 5 | 2 | 4 | 4 |
#suitable [Must] | ×2.0 | 5 | 3 | 2 | 1 |
#operable [High] | ×1.0 | 5 | 5 | 2 | 2 |
#maintainable [High] | ×1.0 | 4 | 5 | 3 | 3 |
#flexible [Medium] | ×0.5 | 5 | 2 | 3 | 3 |
| 加重和 (正規化) | 0.957 | 0.643 | 0.586 | 0.529 | |
| K.O. 通過 (Must ≥3) | ✓ | ❌ (#usable=2) | ❌ (#suitable=2) | ❌ (#suitable=1) |
検討した代替案 (Alternatives Considered)
- 案 A(論点 1: トップ landing の Tier)Tier C 維持: ポータル/TOC は fact-box 不要と割り切り現状追認。改訂ゼロだが「全社の顔」が裸の TOC のままで再ポジショニングの趣旨を満たさず #usable 不足のため不採用。
- 案 C(論点 1)Tier A 判定基準を拡張して SUMMARY を Tier A に取り込む: 判定基準 (b)「対応コードあり」を緩和する必要があり、tier-a-header-lint の必須 4 項目が SUMMARY に対し確実に誤 FAIL するため lint 改修が必須でコスト高(#operable 不可)。不採用。
- 案(論点 2: Corp 入口)landing 不要なグラブバッグと割り切り L0 から各 doc へ直リンク: Corp 軸の入口を作らない。空白が残り #usable 不足のため不採用。
- 案(論点 2: L1 の Tier 振り分け)landing は一律 Tier A: コードの有無で分けず全 L1 に fact-box を必須化。Corp のようなコード無し軸で fact-box が形骸化し #suitable 不可のため不採用。
影響 (Consequences)
§5.1 正の影響 (Good)
- Corp 空白の解消。
- SUMMARY の役割と規約の不一致を解消。
- Tier P 新設でコードを持たない landing にファクトボックスを誤適用する将来リスクを構造的に排除。
- 軸が増えても L1 を 1 つ足すだけで対応できる拡張性を担保。
§5.2 負の影響 (Bad)
writing-guide.md§7 への小節追加(Tier P 定義・landing 階層・判定基準分岐)の規約改訂コスト。- Corp L1 ページ本文の執筆は別タスクで遅延しうる(ADR-0079 と同じ「決定だけあって実装なし」の再現リスク。Confirmation §6.5 で URL 200 を KPI 化して回避)。
- MAS retitle で
product_overview.mdの H1 表示が変化(実害小)。frontmattertitle不整合の見逃しリスク(Confirmation で frontmatter も検査対象に含める)。
§5.3 中立・トレードオフ (Neutral / Trade-offs)
- Tier 類型が A/B/C に P が加わり 4 分類になる(複雑性は微増だが判定は「コード有無」で機械的に分岐可能)。
- lint 影響の明示:
scripts/tier-a-header-lint.mjsの TIER_A 配列・必須 4 項目(REQUIRED_LABELS)は変更しない。Tier P は本 lint の検査対象外とするため、Tier P 専用 lint(または条件分岐拡張)を別途新設しなければ形骸化リスクあり(Confirmation で CI 組み込みを完了条件化)。 - 「コードを持つ」の境界: リポジトリ上に実行可能な成果物(スクリプト / アプリ / Worker)が存在し CI でアサート可能な軸を「コードを持つ」とする。同定義と Tier P → Tier A 格上げトリガー条件を
writing-guide.md§7 に転記する。 - 軸フィルタ実装方式(確定): 軸フィルタは
scripts/docs-build.mjsのdetectBusiness()がビルド時に nav グループ名からdata-business属性を静的生成し、templates/page.htmlのクライアントサイド JS で表示切替する方式。Workers Runtime の動的フィルタリングは行わないため subrequest / CPU time 上限は非該当。 - ADR-0079 未実装の根拠保持: ADR-0079 は Proposed / Not Started のまま実装されず、より単純な単一サイト + 軸フィルタ(PR #1544)が実際に採られた。別サイト分割を再評価すべきトリガーは「軸数 5 以上」または「顧客向けプロダクトの外部公開 docs が必要になった場合」とし、Cloudflare 無料枠改定等の環境変化時に本トリガーで再評価する。
撤退条件 (Rollback Plan)
writing-guide.md§7 の追記分を削除し、SUMMARY.md/product_overview.mdをgit revertする 1 PR で 0.5 人日以内に復元できる(tier-a-header-lint は無改修のため revert 対象なし)。- 規約導入後 3 ヶ月時点で、(a) Corp L1 landing が新設されず空白のまま、または (b) Tier P 規約起因のレビュー差し戻しが月 3 件を超える場合、Tier P を「必須」から「推奨」へ降格、または Tier C 維持(案 A)へ revert する。
- 撤退条件 (a) の発動判定は Review After の棚卸しを待たず、採択から 8 週後の sprint review で自動確認する。発動時の判断主体・revert 承認フローは起案者([email protected]・単独 Decider)が担当する。
- Tier 4 分類(A/B/C/P)の判定で例外が 5 件を超えたら分類設計を見直す。
- Review After: 2026-12-01(ADR-0114 の半年棚卸しに同期)。
コスト試算
writing-guide.md§7 改訂(Tier P 定義 + L0/L1 landing 階層 + 判定基準の軸分岐 + 「コードを持つ」境界定義 + Tier 判定フローチャート 1 図): 約 0.5 日SUMMARY.mdを Tier P 軽量ヘッダー + ピッチへ改訂: 約 0.25 日product_overview.mdの H1 retitle(MAS 明示)+ frontmattertitle同期: 約 0.1 時間- ADR-0114 への Refine 注記 + ADR-0079 の Superseded 化(未実装放置の理由・再評価トリガー条件を 3 行追記): 約 0.25 時間
- Corp L1 入口ページの新設タスクを DOC-OPS バックログへ起票(担当者・期限・優先度を必須フィールド化、本文執筆は別タスク・本 ADR 対象外): 約 0.1 時間
- Tier P ページ用 lint(
tier-a-header-lint.mjsの条件分岐拡張で実装し重複スクリプトを避ける): 約 0.25 日 - 合計: 約 1.15 日(Standard 想定。Tier P lint 込み)
- 運用コスト: 新規 landing 追加時の Tier 判定は PR レビューで 1 件あたり 5 分以内(フローチャート参照前提)。
Confirmation
- 検証手段:
writing-guide.md§7 に「Tier P(ポータル landing)定義・L0/L1 landing 階層・判定基準の軸分岐・『コードを持つ』境界定義・Tier 判定フローチャート」セクションが存在する / 実行頻度: 導入時 1 回 + CI 毎の存在チェック / 違反時対応: PR ブロック。KPI: 存在 1 / 0。 - 検証手段:
product_overview.mdの H1 と frontmattertitleの両方に「MAS」が明示されている(grep アサート) / 実行頻度: CI 毎 / 違反時対応: PR ブロック。KPI: 検出 1 / 0。 - 検証手段:
scripts/tier-a-header-lint.mjsが改修なしで pass を継続する(既存 Tier A 7 ページの検査回帰確認) / 実行頻度: CI 毎 / 違反時対応: PR ブロック。KPI: FAIL 0 件。 - 検証手段: Tier P 専用 lint(または
tier-a-header-lint.mjsの条件分岐拡張)が CI パイプラインに組み込まれ、Tier P 軽量ヘッダー必須項目(運営/対象/更新ポリシー/索引リンク)を検査する / 実行頻度: CI 毎 / 違反時対応: PR ブロック。KPI: 組み込み 1 / 0、FAIL 0 件。 - 検証手段:
SUMMARY.mdが Tier P 軽量ヘッダー(運営/対象/更新ポリシー/索引)+ ピッチを持つ / 実行頻度: 手動 QA・導入時 1 回 + Tier P lint 経由で CI 毎 / 違反時対応: 起案者が再改訂。KPI: 保有 1 / 0。 - 検証手段: Corp L1 landing の新設タスクが DOC-OPS バックログに担当者・完了期限・レビュー責任者付きで起票されている / 実行頻度: 採択時 1 回 / 違反時対応: 起案者が起票補完。KPI: 起票 1 / 0。
- 検証手段: Corp L1 landing が URL として HTTP 200 で閲覧可能であること(ADR 採択から 8 週以内) / 実行頻度: 採択 +8 週 sprint review + 以降 CI 毎の URL ヘルスチェック / 違反時対応: 撤退条件 (a) を発動し Tier P 「推奨」降格または案 A へ revert を検討。KPI: 200 応答 1 / 0。
- 検証手段: 軸フィルタが
docs-build.mjsのビルド時静的生成(data-business属性)+ クライアントサイド JS 方式であり、Workers Runtime を使用しないことを確認する(subrequest / CPU 上限は非該当) / 実行頻度: 導入時 1 回 / 違反時対応: Workers Runtime 化が将来必要になった場合は subrequest 実測 KPI を追加。KPI: Workers runtime 不使用 = true。
参照 (References)
- 関連 ADR:
- ADR-0114(概要ページ冒頭規約 = Tier): Refine。Tier P・L0/L1 landing 階層・判定基準の軸分岐を追加し、SUMMARY を Tier C → Tier P へ移す。既存 Tier A 7 ページの拘束は不変。Refine 注記から本 ADR への参照リンクを双方向で張る。
- ADR-0079(docs を engineering/corporate に分割・サイト分離・Proposed 未実装): Supersede。ADR-0079 は Proposed / Not Started のまま実装されず、より単純な単一サイト + Corp/MAS/DRP 軸フィルタ(PR #1544)が実際に採られたため、本 ADR が置換する。別サイト分割を再評価すべきトリガー: 軸数 5 以上、または顧客向けプロダクトの外部公開 docs が必要になった場合。
- ADR-0055(nav prefix 親フォルダ番号ベース): 並立。L1 入口は既存 nav prefix 体系の上に乗るため Conflict なし。
- ADR-0123(frontmatter 3 層)/ ADR-0117(DRP 層別)/ ADR-0126(法的正本): 並立・Conflict なし。
- 関連 PR/Issue: PR #1574(本 ADR の起案 PR)。Corp L1 入口の DOC-OPS バックログ Issue は採択後に起票する。
- 外部資料:
- RQ-097(ADR 粒度基準)
- Stripe Engineering Blog (2022) — Tier 判定条件の例外蓄積事例
- Cloudflare Workers limits documentation(subrequest 上限・CPU time)
Review After: 2026-12-01