---
generated_at: 2026-02-22 19:30:00
metrics:
  claims_total: 52
  claims_with_evidence: 48
  claims_without_evidence: 4
confidence_derived: 0.92
---

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

## 本レポートについて

### 目的
本レポートは、生成された非機能要件定義書の信頼性を検証し、人間レビュアーが効率的にレビューできるようにすることを目的としています。

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.92**
  - 根拠あり：48 / 52、根拠なし：4
- 優先レビュー（高）
  1. **C-40 標準同梱gem数「約70個」**：正確な数量はgembox設定の集計に依存し、ビルド構成によって変動する
  2. **C-47 ガイドドキュメント「13件」**：README.mdのインデックスに基づくが、網羅性は未確認
  3. **C-51 ベンチマークによる性能計測の可能性**：ベンチマークファイルの存在は確認済みだが、具体的な性能目標値はコードから読み取れない
  4. **C-52 mruby-taskジェムによるタスクスケジューラ機能**：機能の存在は確認済みだが、非機能要件への影響は推測を含む

## 2) 参照した情報（Evidence一覧）
> ここに「実在するもの」だけ列挙。

- E-01: `include/mrbconf.h` - mrubyコア設定マクロ定義
- E-02: `src/gc.c` - ガベージコレクタ実装（GCパラメータ定数含む）
- E-03: `include/mruby/gc.h` - GC構造体・定数定義
- E-04: `src/vm.c` - 仮想マシン実装（スタック設定含む）
- E-05: `src/mempool.c` - メモリプール実装
- E-06: `src/allocf.c` - デフォルトメモリアロケータ
- E-07: `src/state.c` - mrb_state初期化・終了処理
- E-08: `src/error.c` - 例外クラス定義・事前割当エラーオブジェクト
- E-09: `src/string.c` - 文字列長制限
- E-10: `include/mruby.h` - mrb_state構造体・メソッドキャッシュ定義
- E-11: `include/mruby/version.h` - バージョン情報
- E-12: `SECURITY.md` - セキュリティポリシー
- E-13: `doc/guides/mrbconf.md` - ビルド時設定マクロドキュメント
- E-14: `doc/guides/memory.md` - メモリアロケータカスタマイズガイド
- E-15: `doc/limitations.md` - 制限事項ドキュメント
- E-16: `build_config/default.rb` - デフォルトビルド設定
- E-17: `build_config/minimal.rb` - 最小構成ビルド設定
- E-18: `build_config/clang-asan.rb` - AddressSanitizerビルド設定
- E-19: `build_config/host-debug.rb` - デバッグビルド設定
- E-20: `.github/workflows/build.yml` - CI/CDビルドワークフロー
- E-21: `.github/workflows/codeql-analysis.yml` - CodeQL解析ワークフロー
- E-22: `.github/workflows/oss-fuzz.yml` - OSS-Fuzzワークフロー
- E-23: `.github/dependabot.yml` - Dependabot設定
- E-24: `.github/workflows/super-linter.yml` - Super-Linterワークフロー（ファイルの存在を確認）
- E-25: `.github/workflows/pre-commit.yml` - Pre-commitワークフロー（ファイルの存在を確認）
- E-26: `.github/workflows/coverage.yml` - カバレッジワークフロー（ファイルの存在を確認）
- E-27: `.github/workflows/release.yml` - リリースワークフロー（ファイルの存在を確認）
- E-28: `Dockerfile` - Dockerビルド定義
- E-29: `docker-compose.yml` - Docker Composeテスト設定
- E-30: `appveyor.yml` - AppVeyor CI設定
- E-31: `Makefile` - ビルドターゲット定義
- E-32: `README.md` - プロジェクト概要
- E-33: `benchmark/` - ベンチマークディレクトリ（ファイル一覧確認済み）
- E-34: `build_config/` - クロスコンパイル設定ディレクトリ（各ファイルの存在確認済み）
- E-35: `mrbgems/` - gemディレクトリ一覧
- E-36: `doc/guides/compile.md` - コンパイルガイド

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | MRB_HEAP_PAGE_SIZEのデフォルト値は1024 | E-02 (`#define MRB_HEAP_PAGE_SIZE 1024`) | ○ |
| C-02 | DEFAULT_GC_INTERVAL_RATIOは200 | E-02 (`#define DEFAULT_GC_INTERVAL_RATIO 200`) | ○ |
| C-03 | DEFAULT_GC_STEP_RATIOは200 | E-02 (`#define DEFAULT_GC_STEP_RATIO 200`) | ○ |
| C-04 | GC_STEP_SIZEは1024 | E-02 (`#define GC_STEP_SIZE 1024`) | ○ |
| C-05 | MAJOR_GC_INC_RATIOは120 | E-02 (`#define MAJOR_GC_INC_RATIO 120`) | ○ |
| C-06 | MAJOR_GC_TOOMANYは10000 | E-02 (`#define MAJOR_GC_TOOMANY 10000`) | ○ |
| C-07 | MRB_GC_ARENA_SIZEのデフォルトは100 | E-03 (`#define MRB_GC_ARENA_SIZE 100`) | ○ |
| C-08 | MRB_GRAY_STACK_SIZEは1024 | E-03 (`#define MRB_GRAY_STACK_SIZE 1024`) | ○ |
| C-09 | 世代別GCはデフォルトで有効 | E-02 (`gc->generational = TRUE`の初期化、`MRB_GC_TURN_OFF_GENERATIONAL`で無効化) | ○ |
| C-10 | メソッドキャッシュデフォルトサイズは256 | E-10 (`#define MRB_METHOD_CACHE_SIZE (1<<8)`) | ○ |
| C-11 | Constrainedプロファイルでメソッドキャッシュ無効 | E-01 (`MRB_CONSTRAINED_BASELINE_PROFILE`セクション) | ○ |
| C-12 | Mainプロファイルのメソッドキャッシュは1024 | E-01 (`MRB_MAIN_PROFILE`セクション、`(1<<10)`) | ○ |
| C-13 | Highプロファイルのメソッドキャッシュは4096 | E-01 (`MRB_HIGH_PROFILE`セクション、`(1<<12)`) | ○ |
| C-14 | STACK_INIT_SIZEは128 | E-04 (`#define STACK_INIT_SIZE 128`) | ○ |
| C-15 | CALLINFO_INIT_SIZEは32 | E-04 (`#define CALLINFO_INIT_SIZE 32`) | ○ |
| C-16 | MRB_STACK_GROWTHのデフォルトは128 | E-04 (`#define MRB_STACK_GROWTH 128`) | ○ |
| C-17 | MRB_STACK_MAXは0x40000 - MRB_STACK_GROWTH | E-04 (`#define MRB_STACK_MAX (0x40000 - MRB_STACK_GROWTH)`) | ○ |
| C-18 | MRB_CALL_LEVEL_MAXは512（ASAN時128） | E-04 (条件分岐`__SANITIZE_ADDRESS__`あり) | ○ |
| C-19 | POOL_PAGE_SIZEのデフォルトは16000 | E-05 (`#define POOL_PAGE_SIZE 16000`) | ○ |
| C-20 | POOL_ALIGNMENTは32bit:4/64bit:8 | E-05 (INTPTR_MAXによる条件分岐) | ○ |
| C-21 | MRB_STR_LENGTH_MAXのデフォルトは1MB（一部プラットフォームで無制限） | E-09 (`#define MRB_STR_LENGTH_MAX 1048576`, Linux等では0) | ○ |
| C-22 | MRB_ARY_LENGTH_MAXのデフォルトは131072 | E-01 (`//#define MRB_ARY_LENGTH_MAX 131072`) | ○ |
| C-23 | MRB_FUNCALL_ARGC_MAXのデフォルトは16 | E-01 (`//#define MRB_FUNCALL_ARGC_MAX 16`) | ○ |
| C-24 | KHASH_DEFAULT_SIZEのデフォルトは32 | E-01 (`//#define KHASH_DEFAULT_SIZE 32`) | ○ |
| C-25 | MRB_SYMBOL_LINEAR_THRESHOLDは256 | E-01 (`#define MRB_SYMBOL_LINEAR_THRESHOLD 256`) | ○ |
| C-26 | CIビルドのタイムアウトは10分 | E-20 (`timeout-minutes: 10`) | ○ |
| C-27 | ファズテスト実行時間は600秒 | E-22 (`fuzz-seconds: 600`) | ○ |
| C-28 | OOM時にNoMemoryError例外を事前割当オブジェクトで送出 | E-08, E-07, E-02 (nomem_err事前割当、mrb_realloc()でのフルGC再試行) | ○ |
| C-29 | スタックオーバーフロー時にSystemStackError | E-04 (MRB_STACK_MAX/MRB_CALL_LEVEL_MAX超過時のstack_err) | ○ |
| C-30 | リソース枯渇はホストアプリケーションの責務 | E-12 (SECURITY.md "Out of Scope") | ○ |
| C-31 | RCEが最高優先度のセキュリティ脆弱性 | E-12 (SECURITY.md "High Priority Security Vulnerabilities") | ○ |
| C-32 | CodeQL解析の実施 | E-21 (codeql-analysis.yml) | ○ |
| C-33 | OSS-Fuzz統合 | E-22 (oss-fuzz.yml) | ○ |
| C-34 | AddressSanitizer/UBSanビルド設定 | E-18 (`enable_sanitizer "address,undefined"`) | ○ |
| C-35 | Dependabotによる日次依存関係チェック | E-23 (`interval: "daily"`) | ○ |
| C-36 | 整数オーバーフロー防止チェック | E-02 (mrb_calloc()の`nelem <= SIZE_MAX / len`チェック) | ○ |
| C-37 | 文字列長チェック | E-09 (str_check_length()関数) | ○ |
| C-38 | Write Barrier実装 | E-02, E-08 (mrb_field_write_barrier_value呼び出し) | ○ |
| C-39 | mrbgemsによるモジュラー拡張 | E-35, E-32 (mrbgemsディレクトリ、README.md説明) | ○ |
| C-40 | 標準同梱gem数「約70個」 | E-35 (mrbgemsディレクトリ一覧) | △ |
| C-41 | アマルガメーションビルド対応 | E-32 (README.md "Amalgamation"セクション) | ○ |
| C-42 | クロスコンパイル設定ファイルの存在 | E-34 (build_config/ディレクトリ一覧で各ファイルの存在確認済み) | ○ |
| C-43 | メモリアロケータのカスタマイズ可能 | E-06, E-14 (allocf.c実装、memory.mdドキュメント) | ○ |
| C-44 | 4つのチューニングプロファイル | E-01 (mrbconf.hの4プロファイル定義) | ○ |
| C-45 | CI/CDパイプライン（マルチプラットフォーム） | E-20, E-30 (build.yml, appveyor.yml) | ○ |
| C-46 | リンター群の利用 | E-24 (super-linter.ymlの存在確認) | ○ |
| C-47 | ガイドドキュメント「13件」 | E-32 (README.mdのインデックスリスト) | △ |
| C-48 | デバッグフック機能 | E-10, E-19 (code_fetch_hook/debug_op_hook、MRB_USE_DEBUG_HOOK) | ○ |
| C-49 | GC実行時モニタリングフィールド群 | E-03 (mrb_gc構造体のフィールド定義) | ○ |
| C-50 | バージョン3.4.0 | E-11 (MRUBY_RELEASE_MAJOR=3, MINOR=4, TEENY=0) | ○ |
| C-51 | ベンチマークスイートの存在 | E-33 (benchmark/ディレクトリ内ファイル一覧) | △ |
| C-52 | mruby-taskジェムによるタスクスケジューラ | E-10, E-35 (MRB_USE_TASK_SCHEDULER定義、mrbgems/mruby-task存在) | △ |

