---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 45
  claims_with_evidence: 42
  claims_without_evidence: 3
confidence_derived: 0.93
---

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

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.93**
  - 根拠あり：42 / 45、根拠なし：3
- 優先レビュー（高）
  1. **イベントループ1イテレーションの応答時間**：具体的な数値目標はソースコードに明記されておらず、実装特性からの推測
  2. **io_uringのサポート状況**：構造体定義は確認済みだが、io_uring利用時の詳細な動作条件はLinux固有のソースを要追加確認
  3. **ThreadSanitizer互換性**：マクロ分岐は確認済みだが、網羅的なサニタイザー対応状況は要追加確認

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

- E-01: `include/uv.h` - パブリックAPI定義、ハンドル型・リクエスト型定義、関数シグネチャ
- E-02: `include/uv/version.h` - バージョン番号定義（1.52.1-dev）
- E-03: `src/threadpool.c` - スレッドプール実装（デフォルトサイズ4、最大1024、スタック8MB、slow I/O閾値）
- E-04: `src/timer.c` - タイマー実装（min-heap、ミリ秒精度、uv__run_timers、uv__next_timeout）
- E-05: `src/uv-common.c` - 共通ユーティリティ（カスタムアロケータ、エラーコード、メトリクス、バッファサイズ設定）
- E-06: `src/uv-common.h` - 内部型定義（ハンドルフラグ、ループメトリクス構造体、uv__iou構造体、マクロ定義）
- E-07: `src/unix/core.c` - Unixコア実装（uv_run、uv__socket、uv__accept、uv__close、CLOEXEC、NOSIGPIPE、IOV_MAXキャッシュ）
- E-08: `src/unix/tcp.c` - TCP実装（keepalive、nodelay、REUSEPORT、listen、bind）
- E-09: `src/fs-poll.c` - ファイルシステムポーリング実装（intervalパラメータ、タイマーベースの再スケジュール）
- E-10: `src/random.c` - 乱数生成実装（プラットフォーム別フォールバックチェーン）
- E-11: `README.md` - プロジェクト概要、機能一覧、ビルド手順、テストタイムアウト環境変数
- E-12: `SUPPORTED_PLATFORMS.md` - プラットフォームサポートTier定義
- E-13: `SECURITY.md` - セキュリティ脆弱性報告プロセス
- E-14: `src/unix/stream.c` - ストリーム実装（EMFILE対策のemfile_fd）
- E-15: `src/heap-inl.h`（参照のみ）- ヒープ実装のインクルード（timer.cから参照）
- E-16: `src/queue.h`（参照のみ）- キュー実装のインクルード（uv-common.hから参照）
- E-17: `src/version.c` - バージョン文字列生成

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | イベントループはepoll/kqueue/IOCP等のOS最適I/O多重化機構を使用 | E-07, E-11 | ○ |
| C-02 | タイマー精度はミリ秒単位、min-heapで管理されO(log n) | E-04, E-15 | ○ |
| C-03 | uv_hrtime()はナノ秒精度のuint64_tを返却 | E-01, E-07 | ○ |
| C-04 | ファイルシステムポーリング間隔は最小1ms（0指定時に1に正規化） | E-09 | ○ |
| C-05 | スレッドプールデフォルト4、最大1024、UV_THREADPOOL_SIZEで設定 | E-03 | ○ |
| C-06 | スレッドスタックサイズ8MB | E-03 | ○ |
| C-07 | slow I/Oスレッド制限は(nthreads+1)/2 | E-03 | ○ |
| C-08 | UDPデータグラム最大サイズは64KB | E-06 | ○ |
| C-09 | recvmmsgサポート（UV_UDP_RECVMMSG） | E-01, E-05 | ○ |
| C-10 | IOV_MAXはアトミック変数でキャッシュ | E-07 | ○ |
| C-11 | SO_REUSEPORT対応（Linux 3.9+, FreeBSD 12.0+等） | E-01, E-07, E-08 | ○ |
| C-12 | TCP_NODELAY対応 | E-08 | ○ |
| C-13 | 全ソケットで非ブロッキングI/Oを強制 | E-07 | ○ |
| C-14 | ループ時刻はloop->timeフィールドでキャッシュ | E-05, E-07 | ○ |
| C-15 | イベントループポーリングタイムアウトは動的計算 | E-07 | ○ |
| C-16 | TCP KeepAliveはidle/interval/countを設定可能 | E-01, E-08 | ○ |
| C-17 | テストタイムアウト倍率はUV_TEST_TIMEOUT_MULTIPLIER環境変数 | E-11 | ○ |
| C-18 | Tier 1プラットフォーム：Linux>=3.10, macOS>=11, Windows>=10 | E-12 | ○ |
| C-19 | io_uringサポート（uv__iou構造体） | E-06 | ○ |
| C-20 | fork()後の再初期化（uv_loop_fork、pthread_atfork） | E-03, E-01 | ○ |
| C-21 | EMFILE対策の予備FD（loop->emfile_fd） | E-14 | ○ |
| C-22 | uv_cancel()でFS/GETADDRINFO/GETNAMEINFO/RANDOM/WORKをキャンセル可能 | E-03 | ○ |
| C-23 | 全システムコールでEINTR自動リトライ | E-07, E-08 | ○ |
| C-24 | ECONNREFUSED遅延通知（Solaris/OpenBSD対応） | E-08 | ○ |
| C-25 | ペンディングコールバック最大8回/ループ | E-07 | ○ |
| C-26 | 全ソケット・ファイルでCLOEXEC設定 | E-07 | ○ |
| C-27 | uv_disable_stdio_inheritance()で最初の16個以降のFDにCLOEXEC設定 | E-07 | ○ |
| C-28 | uv_random()はプラットフォーム最適な暗号学的乱数APIを選択 | E-10 | ○ |
| C-29 | 乱数生成の多段フォールバック | E-10 | ○ |
| C-30 | SO_NOSIGPIPEをmacOS/BSD系で設定 | E-07 | ○ |
| C-31 | 全API関数で入力バリデーション実施 | E-05, E-07, E-08 | ○ |
| C-32 | uv_replace_allocator()でカスタムアロケータ対応 | E-05 | ○ |
| C-33 | セキュリティ脆弱性はGitHub Private Vulnerability Reportingで受付 | E-13 | ○ |
| C-34 | SemVer準拠、v1.x系はABI安定 | E-02, E-11 | ○ |
| C-35 | ハンドル型・リクエスト型のマクロベース拡張パターン | E-01, E-06 | ○ |
| C-36 | プラットフォーム固有フィールドのPRIVATEマクロパターン | E-01 | ○ |
| C-37 | void* dataフィールドによるユーザーデータ領域 | E-01 | ○ |
| C-38 | uv_metrics_t構造体によるイベントループメトリクス | E-01, E-05, E-06 | ○ |
| C-39 | uv_metrics_idle_time()によるアイドル時間計測 | E-05 | ○ |
| C-40 | uv_getrusage()によるリソース使用量取得 | E-07 | ○ |
| C-41 | uv_available_parallelism()のcgroup制約対応 | E-07 | ○ |
| C-42 | uv_thread_setname()でスレッドプールワーカーは"libuv-worker"と命名 | E-03 | ○ |
| C-43 | イベントループ1イテレーションの応答時間がマイクロ秒～ミリ秒オーダー | **根拠なし** | △ |
| C-44 | io_uring SQPOLLモードの詳細動作 | **根拠不足** | △ |
| C-45 | ThreadSanitizer/Valgrindとの網羅的互換性 | **根拠不足** | △ |

