---
generated_at: 2026-02-25 10:00:00
metrics:
  claims_total: 45
  claims_with_evidence: 40
  claims_without_evidence: 5
confidence_derived: 0.89
---

# 根拠レポート：非機能要件定義書

## 本レポートについて

### 目的
本レポートは、生成された設計書・ドキュメントの信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

### チェック方法
以下の観点でドキュメントの内容（Claim：主張）を検証しています：

1. **根拠の有無確認**：各主張に対して、ソースコード・既存設計書・要件定義書などの根拠（Evidence）が存在するか
2. **根拠との整合性**：主張の内容が根拠と矛盾していないか
3. **網羅性**：参照すべき情報源を適切にカバーしているか

### 信頼度スコアの算出
- **confidence_derived** = 根拠あり件数 / 総主張件数
- 状態「○」：根拠あり、「△」：根拠不足または要確認

### 本レポートの使い方
1. まず「サマリー」で全体の信頼度と優先レビュー項目を確認
2. 「Claims と根拠の対応」で △ の項目を重点的にレビュー
3. 「不足情報」で補完が必要な情報源を確認

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.89**
  - 根拠あり：40 / 45、根拠なし：5
- 優先レビュー（高）
  1. **可用性要件の定量目標（稼働率・RTO・RPO）**：コードからは明示的な SLA 定義が存在せず、推定値
  2. **CSP / SRI のセキュリティ対策の不在**：コードベースで確認不可のため、デプロイ設定の確認が必要
  3. **サーバーサイドの運用監視体制**：decap-server はローカル開発用であり、本番運用の監視体制はコードから読み取れない

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。抽出フェーズで付けたIDをそのまま出す。

- E-01: `packages/decap-cms-lib-util/src/unsentRequest.js` - fetchWithTimeout 実装（60秒タイムアウト）
- E-02: `packages/decap-cms-lib-util/src/asyncLock.ts` - 非同期ロック実装（15秒デフォルトタイムアウト）
- E-03: `packages/decap-server/src/middlewares/localGit/index.ts` - Mutex 実装（3秒タイムアウト）
- E-04: `packages/decap-cms-core/src/actions/waitUntil.ts` - waitUntilWithTimeout 実装（30秒タイムアウト）
- E-05: `packages/decap-cms-backend-git-gateway/src/implementation.ts` - Netlify Identity 初期化（2500msタイムアウト）
- E-06: `packages/decap-cms-ui-default/src/Loader.js` - ローダー表示遅延（500ms）
- E-07: `packages/decap-cms-lib-util/src/API.ts` - requestWithBackoff（リトライ5回、指数バックオフ、RateLimitError）
- E-08: `packages/decap-cms-backend-github/src/API.ts` - getDifferences リトライ（最大10回、500ms間隔）
- E-09: `packages/decap-cms-backend-gitlab/src/API.ts` - rebase ポーリング（最大30回、1秒間隔）、batch 関数（90パス/8パス）
- E-10: `packages/decap-cms-core/src/backend.ts` - ステータスチェックリトライ
- E-11: `packages/decap-cms-lib-auth/src/pkce-oauth.js` - PKCE 認証実装
- E-12: `packages/decap-cms-lib-auth/src/implicit-oauth.js` - Implicit OAuth 実装
- E-13: `packages/decap-cms-lib-auth/src/utils.js` - nonce 生成・検証、insecure protocol チェック
- E-14: `packages/decap-cms-lib-auth/src/netlify-auth.js` - Netlify 認証、トークンリフレッシュ
- E-15: `packages/decap-server/src/middlewares/common/index.ts` - CORS 設定、express.json limit、Morgan ロギング
- E-16: `packages/decap-cms-core/src/lib/registry.js` - プラグインレジストリ
- E-17: `packages/decap-cms-widget-relation/src/RelationCache.js` - Relation キャッシュ（最大100件）
- E-18: `packages/decap-cms-backend-github/src/GraphQLAPI.ts` - Apollo InMemoryCache、fetchPolicy 設定
- E-19: `packages/decap-cms-core/src/lib/stega.ts` - エンコーディングキャッシュ
- E-20: `packages/decap-cms-lib-util/src/localForage.ts` - localForage ストレージテスト
- E-21: `packages/decap-cms-lib-util/src/API.ts` - readFile / readFileMetadata キャッシュ
- E-22: `package.json` - browserslist、devDependencies、workspaces
- E-23: `tsconfig.json` - TypeScript strict モード設定
- E-24: `lerna.json` - 独立バージョニング、Conventional Commits
- E-25: `jest.config.js` - テスト環境設定
- E-26: `packages/decap-cms-core/src/constants/configSchema.js` - AJV スキーマバリデーション
- E-27: `packages/decap-cms-core/src/components/UI/ErrorBoundary.js` - React ErrorBoundary
- E-28: `packages/decap-cms-backend-bitbucket/src/implementation.ts` - トークンリフレッシュフロー
- E-29: `packages/decap-server/src/middlewares/joi/customValidators` - パストラバーサル防止（参照のみ）
- E-30: `packages/decap-cms-core/src/integrations/providers/algolia/implementation.js` - Algolia キャッシュ
- E-31: `packages/decap-cms-lib-util/src/implementation.ts` - ローカルツリーキャッシュ

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | APIリクエストの60秒タイムアウト | E-01 | ○ |
| C-02 | 非同期ロック15秒デフォルトタイムアウト | E-02 | ○ |
| C-03 | decap-server Mutex 3秒タイムアウト | E-03 | ○ |
| C-04 | Redux Wait Action 30秒タイムアウト | E-04 | ○ |
| C-05 | Netlify Identity 2.5秒初期化タイムアウト | E-05 | ○ |
| C-06 | UIローダー500ms表示遅延 | E-06 | ○ |
| C-07 | Git操作の排他制御（同時1操作） | E-03 | ○ |
| C-08 | GitLab バッチ最大90パス | E-09 | ○ |
| C-09 | GitLab バッチ最大8パス（小規模） | E-09 | ○ |
| C-10 | Relationキャッシュ最大100件 | E-17 | ○ |
| C-11 | リクエストボディ50MB上限 | E-15 | ○ |
| C-12 | APIリトライ最大5回 | E-07 | ○ |
| C-13 | 指数バックオフ（attempt^2秒） | E-07 | ○ |
| C-14 | レートリミットリセット最大3600秒 | E-07 | ○ |
| C-15 | GitHub getDifferencesリトライ最大10回 | E-08 | ○ |
| C-16 | GitLabリベースポーリング最大30回 | E-09 | ○ |
| C-17 | バックエンドステータスチェックリトライ | E-10 | ○ |
| C-18 | 稼働率はGitプロバイダ依存 | **根拠なし** | △ |
| C-19 | 計画停止時間は該当なし | **根拠なし** | △ |
| C-20 | RPO 0（Gitによるデータ保全） | **根拠なし** | △ |
| C-21 | Git Gatewayステータス監視 | E-05 | ○ |
| C-22 | localForageクォータ超過検出 | E-20 | ○ |
| C-23 | OAuth 2.0 PKCE実装 | E-11 | ○ |
| C-24 | OAuth 2.0 Implicit Flow実装 | E-12 | ○ |
| C-25 | GoTrue/JWT認証実装 | E-05 | ○ |
| C-26 | OIDC自動ディスカバリ | E-11 | ○ |
| C-27 | HTTPS強制（非localhost） | E-13 | ○ |
| C-28 | Nonce検証によるCSRF対策 | E-13 | ○ |
| C-29 | CORS設定（環境変数制御） | E-15 | ○ |
| C-30 | トークンの安全な管理（URLフラグメント削除） | E-12, E-11 | ○ |
| C-31 | パストラバーサル防止 | E-29 | ○ |
| C-32 | 入力サニタイズ（URI/スラッグ） | E-26 | ○ |
| C-33 | トークンリフレッシュ（Bitbucket） | E-28 | ○ |
| C-34 | プラグインアーキテクチャ（レジストリパターン） | E-16 | ○ |
| C-35 | モノレポ構成（38パッケージ、Lerna独立バージョニング） | E-22, E-24 | ○ |
| C-36 | 対応ブラウザ（直近2バージョン） | E-22 | ○ |
| C-37 | TypeScript strictモード | E-23 | ○ |
| C-38 | ESLint / Stylelint / Prettier | E-22 | ○ |
| C-39 | Commitlint / Husky | E-22, E-24 | ○ |
| C-40 | AJVスキーマバリデーション | E-26 | ○ |
| C-41 | Jest / Cypress テスト | E-22, E-25 | ○ |
| C-42 | Winston + Morganロギング | E-15 | ○ |
| C-43 | レートリミット管理（GitHub/GitLab/Bitbucket） | E-07 | ○ |
| C-44 | CSP/SRIの設定がコードベースから確認不可 | **根拠なし** | △ |
| C-45 | React ErrorBoundary | E-27 | ○ |