## 4) 不足情報（Unknown / Missing）
- **C-40**：mrbgemsディレクトリの一覧から約70個と数えたが、gemboxファイル（.gembox）とgemディレクトリが混在しており、正確な「gem」数はgemboxの内容に依存する。実際のgem数はビルド設定によって変動する。
  - 候補：mrbgemsディレクトリの正確な集計 / gembox内の参照gem一覧の展開
- **C-47**：README.mdのインデックスセクションに記載されている12件のドキュメントリンクをカウントしたが、「13件」との整合性は未検証。実際にdoc/ディレクトリ内のファイルを全数カウントすべき。
  - 候補：`doc/guides/`ディレクトリのファイル一覧の完全な列挙
- **C-51**：`benchmark/`ディレクトリにファイルが存在することは確認済みだが、これが公式な性能目標値として設定されているかは不明。あくまでベンチマークスクリプトの存在確認にとどまる。
  - 候補：ベンチマーク結果の公式公開 / 性能目標値のドキュメント
- **C-52**：`MRB_USE_TASK_SCHEDULER`マクロとmruby-taskジェムの存在は確認したが、ジェムの詳細な仕様（タスクキュー数、スケジューリングアルゴリズム等）については詳細なソースコードレビューが必要。
  - 候補：`mrbgems/mruby-task/src/task.c`の詳細解析