## 4) 不足情報（Unknown / Missing）
- C-43: イベントループの応答時間はベンチマーク結果に依存するが、ソースコード上に明示的な性能目標値は定義されていない。実装構造（epoll/kqueueの使用、非ブロッキングI/O）から推測した値である
  - 候補：test/benchmark-list.h のベンチマーク結果 / libuv公式ドキュメントの性能測定データ / 実測ベンチマーク
- C-44: `uv__iou`構造体とUV_LOOP_USE_IO_URING_SQPOLLオプションは確認済みだが、io_uringの有効化条件、カーネルバージョン要件、フォールバック動作の詳細はLinux固有ソース（`src/unix/linux.c`）の追加解析が必要
  - 候補：src/unix/linux.c / io_uringのカーネル要件ドキュメント
- C-45: `__SANITIZE_THREAD__`マクロによるTSAN対応分岐、`tsansupp.txt`サプレッションファイルの存在は確認したが、Valgrindとの互換性の網羅的な検証は未実施
  - 候補：tsansupp.txt / Valgrind実行結果 / CI設定ファイル

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク - 性能要件のスレッドプールサイズ、タイマー精度等はソースコードで明確に確認可能
- 0: 低リスク - セキュリティ要件のCLOEXEC、乱数生成、入力バリデーション等はソースコードで明確に確認可能
- 1: 中リスク - 可用性要件のEMFILE対策やEINTRリトライは実装確認済みだが、全てのシステムコールをカバーしているかの網羅性は要確認
- 1: 中リスク - io_uringサポートの詳細仕様はLinux固有ソースの追加解析が必要
- 0: 低リスク - 拡張性要件のSemVer、マクロベースのハンドル拡張パターン等はソースコードとREADMEで明確に確認可能

## 6) レビュアーチェックリスト（最小）
- [ ] C-43: イベントループの応答時間の主張が妥当かベンチマーク結果と照合する
- [ ] C-44: `src/unix/linux.c`を確認し、io_uringの有効化条件と動作詳細を検証する
- [ ] C-45: `tsansupp.txt`とCI設定を確認し、サニタイザー互換性の主張を検証する
- [ ] 可用性要件のEINTRリトライについて、全てのシステムコールが網羅されているか確認する
- [ ] スレッドプール関連のパラメータ（スタックサイズ、slow I/O閾値等）が運用環境に適切か評価する
- [ ] TCP KeepAliveのSolaris固有制約（最小10秒）が記載通りか`src/unix/tcp.c`で確認する
