---
generated_at: 2026-02-22 12:00:00
metrics:
  claims_total: 35
  claims_with_evidence: 33
  claims_without_evidence: 2
confidence_derived: 0.94
---

# 根拠レポート：データベース設計書

## 本レポートについて

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

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

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

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

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

---

## 1) サマリー（まず見るところ）
- 総合信頼度（derived）：**0.94**
  - 根拠あり：33 / 35、根拠なし：2
- 優先レビュー（高）
  1. **iv_tbl構造体の内部構造**：iv_tblの定義がinternalヘッダ内にあり、公開ヘッダからは構造が不透明
  2. **hash_entry/hash_tableの内部構造**：RHashが参照するhash_entryとhash_tableの定義が非公開

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

- E-01: `include/mruby.h` -- mrb_state, mrb_callinfo, mrb_context, mrb_method_t, mrb_cache_entry の定義
- E-02: `include/mruby/gc.h` -- mrb_gc 構造体の定義
- E-03: `include/mruby/value.h` -- mrb_vtype 列挙体、mrb_value型の定義
- E-04: `include/mruby/object.h` -- MRB_OBJECT_HEADER マクロ、RBasic, RObject, RFiber の定義
- E-05: `include/mruby/class.h` -- RClass, mrb_mt_tbl, mrb_mt_entry の定義
- E-06: `include/mruby/string.h` -- RString, RStringEmbed の定義
- E-07: `include/mruby/array.h` -- RArray, mrb_shared_array の定義
- E-08: `include/mruby/hash.h` -- RHash の定義
- E-09: `include/mruby/proc.h` -- RProc, REnv の定義
- E-10: `include/mruby/range.h` -- RRange の定義
- E-11: `include/mruby/data.h` -- RData, mrb_data_type の定義
- E-12: `include/mruby/irep.h` -- mrb_irep, mrb_irep_pool, mrb_irep_catch_handler の定義
- E-13: `include/mruby/debug.h` -- mrb_irep_debug_info, mrb_irep_debug_info_file の定義
- E-14: `README.md` -- プロジェクト概要（mrubyはRubyの軽量実装）