## 4) 不足情報（Unknown / Missing）
- **可用性の定量的目標値**（C-18, C-19, C-20）：Decap CMS はクライアントサイド SPA であるため、サーバーサイドの SLA 文書はコードベースに存在しない。可用性は外部プロバイダ（GitHub / GitLab / Netlify 等）の SLA に依存し、本プロジェクトのコードからは直接推定不可。
  - 候補：各 Git プロバイダの SLA 文書 / ホスティングプラットフォームの SLA / 運用チームへのヒアリング
- **CSP / SRI セキュリティ設定**（C-44）：コードベースに Content Security Policy やサブリソース完全性の設定は存在しない。デプロイ環境（Netlify / Vercel 等）の HTTP ヘッダ設定で対応している可能性がある。
  - 候補：`netlify.toml` のヘッダ設定 / デプロイ環境の設定ファイル / インフラチームへの確認

## 5) リスクフラグ（レビュー観点）
- **1: 中リスク** - 可用性要件がコードベースから定量的に定義されていない。本番環境での SLA 定義が別途必要
- **1: 中リスク** - CSP / SRI の未設定。XSS 攻撃に対する多層防御としてデプロイ時の設定確認が必要
- **0: 低リスク** - CORS 設定がデフォルトで `*`（ワイルドカード）。`ORIGIN` 環境変数が未設定の場合に全オリジンを許可する
- **0: 低リスク** - decap-server は開発用途のため、本番環境での Mutex タイムアウト値（3秒）の妥当性は検証不要

## 6) レビュアーチェックリスト（最小）
- [ ] 性能要件のタイムアウト値・リトライ回数が各ソースファイルのハードコーディング値と一致するか確認
- [ ] 可用性要件について、本番環境のデプロイ先 SLA と照合し、具体的な定量目標を定義
- [ ] セキュリティ要件について、デプロイ環境の CSP / SRI ヘッダ設定を確認
- [ ] CORS 設定（`ORIGIN` 環境変数）が本番環境で適切に制限されているか確認
- [ ] プラグインアーキテクチャの拡張ポイント一覧が `registry.js` の実装と一致するか確認
- [ ] キャッシュ戦略（localForage / Apollo / RelationCache）の上限値が実装と一致するか確認