## 5) リスクフラグ（レビュー観点）
- **0（低リスク）**：性能パラメータ（C-01〜C-25）- ソースコードの定数定義から直接読み取れるため信頼性が高い
- **0（低リスク）**：セキュリティポリシー（C-30〜C-35）- SECURITY.mdおよびCI設定ファイルから直接確認可能
- **0（低リスク）**：可用性要件（C-28〜C-29）- ソースコード内のエラーハンドリング実装から確認可能
- **1（中リスク）**：gem数・ドキュメント数の正確性（C-40, C-47）- 数値の概算であり、厳密なカウントとは異なる可能性がある
- **1（中リスク）**：ベンチマーク・タスクスケジューラ（C-51, C-52）- 機能の存在確認にとどまり、詳細仕様や性能目標は推測を含む
- **0（低リスク）**：ビルド設定・CI/CD（C-42〜C-46）- 設定ファイルの存在と内容から直接確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] 性能パラメータのデフォルト値が最新のソースコードと一致しているか確認する
- [ ] mrbgemsの正確な数をディレクトリ一覧とgembox定義から集計し、C-40の「約70個」を検証する
- [ ] doc/guides/ディレクトリ内のMarkdownファイル数を実際にカウントし、C-47の「13件」を検証する
- [ ] SECURITY.mdの内容が現行のセキュリティポリシーと一致しているか確認する
- [ ] チューニングプロファイル4種の設定値が実際のビルドに反映されることをビルドテストで確認する
- [ ] CI/CDワークフローファイル（E-24〜E-27）の内容を開いて詳細設定を確認する（本レポートではファイルの存在のみ確認）
- [ ] mruby-taskジェムの非機能要件への影響（同時実行性、スケジューリング性能等）を評価する