## 3) Claims と根拠の対応（レビューの主戦場）
| Claim ID | 主張 | Evidence | 状態 |
|---|---|---|---|
| C-01 | mrubyはリレーショナルデータベースを使用しないC言語実装のランタイムである | E-14 | ○ |
| C-02 | mrb_stateがVM全体の状態を管理する中核構造体である | E-01 | ○ |
| C-03 | mrb_stateのフィールド定義（c, root_c, globals, exc, クラス参照群, gc, シンボルテーブル等） | E-01 | ○ |
| C-04 | mrb_contextがFiber/タスクごとの実行コンテキストである | E-01 | ○ |
| C-05 | mrb_contextのフィールド定義（prev, stbase, stend, ci, cibase, ciend, status, vmexec, fib） | E-01 | ○ |
| C-06 | mrb_callinfoがメソッド呼び出し時のフレーム情報である | E-01 | ○ |
| C-07 | mrb_callinfoのフィールド定義（n, nk, cci, vis, mid, proc, blk, stack, pc, u共用体） | E-01 | ○ |
| C-08 | mrb_gcが三色マーキング方式の世代別GCを管理する | E-02 | ○ |
| C-09 | mrb_gcのフィールド定義（heaps, free_heaps, sweeps, gray_stack, live, threshold等） | E-02 | ○ |
| C-10 | MRB_OBJECT_HEADERマクロにより全オブジェクトに共通ヘッダが定義される | E-04 | ○ |
| C-11 | RBasicのフィールド定義（c, tt, gc_color, frozen, flags） | E-04 | ○ |
| C-12 | RObjectがiv_tblを持つ一般オブジェクトである | E-04 | ○ |
| C-13 | RClassのフィールド定義（iv, mt, super）とフラグの用途 | E-05 | ○ |
| C-14 | RStringが埋め込み最適化を持つ文字列構造体である | E-06 | ○ |
| C-15 | RStringのフィールド定義とフラグの用途（NORMAL/SHARED/FSHARED/NOFREE/EMBED） | E-06 | ○ |
| C-16 | RArrayが埋め込み最適化を持つ配列構造体である | E-07 | ○ |
| C-17 | RArrayのフィールド定義とフラグの用途 | E-07 | ○ |
| C-18 | RHashが小規模時はリニアサーチ配列、大規模時はハッシュテーブルを使用する | E-08 | ○ |
| C-19 | RHashのフィールド定義（iv, size, ea/ht共用体）とフラグ | E-08 | ○ |
| C-20 | RProcがC関数またはirepのいずれかを保持する | E-09 | ○ |
| C-21 | RProcのフィールド定義（body共用体, upper, e共用体）とフラグ | E-09 | ○ |
| C-22 | REnvがクロージャの環境オブジェクトである | E-09 | ○ |
| C-23 | RRangeのフィールド定義（beg, end, excl）とembed/非embed切り替え | E-10 | ○ |
| C-24 | RDataがネイティブCデータのRubyラッパーである | E-11 | ○ |
| C-25 | RDataのフィールド定義（iv, type, data） | E-11 | ○ |
| C-26 | RFiberがmrb_contextを保持する | E-04 | ○ |
| C-27 | mrb_irepのフィールド定義（nlocals, nregs, clen, iseq, pool, syms, reps等） | E-12 | ○ |
| C-28 | mrb_irep_poolのフィールド定義（tt, u共用体） | E-12 | ○ |
| C-29 | mrb_irep_debug_infoとmrb_irep_debug_info_fileのフィールド定義 | E-13 | ○ |
| C-30 | mrb_method_tのフィールド定義（flags, as共用体） | E-01 | ○ |
| C-31 | mrb_mt_tblとmrb_mt_entryのフィールド定義 | E-05 | ○ |
| C-32 | mrb_cache_entryのフィールド定義 | E-01 | ○ |
| C-33 | mrb_irep_catch_handlerのフィールド定義 | E-12 | ○ |
| C-34 | iv_tblの内部構造の詳細 | **根拠なし** | △ |
| C-35 | hash_entry/hash_tableの内部構造の詳細 | **根拠なし** | △ |

## 4) 不足情報（Unknown / Missing）
- iv_tbl（インスタンス変数テーブル）の内部構造は `include/mruby/internal.h` 等の非公開ヘッダに定義されている可能性が高いが、公開ヘッダからはstruct宣言のみで定義が確認できない
  - 候補：`include/mruby/internal.h` / `src/variable.c` / `src/class.c`
- hash_entry / hash_table 構造体の内部定義はhash.hでは前方宣言のみで、実装ファイル内に定義されている
  - 候補：`src/hash.c`

## 5) リスクフラグ（レビュー観点）
- 0: 低リスク -- 大部分の構造体定義は公開ヘッダファイルから直接抽出しており、根拠が明確
- 1: 中リスク -- iv_tblおよびhash_entry/hash_tableの内部構造が非公開であるため、これらに依存する記述（RObject, RClass, RHash, RData等のiv/hshフィールドの詳細）は追加調査が推奨される
- 0: 低リスク -- 条件付きコンパイルによる構造の変化についてはコード内のプリプロセッサディレクティブを正確に反映している
- 0: 低リスク -- ER図の関連線はヘッダファイル内のポインタ型フィールドに基づいて作成しており正確

## 6) レビュアーチェックリスト（最小）
- [ ] mrb_stateの全フィールドが最新のソースコードと一致しているか確認（条件付きコンパイル分岐を含む）
- [ ] iv_tblの内部構造について `src/variable.c` 等の実装ファイルを確認し、必要に応じて設計書に追記
- [ ] hash_entry / hash_table の内部構造について `src/hash.c` を確認し、必要に応じてRHashの定義を補完
- [ ] MRB_64BIT と 32bit 環境でのRHash構造体のレイアウト差異が正確に記述されているか確認
- [ ] MRB_USE_TASK_SCHEDULER 有効時のmrb_task_stateフィールドの記述が十分か確認
- [ ] ER図のmermaid記法が正しく描画されるか、レンダリングツールで確認
